ssh 접속 시 Permission denied (publickey). 라는 오류가 계속 노출될 경우 해결방안입니다.
해당 방법은 키 파일의 퍼미션 또한 정상이고 문제가 없는데 접속오류가 날 경우 참고하면 좋은 방법입니다.
일단, aws 라이트세일이나 aws EC2 등의 자체 브라우저 SSH 클라이언트로 ssh 접속이 가능한 상태여야 합니다. ssh 접속이 전혀 불가한 상태라면 오류 해결이 불가능합니다.
따라서 서버에 변경사항이나, 추가된 사항이 있을 때는 스냅샷을 찍어두어 복원 시점을 정확히 생성하여야 합니다.
Contents
ssh 접속 시 Permission denied (publickey) 해결
브라우저 SSH 클라이언트로 ssh 접속 뒤 아래 코드를 입력합니다.
#nano 편집기로 sshd_config 파일을 열어줍니다.
sudo nano /etc/ssh/sshd_config
참고로 nano 대신 vim 등 원하는 편집기로 대체해도 이상이 없습니다.
일단 파일에 접근하여 아래로 스크롤하다 보면 PasswordAuthentication 이라는 항목이 있는데, no로 기재되어 있습니다. 지우고 yes로 수정해줍니다.
ctrl + x, enter를 차례대로 입력하여 빠져나옵니다.
그래도 오류가 해결이 되지 않을 경우
#터미널에서 로컬에 저장된 ssh 키와 관련 파일 퍼미션이 옳게 설정되었는지 확인합니다.
sudo chmod 600 ~/.ssh/id_rsa
Code language: JavaScript (javascript)
sudo chmod 644 ~/.ssh/id_rsa.pub
Code language: JavaScript (javascript)
sudo chmod 644 ~/.ssh/known_hosts
Code language: JavaScript (javascript)
#ssh 클라이언트를 통해 서버의 authorized_keys 파일에 접근하여 pub키 값이 정확한지 확인합니다.
sudo nano ~/.ssh/authorized_keys
Code language: JavaScript (javascript)
관리하는 키가 하나인데 중복 등록되어있을 경우 ctrl+k로 한 줄씩 삭제해 안의 내용을 모두 삭제하고 pub키를 메모장 등으로 열어 공개키 값을 다시 붙여줍니다.
#ssh 클라이언트 내 authorized_keys 파일의 권한도 알맞게 조정합니다.
sudo chmod 644 ~/.ssh/authorized_keys
Code language: JavaScript (javascript)
#ssh 접속을 재시도합니다.
~ $ssh ***@***
Enter passphrase for key '/Users/.ssh/id_rsa':
Code language: PHP (php)
드디어 비밀번호를 물어보는 창이 나타납니다. 비밀번호를 입력해주면 정상적으로 로컬에서도 ssh 접속이 가능해집니다. putty로 접속하는 경우에도 ssh 클라이언트를 통해 위와 같이 세팅해준 뒤 로그인하면 정상적으로 해결됩니다.
캬 감사합니다