虽然我将公钥放在远程计算机上,但仍然收到 ssh 密码提示,这是我的ssh -vv
输出(仅最后几行)可能会有所帮助:
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/lior/.ssh/id_rsa <-- THAT's MY PRIVATE KEY!
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /Users/lior/.ssh/id_dsa
debug1: Trying private key: /Users/lior/.ssh/id_ecdsa
debug1: Trying private key: /Users/lior/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
重要提示:在执行相同的过程后,我能够在没有密码的情况下 ssh 到其他计算机,因此我假设问题出在特定的远程计算机(在 CentOS 6 上运行)上。
有任何想法吗?
答案1
在远程用户的主目录中:
- homedir 的所有者是谁?
- 谁是 homedir/.ssh 的所有者?
- 谁是 homedir/.ssh/authorized_keys 的所有者
~、~/.ssh 和 ~/.ssh/authorized_keys 的访问权限是什么
对 ~/.ssh/authorized_keys 授予宽松的读取和/或写入权限将使 sshd 不信任该文件!
答案2
不确定这是否能 100% 解决这个问题,但尝试一下。在目录中创建一个文件~/.ssh/config
。当您 vim 进入配置文件时,您可以尝试以下操作:
Host <host_name_of_server>
HostName <ip_address_of_server>
User <user_created_for_server>
Port 22
PasswordAuthentication No
IdentityFile <path_to_key>
因此,一旦添加了此内容,您现在可以执行以下操作:
ssh <host_name_of_server>
当您通过 SSH 连接到分配给服务器的主机时,这将强制它不提示输入密码。让我知道结果如何。