git - 一个客户端使用多个SSH私钥的最佳方式

  显示原文与译文双语对照的内容

我正在使用 Ubuntu,并想使用多个专用密钥连接到不同服务器或者同一服务器( 我的使用是服务器管理,git管理和在同一服务器内的普通git用法)的不同部分。 我试着简单地将 id_rsa 文件中的键叠放起来。

显然,使用命令的方法是 ssh -i <key location> login@server.com ,cumbersome了。

关于如何处理这个问题的建议?

时间:

从我的.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施瓦茨几乎帮助我一路。 我在服务器上有一个不同的用户名,所以我不得不将磅的用户关键字添加到 file:


Host friendly-name
HostName long.and.cumbersome.server.name
IdentityFile ~/.ssh/private_ssh_file
User username-on-remote-machine

现在你可以使用friendly-name连接:

 
ssh friendly-name

 

OpenSSH手册页中可以找到更多关键字。注意:列出的一些关键字可能已经存在于你的/etc/ssh/ssh_config 文件。


foo:~$ssh-add ~/.ssh/xxx_id_rsa

请确保在添加之前测试它:


ssh -i ~/.ssh/xxx_id_rsa username@example.com

如果你有任何问题,有时会改变文件的安全性


chmod 0600 ~/.ssh/xxx_id_rsa

我同意Tuomas使用 ssh-agent 。 我还想为工作添加另一个私人密钥,而这个教程对我来说是一个魅力。

步骤如下:

  1. $ ssh-agent bash
  2. $ ssh-add/path.to/private/key e.g ssh-add ~/.ssh/id_rsa
  3. 通过 $ ssh-add -l 验证
  4. 测试它 $ssh -v <host url> e.g ssh -v git@assembla.com
...