在一个客户端上使用多个SSH私钥的最佳方法

我想使用多个私钥链接到不一样的服务器或同一服务器的不一样部分(个人用途是服务器的系统管理,Git的管理以及同一服务器内的正常Git使用)。 我试图简单地将密钥堆叠在id_rsa文件中无济于事。 git

显然,一种简单的方法是使用如下命令 bash

ssh -i <key location> login@server.example.com

那很麻烦。 服务器

关于如何进行此操做的任何建议都容易一点? ssh


#1楼

使用ssh-agent做为密钥。 测试


#2楼

从个人.ssh/configurl

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


#3楼

我赞成Tuomas关于使用ssh-agent的意见。 我还想添加第二个私钥来工做, 本教程对我来讲就像是一种魅力。 debug

步骤以下: code

  1. $ ssh-agent bash
  2. $ ssh-add /path.to/private/key例如ssh-add ~/.ssh/id_rsa $ ssh-add /path.to/private/key ssh-add ~/.ssh/id_rsa
  3. 经过$ ssh-add -l验证
  4. 使用$ssh -v <host url>测试,例如ssh -v git@assembla.com

#4楼

您能够指示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要求输入密码。

固然,它不会像其余答案中那样超越每一个服务器的配置,可是至少您没必要为链接到的全部服务器添加配置!


#5楼

您能够在~/.ssh文件夹中建立一个名为config的配置文件。 它能够包含:

Host aws
    HostName *yourip*
    User *youruser*
    IdentityFile *idFile*

这将容许您链接到这样的机器

ssh aws
相关文章
相关标签/搜索