SSH 키(Secure Shell Key)는 SSH 프로토콜 내에서 세션을 인증하고 로컬 머신과 SSH 서버 간의 연결을 설정하는 데 사용됩니다. 일반적으로 공개 키(Public Key)를 사용하는 것이 서버 연결을 설정하는 가장 좋은 방법이며, 서버 연결이 한 번 구축되면 SSH는 매번 로그인할 때마다 비밀번호를 입력할 필요가 없어지고 해당 서버와 자동으로 연결됩니다.
SSH 권한 거부(Permission Denied) 오류란?
하지만 공개 키를 사용하는 과정에서 때때로 SSH 클라이언트의 연결 요청이 서버 측에서 거부되면서 'SSH Permission Denied(권한 거부)' 오류가 발생할 수 있습니다.
이 글에서는 'SSH 권한 거부' 오류를 해결하는 다양한 방법을 소개합니다. 그에 앞서 이 오류가 발생하는 주요 원인부터 살펴보겠습니다.
이 오류를 유발하는 원인은 여러 가지가 있으며, 가장 흔한 원인 중 하나는 SSH 서버에서 비밀번호 인증이 비활성화되어 있는 경우입니다.
또 다른 일반적인 원인은 'ssh' 폴더에 대한 접근 권한이 없는 경우입니다. 이는 본질적으로 authorized_keys 파일에 대한 접근이 차단되었다는 의미입니다.
해결 방법 1: SSH 서버에서 비밀번호 인증 허용하기
앞서 언급했듯이, 서버에서 비밀번호 기반의 SSH 연결이 활성화되어 있지 않으면 연결 시도는 대부분 실패로 끝납니다.
- 이 문제를 해결하려면 SSH 서버로 이동한 뒤, 해당 PC 또는 서버에서 아래 명령어를 사용해 설정 파일을 엽니다.
sudo nano /etc/ssh/sshd_config
이 명령어를 실행하면 터미널에서 SSH 설정 파일이 열립니다.
- 설정 파일 안에서 'PasswordAuthentication' 항목을 찾아 줄 맨 앞의 '#' 기호를 제거하여 주석 처리를 해제(uncomment)합니다.
- 수정이 완료되면 'CTRL + O'를 눌러 저장한 후 'CTRL + X'를 눌러 편집기를 종료합니다. 그다음에는 아래 명령어로 SSH 서비스를 재시작해야 합니다.
sudo systemctl restart sshd
- 모든 과정이 끝나면 클라이언트에서 SSH 서버에 다시 접속하여 정상적으로 연결되는지 확인합니다.
이제 오류가 성공적으로 해결되고 SSH 서버에 정상적으로 연결된 것을 확인할 수 있습니다.
해결 방법 2: 공개 키 인증 활성화하기
경우에 따라 'SSH Permission Denied (public key)'라는 변형된 형태의 오류 메시지가 나타날 수 있습니다. 이 오류는 SSH 서버에서 공개 키 인증이 활성화되어 있지 않을 때 발생합니다.
- 이 경우 SSH 서버 PC로 이동한 후, 아래 명령어를 사용해 설정 파일을 엽니다.
sudo nano /etc/ssh/sshd_config
설정 파일에서 root 로그인을 비활성화하고 'PubkeyAuthentication' 항목을 활성화(yes)로 설정합니다.
- 그다음 설정 파일에서 'UsePAM' 옵션도 활성화되어 있는지 확인합니다.
- 다시 'CTRL + O'로 저장하고 'CTRL + X'로 종료한 뒤, 아래 명령어로 SSH 서비스를 재시작합니다.
sudo systemctl restart sshd
- 완료되면 연결을 다시 시도하여 정상적으로 접속되는지 확인합니다.
이제 'SSH 권한 거부(공개 키)' 오류가 해결되었습니다.
해결 방법 3: SSH 디렉터리 권한 조정하기
공개 키는 대개 'ssh' 디렉터리 내부의 authorized_keys 하위 파일에 저장됩니다. 만약 이 파일이나 상위 디렉터리의 권한 설정이 올바르지 않으면 SSH 연결은 결국 오류를 반환하게 됩니다.
- 이 경우 아래 명령어를 사용해 authorized_keys 파일의 권한을 변경합니다.
sudo chmod 600 ~/.ssh/authorized_keys
이 명령어는 authorized_keys 파일에 읽기 및 쓰기 권한을 부여합니다.
- 그다음 아래 명령어로 상위 디렉터리에 실행 권한을 부여합니다.
sudo chmod 700 ~/.ssh
명령어 실행 후 SSH 서버에 다시 접속하여 정상 연결 여부를 확인합니다.
연결 결과를 통해 오류가 해결되었음을 확인할 수 있습니다.
추가 팁: 비밀번호 오류 확인하기
'Permission Denied' 오류는 SSH 서버의 비밀번호가 올바르지 않을 때도 발생할 수 있습니다. 주로 오타 때문에 생기지만, 서버 측에서 비밀번호를 변경했는데 클라이언트가 이를 모르는 경우에도 나타날 수 있습니다. 이런 경우 비밀번호를 입력하면 터미널에 다음과 같은 오류가 표시됩니다.
이럴 때는 SSH 서버 관리자에게 문의하여 비밀번호가 변경되었는지 확인하거나, 입력한 비밀번호에 오타가 없는지 다시 한번 점검하세요. 실수를 파악한 후에는 정상적으로 SSH 서버에 연결할 수 있습니다.
마무리
'SSH 권한 거부' 오류는 새로운 문제가 아니며, 주요 원인은 비밀번호 인증 미활성화, 공개 키 인증 미설정, 그리고 'ssh' 또는 'authorized_keys' 디렉터리의 잘못된 권한 설정입니다. 이 가이드에서 소개한 해결 방법들을 순서대로 적용하면 오류를 해결하고 정상적으로 연결을 진행할 수 있습니다. 또한 서버 측 비밀번호 변경이나 단순 오타도 원인이 될 수 있으므로, 이 경우에는 SSH 서버 지원팀에 문의하거나 비밀번호를 신중하게 다시 입력하는 것이 좋습니다.