在一个客户端上使用多个SSH私钥的最佳方法
我想使用多个私钥连接到不同的服务器或同一服务器的不同部分(我的用途是服务器的系统管理,Git的管理以及同一服务器中的普通Git使用)。 我试图简单地堆叠在id_rsa
文件中的键无济于事。
显然,一个简单的方法是使用该命令
ssh -i <key location> login@server.example.com
这非常麻烦。
任何关于如何去做这个更容易的建议?
从我的.ssh/config
:
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername
Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa
User remoteusername
等等。
Randal Schwartz的回答几乎帮助了我。 我在服务器上有不同的用户名,所以我不得不将User关键字添加到我的文件中:
Host friendly-name
HostName long.and.cumbersome.server.name
IdentityFile ~/.ssh/private_ssh_file
User username-on-remote-machine
现在,您可以使用友好名称进行连接:
ssh friendly-name
更多关键字可以在OpenSSH手册页找到。 注:列出的某些关键字可能已经存在于您的/ etc / ssh / ssh_config文件中。
连接时,您可以指示ssh连续尝试多个密钥。 就是这样:
$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_old
IdentityFile ~/.ssh/id_ed25519
# ... and so on
$ ssh server.example.com -v
....
debug1: Next authentication method: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa_old
debug1: read PEM private key done: type RSA
....
[server ~]$
这样您就不必指定哪个服务器可以使用什么密钥。 它只会使用第一个工作密钥。
如果给定的服务器愿意接受密钥,您也只能输入密码。 正如上面所看到的,即使ssh没有尝试为.ssh/id_rsa
请求密码,也是如此。
当然,它并不像其他答案中那样每个服务器都配置一个配置,但至少你不必为你连接的所有服务器添加一个配置!
链接地址: http://www.djcxy.com/p/25315.html上一篇: Best way to use multiple SSH private keys on one client