推送和拉到git存储库的不同键

时间:2011-12-07 00:49:57

标签: git ssh gitosis pki

我正在使用gitosis在我的家庭服务器上托管git存储库。

我已将其设置为接受三个SSH密钥:我的主要密钥(无密码)具有读/写访问权限,我的密码密码(我更习惯于将其他人拥有的服务器放在其上)具有读/写功能访问,以及只具有读访问权限的第三个密钥。

这个想法是在远程主机上(我不拥有,所以其他人有root用户)我可以使用我的密码私钥和第三个(只读)密钥,然后在那台机器上我可以没有密码拉,并使用密码密钥推回。

Gitosis对它很好,并且会接受具有正确权限的任一键。但是当我使用两个键时,我无法按照我想要的方式工作。我在SSH配置中指向它们 - 在远程主机上的〜/ .ssh / config中我有以下内容:

Host *
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa.passphrase

当我拉或克隆时,操作完成后不会提示我输入密码。但是当我推动时,我收到一条消息,说我没有得到许可。它显然只尝试了第一个密钥文件。

如果我交换两条IdentityFile行,我会被提示输入密码,无论我是推还是拉。所以它仍然只是尝试第一个密钥文件。

有没有办法获得我想要的行为 - 也就是说,在执行推送和其他写操作时让它使用一个密钥文件而在执行只读操作时使用另一个密钥文件?

1 个答案:

答案 0 :(得分:1)

您可以设置多个遥控器来执行此操作。每个遥控器都可以有不同的URL。您可以在.ssh / config文件中配置您的网址,指向您喜欢的任何位置,并使用您想要的任何密钥。