告诉 ssh 尝试 ~/.ssh/ 中的所有密钥文件

告诉 ssh 尝试 ~/.ssh/ 中的所有密钥文件

我的 ~/.ssh/ 目录中有多个密钥,每个密钥都有一个单独的项目名称,用于每个具有多个服务器的项目。id_rsa_project1、id_rsa_project2

但是,ssh 不会搜索它们。如果我运行,ssh -v user@projectserver我会得到如下输出:

...
debug1: Connection established.
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/me/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/me/.ssh/id_dsa
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
user@projectserver password: 

这似乎是设计使然,因为ssh_config手册页说,默认情况下,搜索的身份是〜/ .ssh / id_dsa〜/ .ssh / id_ecdsa〜/ .ssh / id_ed25519〜/.ssh / id_rsa

当然,我可以:

  • 每次将开关添加-i ~/.ssh/id_rsa_project1到命令行,或者
  • 添加身份文件 ~/.ssh/id_rsa_project1针对服务器的规范〜/.ssh /配置, 或者
  • 添加身份文件 ~/.ssh/id_rsa_project1/etc/ssh/ssh_config对于每个项目。

...但对于我们定期更换密钥和密钥文件来说,这些似乎都太麻烦了。

我确实尝试添加身份文件 ~/.ssh/*/etc/ssh/ssh_config但它似乎将其视为文字 * 而不是通配符。

我怎样才能告诉 ssh 读取并尝试全部~/.ssh/ 中的密钥文件?

答案1

最简单的方法是将它们添加到ssh-agent

启动代理:

eval `ssh-agent`

添加所有键~/.ssh

ssh-add ~/.ssh/id_rsa_*

但请注意,这不是理想的方法,因为所有密钥都会在您想要连接的所有服务器上尝试。~/.ssh/config建议的解决方案是进行适当的配置。

相关内容