我的 ~/.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
建议的解决方案是进行适当的配置。