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

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

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

这很麻烦。

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


当前回答

ssh-add ~/.ssh/xxx_id_rsa

请确保在添加之前进行测试:

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

如果你有任何错误的问题,有时改变文件的安全性有助于:

chmod 0600 ~/.ssh/xxx_id_rsa

其他回答

GitHub上的多个键对

1.0 SSH配置文件

1.1创建~/.ssh/config

1.2 chmod 600 ~/。ssh / config(必须)

1.3在文件中输入如下内容:

主机披萨 主机github。com 选择公共关系 IdentityFile ~ / . ssh / privatekey1

案例A:全新的Git克隆

使用此命令克隆Git:

$ git clone git@pizza:yourgitusername/pizzahut_repo.git

注意:如果以后要更改.ssh/config的主机名“pizza”,进入Git克隆文件夹,编辑.git/config文件URL行(见case B)

情况B:已经有Git克隆文件夹

2.1进入克隆文件夹,进入“。git”文件夹

2.2编辑配置文件

2.3将URL从*old更新为new:

(Old) URL = git@github.com:yourgitusername/pizzahut_repo.git

(New) URL = git@pizza:yourgitusername/pizzahut_repo.git

我曾经遇到过这个问题,当时我有两个Bitbucket帐户,想要为两个帐户存储单独的SSH密钥。这对我来说很管用。

我创建了两个单独的ssh配置,如下所示。

Host personal.bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /Users/username/.ssh/personal
Host work.bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /Users/username/.ssh/work

现在当我必须从我的工作帐户克隆一个存储库时,命令如下所示。

git clone git@bitbucket.org:teamname/project.git

我必须修改这个命令:

git clone git@**work**.bitbucket.org:teamname/project.git

同样,从我的个人帐户克隆命令必须修改为

Git克隆git@personal.bitbucket.org:name/personalproject.git

更多信息请参考这个链接。

对我来说,在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。

从我的.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  # different private key for realname2
    User remoteusername

然后您可以使用以下连接:

ssh myshortname

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