이번에 개인프로젝트로 대규모 홈페이지를 시작하였다.
프로젝트를 시작하기 전에 개인 우분투서버의 패스워드 인증을 막고 개인키 인증만 허용하게 구상을 했지만
이유를 알수없는 로그인 오류로 서버로부터 거부를 당해왔다.
그렇기에 이번에는 우분투 서버에서 개인키 인증을 어떻게 하는지에 대해서 적어보려고 한다.
과정은 간단하지만 파일권한이 하나라도 맞지 않다면 거부가 뜨기에 잘 확인해야 한다.
우선
mkdir -m 700 ~/.ssh
으로 폴더에 700 권한을 주고 생성한다.
그다음 공개키, 개인키를 생성해야 하는데
ssh-keygen -t rsa
이렇게 입력을 하고 엔터를 계속 누르면 ~/. ssh 폴더에
id_rsa, id_rsa.pub 파일이 생겨있을 것이다.
생성이 되었다면 ~/. ssh 폴더에 authorized_keys 파일을 생성해줘야 하는데 귀찮으니 이 명령어로 바로
넣어준다. 이렇게 하면 파일생성과 값을 같이 넣어준다.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
생성된 authorized_keys는 무조건
chmod 600 ~/.ssh/authorized_keys
로 600 권한을 줘야 한다.
이제 sshd의 설정을 해줘야 하는데
vim /etc/ssh/sshd_config
여기서 AuthorizedKeysFile, PubkeyAuthentication 이 두 개가 주석처리 되어있을 것이다.
이 두 개의 주석을 풀어준 다음 사진과 같이 yes를 넣어서 공개키 인증을 허용한다.
이렇게 수정을 하고 Esc > Shift + ; 을 눌러서 wq로 저장 후 vim에디터를 종료한다.
콘솔로 나왔다면
systemctl restart sshd
로 sshd를 재시작시켜준다.
이제 키를 puttygen으로 ppk타입으로 변환을 시켜줘야 한다.
보통 우분투기준으로는 FTP로 전송하겠지만 이번 경우에는 sftp로 전송하는 걸로 하겠다.
필자의 경우 FileZila에 들어가
호스트 : sftp://도메인
사용자명 : root
비밀번호 : xxxx
포트 : ssh 포트
이렇게 입력을 하여 접속한다.
우측의 폴더를 보면. ssh라는 폴더가 있을 건데 그 안을 보면 id_rsa, id_rsa.pub 가 있는데 id_rsa만 윈도로 옮긴다.
이렇게 옮긴 개인키파일을 puttygen으로 불러온다.
https://www.puttygen.com/download-putty (puttygen) 다운
이렇게 불러왔다면 Sava private Key를 눌러 ppk형식으로 저장한다.
이렇게 일련의 모든 과정을 다 했지만 오류가 생기는 경우가 있을 수도 있다.
이번에 가장 많이 나왔던 오류가 개인키의 포맷을 지원하지 않는 문제와 폴더 권한의 문제였다.
(만약 이 로그를 확인하고 싶다면)
cat /var/log/auth.log // 전체 로그확인
tail -f /var/log/auth.log // 실시간 로그확인
포맷의 문제는 보통
vim /etc/ssh/sshd_config
여기로 들어갔을 때
pubkeyacceptedkeytypes에서
그렇기에
pubkeyacceptedkeytypes : +ssh-rsa
이렇게 자신이 사용 중인 암호화 포맷을 넣어주면 오류는 사라질 것이다.
RSAAuthentication yes
(이 설정이 RSA인증에 영향이 있는지는 잘 모르겠다)
폴더권한을 다시 정리하자면
chmod 700 ~/.ssh // 700권한
chmod 600 ~/.ssh/authorized_keys // 600권한
이렇게 되며 보통은 이 설정만으로도 오류는 생기지 않을 것이다.
디렉터리 폴더의 권한이 부족한 경우는 정보가 그리 많지않았다.
찾아보니 보통 root폴더에는 go-w 권한을 줘라는 얘기가 많았지만 이렇게는 권한이 부족하다고 한다.
Additionally, according to unix.stackexchange.com/a/36687/117549, your home directory (/root here) must only be readable to you, so go-w may not be enough. –
Jeff Schaller
♦
Oct 23, 2019 at 12:57
그렇기에 디렉토리 폴더의 권한은
chown root /root
chown root /root/.ssh
chown으로 root폴더의 소유권자를 재정의 시켜준다.
이렇게 하면 권한문제는 해결될 것이다.
이번에는 우분투 개인키 인증에 대해서 알아보았다.
이것 이외에도 오류가 상당히 많았지만 로그를 보면서 분석해 보고 정말 해결불가능한 오류는 그냥 ~/. ssh 폴더를
삭제하고 다시 생성한 다음 다시 인증키를 만드니 해결되었다.
이제 프로젝트를 할 때 조금은 ssh접근에 대해서는 안전하고 편하게 사용할 수 있을 것 같다.
다음글은 시간이 나는 대로 프로젝트 진행상황이나 새롭게 알게 된 내용에 대해서 올려보겠다.
'개인 서버(도커등)' 카테고리의 다른 글
우분투 전체용량, 잔여용량, 사용가능용량 출력 (0) | 2023.10.24 |
---|---|
국비교육생 추천!! 스프링 프레임워크 + 깃허브액션 CI/CD 파이프라인 배포 (2) (깃허브 액션 구성) (0) | 2023.10.03 |
국비교육생 추천!! 스프링 프레임워크 + 깃허브액션 CI/CD 파이프라인 배포 (1) (공부일지, gradle빌드) (2) | 2023.10.03 |
톰캣서버 오라클db jdbc로 연동 (JSP) (0) | 2023.05.23 |
시놀로지 도커 Tomcat8.5 서버구축 (0) | 2023.05.07 |