我想使用多个私钥连接到不同的服务器或同一服务器的不同部分(我的用途是服务器的系统管理、Git管理和同一服务器中的正常Git使用)。我尝试简单地将密钥堆叠在id_rsa文件中,但没有用。

显然,要做到这一点,一个简单的方法是使用命令

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

这很麻烦。

有什么建议可以让你做这件事更容易一些吗?


当前回答

您可以在~/中创建一个名为config的配置文件。ssh文件夹。它可以包含:

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

这将允许您像这样连接到机器

 ssh aws

其他回答

现在,使用最新版本的Git,我们可以在特定于存储库的Git配置文件中指定sshCommand:

  [core]
      repositoryformatversion = 0
      filemode = true
      bare = false
      logallrefupdates = true
      sshCommand = ssh -i ~/.ssh/id_rsa_user
   [remote "origin"]
      url = git@bitbucket.org:user/repo.git
      fetch = +refs/heads/*:refs/remotes/origin/*

我同意Tuomas使用ssh-agent。我还想为工作添加第二个私钥,这个教程对我来说非常有效。

步骤如下:

$ ssh-agent bash $ ssh-add /path。到/private/key,例如ssh-add ~/.ssh/id_rsa 通过$ ssh-add -l验证 使用$ssh -v <主机url>例如ssh -v git@assembla.com进行测试

您可以尝试这个sshmulti npm包来维护多个SSH密钥。

Randal Schwartz的回答几乎帮助了我。 我在服务器上有一个不同的用户名,所以我必须在我的文件中添加User关键字:

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文件中。

对我来说,在MacOs上,唯一可行的解决方案就是在文件~/.ssh/config中添加这个:

Host *
  IdentityFile ~/.ssh/your_ssh_key
  IdentityFile ~/.ssh/your_ssh_key2
  IdentityFile ~/.ssh/your_ssh_key3
  AddKeysToAgent yes

Your_ssh_key没有任何扩展名。不要使用.pub。