如果我使用默认密钥文件以外的密钥文件,SSH 会不断要求我输入密码

如果我使用默认密钥文件以外的密钥文件,SSH 会不断要求我输入密码

我有一个名为 的密钥文件KEY,其中有KEYKEY.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>/ 

相关内容