我有两个不同的 id_rsa 密钥,如下所示:
/home/ubuntu/.ssh/id_rsa_1
/home/ubuntu/.ssh/id_rsa_2
我在ssh中都添加了,ssh-add -l的结果如下:
4096 cb:c2:9e:06:d7:e4:16:e3:dc:9b:c4:df:2f:58:30:82 /home/ubuntu/.ssh/id_rsa_1 (RSA)
4096 bd:a1:0f:c2:bc:4d:6f:43:0a:15:0b:39:ce:0d:08:54 /home/ubuntu/.ssh/id_rsa_2 (RSA)
现在,当我尝试从我的仓库中 git pull 时,它应该使用 id_rsa_2 工作。但事实并非如此。
但是,如果我首先添加 id_rsa_2,则 ssh-add -l 会产生以下结果:
4096 cb:c2:9e:06:d7:e4:16:e3:dc:9b:c4:df:2f:58:30:82 /home/ubuntu/.ssh/id_rsa_2 (RSA)
4096 bd:a1:0f:c2:bc:4d:6f:43:0a:15:0b:39:ce:0d:08:54 /home/ubuntu/.ssh/id_rsa_1 (RSA)
它开始工作了。
我不明白我应该做什么改变以便它开始从两个 id_rsa 文件进行检查(无论哪个文件先添加)。
任何帮助都将不胜感激。谢谢。
[更新澄清]:当它不起作用时我收到的错误如下:
git remote show origin_ssh
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
所以,基本上它说我没有访问权限。
这是我的 origin_ssh 指向的地方:
git remote -v
origin_ssh [email protected]:TestRepoOne/api.git (fetch)
origin_ssh [email protected]:TestRepoOne/api.git (push)
以下代码重现了我的错误:
ssh-add -D
ssh-add ~/.ssh/id_rsa_1
ssh-add ~/.ssh/id_rsa_2
以下代码解决了[针对这个特定的 git repo] 的错误:
ssh-add -D
ssh-add ~/.ssh/id_rsa_2
ssh-add ~/.ssh/id_rsa_1
因此,基本上只有首先添加 id_rsa_2 时它才有效。[澄清说明:我已在我的 github 远程仓库中添加了 id_rsa_2]
答案1
听起来您正在寻找一种方法来确保在连接到 GitHub 时使用 id_rsa_2 密钥,同时将 id_rsa_1 用于其他用途。
编辑~/.ssh/config
并添加以下内容:
Host github.com
HostName github.com
User git
IdentityFile /home/ubuntu/.ssh/id_rsa_2
这将确保与 github.com 的连接使用指定的密钥。
更新:要对具有相同用户名的不同存储库使用不同的密钥,请在 ssh 配置文件中使用以下命令:
Host repo1.github.com
HostName github.com
User git
IdentityFile /home/ubuntu/.ssh/id_rsa_1
Host repo2.github.com
HostName github.com
User git
IdentityFile /home/ubuntu/.ssh/id_rsa_2
并且您需要更新./git/config
每个存储库中的遥控器:
[remote "origin"]
url = "ssh://[email protected]/username/repo1.git"
和
[remote "origin"]
url = "ssh://[email protected]/username/repo2.git"