如何从两台机器访问一个Git回购?
我有一个工作回购,通常从我的工作机器访问。在这台机器上,我使用Git Bash中的如何从两台机器访问一个Git回购?,git,ssh,Git,Ssh,我有一个工作回购,通常从我的工作机器访问。在这台机器上,我使用Git Bash中的SSH-keygen创建了一个SSH密钥对。这两台机器上的密钥对都是id\u rsa和id\u rsa.pub 如果我以我的工作用户身份登录,并尝试将我的主密钥添加到工作用户帐户,我会被告知其他人已经注册了该密钥。如果生成第二个主密钥,即id\u rsa2和id\u rsa.pub2,则身份验证失败 由此,我推测Git在默认情况下,在与repo主机(顺便说一句,它是BitBucket)进行身份验证时,只查找并使用原
SSH-keygen
创建了一个SSH密钥对。这两台机器上的密钥对都是id\u rsa
和id\u rsa.pub
如果我以我的工作用户身份登录,并尝试将我的主密钥添加到工作用户帐户,我会被告知其他人已经注册了该密钥。如果生成第二个主密钥,即id\u rsa2
和id\u rsa.pub2
,则身份验证失败
由此,我推测Git在默认情况下,在与repo主机(顺便说一句,它是BitBucket)进行身份验证时,只查找并使用原始的
id\u rsa.pub
文件。我猜我不得不告诉Git使用哪个密钥来进行哪个repo,或者别的什么,但是现在我不知道该怎么做了。您可以使用一个~/.ssh/config
文件使用多个私有ssh密钥
Host fromhome
HostName yourServer
User git
IdentityFile "~/.ssh/id_rsa2"
Host fromwork
HostName yourServer
User git
IdentityFile "~/.ssh/id_rsa"
该文件可以引用两个私钥,并允许您使用2个不同的ssh URL
在家:
cd /path/to/local/repo
git remote set-url origin fromhome:<user>/yourrepo
cd/path/to/local/repo
git远程设置url来源于主页:/yourrepo
下班:
cd /path/to/local/repo
git remote set-url origin fromwork:<user>/yourrepo
cd/path/to/local/repo
git远程设置url来源于工作:/yourrepo
也就是说,无论是在家还是在工作中,您只需要一组公钥/私钥,因此不需要配置文件。如果您在家中重新生成私钥
id\u rsa
私钥,您将能够在BitBucket端注册它的新公钥。在家里,
.ssh/config
仅在您已经有用于其他用途的私有/公共ssh密钥时才有用
询问:
为什么我不能将.ssh
目录复制到第二台机器上并使用相同的目录
这被认为是不好的做法:私钥应该保留。。。私密的,如“不随意复制”。此外,您还可以轻松地撤销私钥(通过从
.authorized_keys
ssh服务器中删除其授权密钥)。如果在许多机器上使用私钥,那么通过删除服务器端的一个公钥,您将以超出预期的方式撤销访问权