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

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

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

这很麻烦。

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


当前回答

我同意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进行测试

其他回答

在Ubuntu 18.04 (Bionic Beaver)上没有什么可做的。

成功创建第二个SSH密钥后,系统将尝试为每个连接查找匹配的SSH密钥。

你可以用下面这些命令创建一个新密钥:

# Generate key make sure you give it a new name (id_rsa_server2)
ssh-keygen

# Make sure ssh agent is running
eval `ssh-agent`

# Add the new key
ssh-add ~/.ssh/id_rsa_server2

# Get the public key to add it to a remote system for authentication
cat ~/.ssh/id_rsa_server2.pub

正如Atlassian博客页面上提到的, 在.ssh文件夹中生成一个配置文件,包括以下文本:

#user1 account
 Host bitbucket.org-user1
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user1
     IdentitiesOnly yes

 #user2 account
 Host bitbucket.org-user2
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user2
     IdentitiesOnly yes

然后,您可以简单地用后缀域签出,在项目中,您可以在本地配置作者名称等。

这是我从sajib-khan的回答中得到的灵感。没有设置默认配置;这是我在GitLab上的个人账号,另一个是我的公司账号。以下是我所做的:

生成SSH密钥

ssh-keygen -t rsa -f ~/.ssh/company -C "name.surname@company.com"

编辑SSH配置

nano ~/.ssh/config
    Host company.gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/company

删除缓存的SSH密钥

ssh-add -D

测试它!

ssh -T git@company.gitlab.com

欢迎来到GitLab, @hugo.sohm!

ssh -T git@gitlab.com

欢迎你的芳名…

使用它!

公司账户

git clone git@company.gitlab.com:group/project.git

个人/默认账户

git clone git@gitlab.com:username/project.git

这是我使用的源代码。

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

我同意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进行测试