Git 是否可以全局添加ssh add

Git 是否可以全局添加ssh add,git,ssh,github,ssh-keys,openssh,Git,Ssh,Github,Ssh Keys,Openssh,我是否可以对永久保留的identifyFile执行ssh add,目前它仅适用于当前活动的ssh会话(即,使用ssh add添加的identityFile在与服务器进行新ssh会话时丢失,可以通过运行ssh add-L找到) 问题是,我们的amazon服务器有各种各样的项目,其中repo驻留在github中 现在,根据用户情况,每个回购协议都有访问权 假设用户A仅对项目A拥有访问权,B仅对项目B拥有访问权 通过设置访问权限(在github中),现在每个用户只能对相应的项目执行git操作(如git

我是否可以对永久保留的identifyFile执行ssh add,目前它仅适用于当前活动的ssh会话(即,使用ssh add添加的identityFile在与服务器进行新ssh会话时丢失,可以通过运行ssh add-L找到)

问题是,我们的amazon服务器有各种各样的项目,其中repo驻留在github中

现在,根据用户情况,每个回购协议都有访问权 假设用户A仅对项目A拥有访问权,B仅对项目B拥有访问权

通过设置访问权限(在github中),现在每个用户只能对相应的项目执行git操作(如git fetch、git push等)(这是我们想要的)

现在我想要的是当一个用户在相应的项目上执行git操作时,我想要ssh代理获取帐户中的所有ssh密钥,并查找与该特定用户匹配的密钥

注意

每个ssh密钥都有一个与之关联的短语(每个用户都知道的唯一秘密),在执行git函数时提示输入

要做到这一点,我们必须这样做

ssh-add /root/.ssh/A

ssh-add /root/.ssh/B
但如前所述,这仅用于活动ssh会话退出或与服务器建立一个新的ssh会话,ssh添加信息丢失
。可以通过运行ssh add-L找到

我还尝试在.ssh/config中定义IdentityFile,如下所述

像这样的

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B
Host UserA_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host UserB_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B
这只适用于一个用户(有时适用于“A”,有时不适用,同样适用于“B”)

这种隔离能实现吗?或者我听起来有点过于雄心勃勃了


谢谢

您对IdentityFile的编辑非常接近。但是,您需要在IdentityFile中列出唯一的主机名。因为您两次都使用github.com作为主机名,所以当您尝试连接到github.com时,它不知道使用哪个主机名

我们有类似的设置。我们有5个用户,所有用户都登录到一个帐户。但是,Github需要使用各自的ssh密钥查看它们,因此我们有5个密钥。解决这个问题的诀窍是使您的文件看起来像这样

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B
Host UserA_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host UserB_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B
每当UserB想要做一些与git相关的事情时(例如克隆他们的一个存储库),他们都会运行

git clone UserB_github:UserB/MyRepo
或者类似的东西。这将表现得好像他们已经进入

git clone github.com:UserB/MyRepo 
但它将使用适当的标识文件/私钥


我知道我的解决方案不使用持久的
ssh-add
,但我认为这将为您提供您想要的性能。不幸的是,您的用户在每次执行交易时都需要输入他们的密码短语。

您能编辑您的问题并(在最后)说出您想要做的事情吗?我问的原因是可能有一个简单的方法来解决它,但我们需要知道你的目标。您当前的方法不太好,需要更换@gahooa Edited让我知道它是否还需要进一步编辑当然,从安全角度来看,多个用户共享一个帐户可能并不理想,但有时有理由这样做。谢谢你给我几个小时左右的时间来测试一下,我一定会接受答案