使用非默认SSH密钥进行git克隆

3
我需要从我的本地机器使用公司的GitHub。我更喜欢使用SSH。
我有一个私人GitHub帐户,已经在本地默认密钥(〜/ .ssh / id_rsa.pub)上使用了SSH。我使用Windows。
我已经用公司账号登录并可以看到存储库。如果我执行“git clone ”或“git clone ”,我会收到“找不到存储库”的消息。
通过“git -T git@github.com”,我看到我已验证了我的个人GitHub账户。
我尝试在公司GitHub帐户上注册本地默认SSH密钥(id_rsa.pub),但它说该密钥已被使用(我想它指的是我的个人帐户)。我注册了另一个密钥(id_rsa_test.pub),但我找不到任何传递不同密钥/凭据的git参数?
如何在本地PC上使用带有SSH的git,而无需替换我的个人SSH密钥为特定的SSH密钥?
作为临时解决方法,我试图将此放入GIT配置中,但不起作用(仍然是“未找到存储库”错误)。
Host GitHub
    HostName github.com
    User alex-company-user
    IdentityFile c:\Users\alex\.ssh\new_key_rsa

ssh-add <新密钥文件的路径> 返回 "Error connecting to agent: No such file or directory"。我认为这是因为在这台机器上我没有安装 Git-Bash。(我理解需要一直运行 ssh-agent?)

GIT_SSH_COMMAND='ssh -i C:\Users\alex\.ssh\new_key_rsa' 返回 "'GIT_SSH_COMMAND' 不是内部或外部命令"

[临时解决方案:GitHub Desktop]

作为临时解决方案,我正在使用 GitHub Desktop
它总是通过浏览器进行身份验证(甚至在您通过用户/密码并输入接收到的短信验证码后!),并始终使用已登录的浏览器用户。
所以,我输入我的公司帐户的用户名和密码,点击“登录”,接收带有验证码的短信,确认。它说我必须通过浏览器进行身份验证,点击“继续”...它打开浏览器,我自动用我的个人帐户进行身份验证!
所以,我必须从浏览器中注销我的个人帐户,在使用公司帐户登录浏览器后重复此过程。
(我已经为此打开了一个问题)
它允许我从列表中选择要克隆的存储库。我克隆了它,发现它使用 HTTPS URL(repo / .git / config)。

[remote "origin"]
    url = https://github.com/<my-company-repo>.git

(或许我可以改用SSH,我会试试) 所以,我希望这个解决方案不需要我经常在浏览器中切换用户。我仍然想知道如何直接使用git来做到这一点(不需要第三方工具)。


没有真正的理由将您的个人密钥与公司账户重复使用。只需生成一个新的密钥对即可。 - chepner
问题在于当我执行 git clone <my-company-repo> 命令时,该仓库不可见,因为GIT不允许传递“其他”SSH密钥。这就是我认为导致“找不到存储库错误”的原因。我的公司存储库显然是私有的。 - Alex 75
1个回答

1
作为一个临时解决方案,我试图将这个放在GIT配置中,但没有起作用。
要使用该配置,您需要:
- 将用户更改为git(与GitHub的SSH连接始终使用“ git”:私钥将验证实际用户) - 更改您的URL
Host GitHub
    HostName github.com
    User git <<=== not alex!
    IdentityFile c:\Users\alex\.ssh\new_key_rsa

并且:

cd C:\path\to\repo
git remote set-url GitHub:<me>/<myrepo>

关键部分是使用正确的私钥与git@github.com相关联。
这里的配置条目名称为GitHub(但也可以命名为xxx)。 因此,URL必须变成GitHub:<company>/<comany-repo>.git,以便使用~/.ssh/config中的条目"GitHub"。
您可以为相同的git@github.com定义许多条目,就像我8年前在“如何在已将SSH密钥添加到与工作相关的GitHub帐户的办公计算机上工作个人GitHub存储库?”中所示。

@Alex75 这似乎很正常:实际的 GitHub URL 包括一个用户或组织,后跟一个存储库:git@github.com:<我的公司>/<我的公司存储库>.git - VonC
@Alex75 如果您已正确验证,请首先使用 ssh -Tv GitHub 进行检查。 - VonC
PS D:\temp> ssh -Tv GitHub OpenSSH_for_Windows_7.7p1,LibreSSL 2.6.5 debug1:正在读取配置数据 C:\Users\alex/.ssh/config debug1:C:\Users\alex/.ssh/config 第10行:应用GitHub选项 [cut] debug1:标识文件c:\Users\alex\.ssh\<new_key> 类型0 debug1:key_load_public:没有这样的文件或目录 debug1:标识文件c:\Users\alex\.ssh\<new_key>-cert 类型-1 debug1:本地版本字符串SSH-2.0-OpenSSH_for_Windows_7.7 debug1:远程协议版本2.0,远程软件版本babeld-f24cc9ea debug1:无匹配项:babeld-f24cc9ea [continue...] - Alex 75
@Alex75 只要 ssh -Tv GitHub(其中 "GitHub" 是你的 ~/.ssh/config 文件中的主机条目名称)不以 "Welcome xxx" 结尾,其他任何操作都无法正常工作。 - VonC
继续执行 调试1:以“git”身份验证到github.com:22 [删减] 调试1:在C:\Users\alex/.ssh/known_hosts:1中找到密钥 [删减] 调试1:提供公钥:RSA SHA256:******* c:\Users\alex\.ssh\<new_key> 调试1:服务器接受密钥:pkalg ssh-rsa blen 535 调试1:身份验证成功(公钥)。 已认证为github.com([140.82.118.3]:22)。 [删减] 嗨,<my-company-user>!您已成功进行身份验证,但GitHub不提供shell访问权限。 是的... 最终是用我的公司用户,所以配置生效了。 - Alex 75
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接