2011-12-07 183 views
1

我使用gitosis来托管我的家庭服务器上的git存储库。不同的键推入git存储库

我已经设置它接受三个SSH密钥:我的主密码(无密码),具有读/写访问权限,我的密码之一(我更喜欢将其放在其他人拥有根的服务器上)写入权限,以及只有读权限的第三个密钥。

这个想法是,在远程主机上(我不拥有它,所以别人有它的根),我可以有我的密码私钥和第三个(只读)键,然后在该机器上我可以在没有密码的情况下拉动并使用密码键推回。

Gitosis很好,它会接受任何具有正确权限的密钥。但是当我使用这两个键时,我无法按照自己想要的方式工作。我指着他们在我的SSH配置 - 在〜/ .ssh/config中的远程主机上我有以下几点:

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

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

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

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

+1

太晚了切换到Gitolite?我强烈推荐它。 – Nic

回答

1

您可以设置多个遥控器来做到这一点。每个远程可以有不同的网址。您的网址可以在您的.ssh/config文件中进行配置,以指向您喜欢的任何位置并使用您想要的任何密钥。

+0

这是一个很好的解决方案。我将pushurl设置为虚拟主机名。然后,我使用相同的虚拟主机名称添加了Host部分到SSH配置文件,但是HostName realhost.example.com行和相关的IdentityFile行。这很好。谢谢! – tremby

相关问题