ssh 客户端默认要求输入密码;如何配置它使用密钥?

ssh 客户端默认要求输入密码;如何配置它使用密钥?

我的服务器上同时提供了密码和公钥身份验证。我可以使用明确指定的密钥从客户端登录:

ssh user@host -i id_rsa

当我不指定密钥文件时,它会要求输入密码。但我想默认使用密钥文件登录。

我发现了一个提示,我可以将一些内容放入 ~/.ssh/config 中。所以我指定了这样的内容:

Host xxx
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    User uuu

配置被解释 - 使用用户“uuu”但密钥文件仍然被忽略。如何让ssh默认使用它?

答案1

如果您拥有文件模式 0600 ( )的目录~/.ssh和私钥,则将自动使用它,并且仅在公钥身份验证失败时才要求输入密码。检查是否满足所有这些条件。当您需要通过身份验证时,通常会使用该选项id_rsa~/.ssh-rw-------ssh-i不同的钥匙。

答案2

你的配置文件应该是

Host xxx
  User user
  IdentityFile ~/.ssh/id_rsa

您必须检查文件的正确性:

~/.ssh/id_rsa : rwx------

在远程主机上:

  • /home/user:组和其他人没有写权限
  • /home/user/.ssh:rwx------

您可以检查远程主机上的日志文件,您可以看到一些错误消息:

tail -f /var/log/auth.log

答案3

假设您有一台支持 SSH 的服务器,以及一个要连接到服务器的客户端,您需要在客户端计算机中创建私钥和公钥,并在服务器中复制公钥。

在此之前,您需要检查 SSH 服务器在哪里寻找客户端授权密钥。您需要检查 SSH 服务器配置文件 /etc/ssh/sshd_config,并找到下一行:

AuthorizedKeysFile      .ssh/authorized_keys

这表明服务器将在authorized_keys每个用户主目录的名为文件的.ssh文件夹中搜索授权该用户登录的公钥。

现在,在您的客户端中,正如您所说,您已经使用了客户端中生成的SSH密钥,您需要将公钥的内容复制到authorized_keys服务器中要登录的用户的文件中。

为了简化这一点,步骤是:

  • 在服务器中搜索AuthorizedKeysFile指令。/etc/ssh/sshd_config
  • 在客户端中创建私钥和公钥(您已经完成了)。
  • 将您的客户端公钥内容复制到authorized_keys服务器中您要登录的用户的文件中。如果您想使用用户登录username,则需要将公钥复制到/home/username/.ssh/authorized_keys文件(如果不存在则创建它)。

希望这可以帮助。

答案4

谢谢大家。看来这是 ssh-agent 的问题。重启后一切OK。我认为当服务器上接受的登录方法发生更改时,它不会即时刷新某些配置。

相关内容