我有一个名为 的密钥文件KEY
,其中有KEY
和KEY.pub
。我将 pub 上传到authorized_keys
,并使用 添加 private
ssh-add /home/user/.ssh/KEY
但是当我尝试连接时,它一直要求我输入密码。ssh [email protected]
如果我生成一个密钥ssh-keygen
并保留默认密钥名称,上传 pub 并加载 private,它才不是请求密码。
可能是什么问题?
答案1
您可以获得调试输出,它可能会告诉您无法使用(ssh 的默认密钥文件)进行身份验证。答案是告诉 ssh 使用哪个密钥:ssh -vvv [email protected]
~/.ssh/id_rsa
ssh -i /home/user/.ssh/KEY [email protected]
您还可以将每个主机的密钥文件添加到您的.ssh/config
,然后您只需输入ssh host.com
并自动选择用户/密钥。
.ssh/config 的示例条目(更多信息请参阅man ssh_config
):
Host mysshserver ssh.host.com
HostName ssh.host.com
User myusername
IdentityFile ~/.ssh/mykeyfile
来自的密钥文件的解释man ssh
:
-i identity_file
Selects a file from which the identity (private key) for RSA or
DSA authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro‐
tocol version 2. Identity files may also be specified on a per-
host basis in the configuration file. It is possible to have
multiple -i options (and multiple identities specified in config‐
uration files).
答案2
正确设置密钥文件(操作方法这里),请注意以下几点:
如果您的主机.ssh
目录和文件没有正确的权限并且/或者您的远程用户主目录没有正确的权限,那么尽管找到了密钥文件,ssh 仍将继续要求输入密码。
您可以使用以下方式查看您的密钥文件是否正在被提供ssh -vvv user@host
示例输出:
debug1: Offering DSA public key: /Users/<user>/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
检查远程用户主目录和远程.ssh
目录权限
例如,权限应该是:
$ls -ld .ssh
drwx------ 2 <owner> <group> 4096 2011-12-29 20:39 .ssh
$ls -ld ~/
drwxr-xr-x 28 <owner> <group> 4096 2011-12-29 20:15 /home/<user>/