
새 서버에서 공개 키 인증을 사용하려고 했는데 이 문제가 발생했습니다.
$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
그런 다음 로그인하려면 비밀번호를 입력해야 합니다.
그러나 해당 서버에 이미 하나의 세션이 연결되어 있으면(비밀번호로 연결됨) 다음 연결에서는 비밀번호 입력을 피하기 위해 키 인증을 사용합니다.
이미 설정된 SSH 연결이 없으면 비밀번호를 입력하지 않으면 연결할 수 없습니다.
정말 이상하네요. /usr/sbin/sshd
새 서버와 다른 일반 서버 사이의 MD5를 확인해 보니 똑같습니다. 그런 다음 /etc/ssh/sshd_config
다른 일반 서버에서 새 서버로 복사하고 service ssh restart
. 문제는 여전히 존재합니다.
이 문제를 어떻게 해결해야 하나요?
답변1
.ssh
클라이언트 컴퓨터의 폴더와 그 안에 있는 파일을 소유자( chmod -R 600 .ssh
)만 읽을 수 있는지, 폴더와 파일의 소유자가 올바른지 확인하세요 ( chown
필요한 경우 명령 사용).
또한 authorized_keys
서버(아마도 /root/.ssh
로그인을 시도하는 사용자의 홈 폴더 또는 홈 폴더)에 있는 폴더와 파일을 확인하여 권한과 소유자가 동일한 방식으로 설정되어 있는지 확인하세요.
편집: 더 많은 피드백(그리고 약간의 추측)을 바탕으로 - /etc/ssh/sshd_config
다음 매개변수가 아래와 같이 설정되어 있는지 확인할 수 있습니까? 그렇지 않은 경우 편집해 보세요.
AuthorizedKeysFile /home/%u/.ssh/authorized_keys
참고로 이는 루트로 원격으로 로그인하지 않는다고 가정합니다.
답변2
제 경우에는 홈 디렉토리에 대한 권한이 775
그보다 낮 0755
거나 낮았습니다.
Authorized_keys 파일의 전체 경로입니다. 즉, 이보다 낮아야 /home/user/.ssh/
합니다 0755
.
답변3
나는 .ssh에서 제거하여 이 오류를 해결했습니다 id_rsa.pub
.
나는 id_rsa
다른 컴퓨터에서 복사하여 여러 더미 클라이언트에 배포했습니다. 따라서 id_rsa
와 id_rsa.pub
실제로는 전혀 사용을 방해하는 다른 키였습니다 id_rsa
.
하지만 이를 명확하게 나타내는 오류 메시지는 없습니다. 나는 다른 기계들을 동일한 상태로 만들려고 노력하면서 본질적으로 우연히 그것을 알아냈습니다.
답변4
많은 고민 끝에 문제의 해결책을 얻었습니다.
사용자의 홈 디렉토리에는 권한이 있거나 777
쓰기 권한이 없어야 합니다. 이 경우 SSH 키 인증이 실패하며 로그인 시 비밀번호를 입력해야 합니다.