我想使用多个私钥链接到不一样的服务器或同一服务器的不一样部分(个人用途是服务器的系统管理,Git的管理以及同一服务器内的正常Git使用)。 我试图简单地将密钥堆叠在id_rsa
文件中无济于事。 git
显然,一种简单的方法是使用如下命令 bash
ssh -i <key location> login@server.example.com
那很麻烦。 服务器
关于如何进行此操做的任何建议都容易一点? ssh
使用ssh-agent做为密钥。 测试
从个人.ssh/config
: url
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 # different private key for realname2 User remoteusername
等等。 spa
我赞成Tuomas关于使用ssh-agent的意见。 我还想添加第二个私钥来工做, 本教程对我来讲就像是一种魅力。 debug
步骤以下: code
$ ssh-agent bash
$ ssh-add /path.to/private/key
例如ssh-add ~/.ssh/id_rsa
$ ssh-add /path.to/private/key
ssh-add ~/.ssh/id_rsa
$ ssh-add -l
验证 $ssh -v <host url>
测试,例如ssh -v git@assembla.com
您能够指示ssh在链接时连续尝试多个键。 这是如何作: server
$ 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
要求输入密码。
固然,它不会像其余答案中那样超越每一个服务器的配置,可是至少您没必要为链接到的全部服务器添加配置!
您能够在~/.ssh
文件夹中建立一个名为config
的配置文件。 它能够包含:
Host aws HostName *yourip* User *youruser* IdentityFile *idFile*
这将容许您链接到这样的机器
ssh aws