SSH 키를 통해 내 서버에 로그인할 수 없습니다.
ssh-copy-id를 사용하여 공개 키 name.pub를 내 서버에 복사합니다. 그런 다음 를 실행하면 ssh -i name.key root@server
키를 통해 인증하는 대신 서버의 비밀번호를 입력해야 합니다.
사용자 정의 포트에서 디버그 모드 sshd를 실행하면 출력은 다음과 같습니다.여기.
몇 가지 질문(스팸으로 표시되어 삭제됨)을 확인했는데 자격 문제에 대한 답변이 허용되었지만 그런 문제는 없는 것 같습니다. 내 데스크탑은 키가 너무 열려 있다고 불평하지 않으며 서버의 .ssh 폴더와 Authorized_keys에는 각각 700과 600 권한이 있습니다.
마지막 요점은 키가 다음을 사용하여 생성되었고 ssh-keygen -m pem
공개 키가 다음을 사용하여 PEM 형식으로 변경되었다는 것입니다.ssh-keygen -f name.key -e -m pem > name.pub
SSH가 내 SSH 키로 나를 인증할 수 없는 이유는 무엇이며 이 문제를 해결하려면 어떻게 해야 합니까?
답변1
공개 키를 PEM 형식으로 변환하는 데 사용한 방법이 ssh-keygen -f name.key -e -m pem > name.pub
문제를 일으킨 것 같습니다. 공개 키를 기본 형식으로 두면 ssh-keygen
해당 키로 성공적으로 인증할 수 있습니다.
답변2
그런 다음 을 실행하면
ssh -i name.key root@server
서버의 비밀번호를 입력해야 합니다.
여기서 무슨 일이 일어나고 있는지에 대한 내 추측은 어떤 이유로 키 인증이 작동하지 않고 표시되는 비밀번호 프롬프트가 대체일 뿐이라는 것입니다.
ssh
다음 명령을 실행하여 키를 강제로 사용할 수 있습니다 .
ssh -vv -o "IdentitiesOnly=yes" -i <private key filename> <hostname>
이 경우 -vv
키 인증이 실패한 이유를 알려주는 디버그 출력도 제공됩니다.
PasswordAuthentication=no
위 속성 대신 IdentitiesOnly
클라이언트 옵션으로 비밀번호 인증을 비활성화해 볼 수도 있습니다 .
키 인증이 작동하는지 확인한 후에는 인증에 비밀번호를 사용할 가능성을 완전히 비활성화할 수 있습니다. 이는 PasswordAuthentication no
설정을 통해 전역적으로 수행 할 수 있습니다 /etc/ssh/sshd_config
. 키 기반 인증이 작동하는지 확인하기 전에 이 작업을 수행해서는 안 됩니다. 서버에 액세스할 수 있는 다른 방법(예: 가상 콘솔)이 없는 경우 서버가 잠길 수 있기 때문입니다.
발생하는 문제의 일반적인 원인은 잘못된 사용자를 인증하려고 한다는 것입니다. 예를 들어 Ubuntu 시스템은 일반적으로 클라우드 구성의 일부로 추가된 SSH 키를 사용자에게 추가 하지만 루트에는 추가하지 않으므로 파일에 공개 키가 있는 ubuntu
것이 실제로 루트인지 확인하세요 .authorized_keys