공개 키 인증을 사용할 때 SSH 비밀번호 프롬프트가 계속 표시되는 이유는 무엇입니까?

공개 키 인증을 사용할 때 SSH 비밀번호 프롬프트가 계속 표시되는 이유는 무엇입니까?

저는 여기에서 찾은 URL에서 작업하고 있습니다.

http://web.archive.org/web/20160404025901/http://jaybyjayfresh.com/2009/02/04/logging-in-without-a-password-certificates-ssh/

내 SSH 클라이언트는 Ubuntu 64비트 11.10 데스크톱이고 내 서버는 Centos 6.2 64비트입니다. 나는 지시를 따랐다. 여전히 SSH에서 비밀번호 프롬프트가 표시됩니다.

다음에 무엇을 해야할지 모르겠습니다.

답변1

디렉터리와 해당 콘텐츠에 대한 권한이 ~/.ssh올바른지 확인하세요. SSH 키 인증을 처음 설정할 때 ~/.ssh폴더를 올바르게 설정하지 않아서 나에게 소리를 지르고 있었습니다.

  • 홈 디렉터리 ~, ~/.ssh디렉터리 및 ~/.ssh/authorized_keys원격 컴퓨터의 파일은 본인만 쓸 수 있어야 합니다. 괜찮지만 rwx------그룹 의 유일한 사용자인 경우에도 좋지 않습니다(숫자 모드를 선호하는 경우: 또는 , 아님 ). 또는 기호 링크인 경우rwxr-xr-xrwxrwx---700755775
    ~/.sshauthorized_keys표준 경로 확인(확장 심볼릭 링크).
  • 파일 ~/.ssh/authorized_keys은 원격 컴퓨터에서 읽을 수 있어야 하며(최소 400개), 더 많은 키를 추가하려면 쓰기 가능해야 합니다(600개).
  • 귀하의 개인 키 파일(로컬 컴퓨터에 있음)은 귀하만 읽고 쓸 수 있어야 합니다. rw-------즉, 600.
  • 또한 SELinux가 시행되도록 설정된 경우 실행해야 할 수도 있습니다 restorecon -R -v ~/.ssh(예:우분투 오류 965663그리고데비안 버그 보고서 #658675;이것은CentOS 6에서 패치됨).

¹그룹 쓰기를 허용하도록 코드가 패치된 특정 배포판(Debian 및 그 파생 배포판)은 제외됩니다 (그룹의 유일한 사용자인 경우).

답변2

서버에 대한 루트 액세스 권한이 있는 경우 이러한 종류의 문제를 해결하는 쉬운 방법은 /usr/sbin/sshd -d -p 2222서버에서 유사한 명령을 실행하여 디버그 모드에서 sshd를 실행하는 것입니다( which sshd도움이 될 수 있는 sshd 실행 파일에 대한 전체 경로가 필요함). 이는 클라이언트 사용에서 ssh -p 2222 user@hostSSH 데몬을 강제로 포그라운드에 유지하고 각 연결에 대한 디버깅 정보를 표시합니다. 비슷한 것을 찾고 있습니다.

debug1: trying public key file /path/to/home/.ssh/authorized_keys
...
Authentication refused: bad ownership or modes for directory /path/to/home/

대체 포트를 사용할 수 없는 경우 SSH 데몬을 일시적으로 중지하고 디버그 모드의 포트로 교체할 수 있습니다. SSH 데몬을 중지해도 기존 연결이 종료되지 않으므로 원격 터미널을 통해 수행할 수 있지만 약간의 위험이 있습니다. 디버그 교체가 실행되지 않는 동안 연결이 끊어지면 가능할 때까지 머신에서 잠길 수 있습니다. 다시 시작하세요. 필수 명령:

service ssh stop
/usr/sbin/sshd -d
#...debug output...
service ssh start

(Linux 배포판에 따라 첫 번째/마지막 줄은 systemctl stop sshd.service/ 일 수 있습니다 systemctl start sshd.service.)

답변3

귀하의 홈 디렉토리는 암호화되어 있습니까? 그렇다면 첫 번째 SSH 세션에서 비밀번호를 제공해야 합니다. 동일한 서버의 두 번째 SSH 세션이 인증 키를 사용하고 있습니다. 이 경우 파일을 authorized_keys암호화되지 않은 디렉터리로 이동하고 ~/.ssh/config.

결국 내가 한 일은 /etc/ssh/username올바른 권한을 가진 사용자 이름이 소유한 폴더를 만들고 authorized_keys그 안에 파일을 배치하는 것이었습니다. 그런 다음 AuthorizedKeysFile 지시어를 다음과 같이 변경합니다 /etc/ssh/config.

AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

이를 통해 여러 사용자가 권한에 영향을 주지 않고 이 SSH 액세스를 가질 수 있습니다.

답변4

키를 원격 시스템에 복사하고 배치한 후 authorized_keys다음을 수행해야 합니다.

ssh-agent bash
ssh-add ~/.ssh/id_dsa or id_rsa

관련 정보