我的服务器上同时提供了密码和公钥身份验证。我可以使用明确指定的密钥从客户端登录:
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。我认为当服务器上接受的登录方法发生更改时,它不会即时刷新某些配置。