【问题标题】:git clone using a non default SSH key使用非默认 SSH 密钥获取克隆
【发布时间】:2023-03-08 18:33:01
【问题描述】:

我需要在本地机器上使用我公司的 GitHub。
我更喜欢使用 SSH。

我有一个私人 GitHub 帐户,该帐户已使用带有本地默认密钥 (~/.ssh/id_rsa.pub) 的 SSH。
我使用 Windows。

我已使用公司帐户登录,并且可以查看存储库。
如果我这样做 git clone <git url>git clone <https url> 我会收到:“找不到存储库”。

通过git -T git@github.com,我看到我已使用我的个人 GitHub 帐户进行身份验证。

我尝试在公司 GitHub 帐户上注册本地默认 SSH 密钥 (id_rsa.pub),但它说该密钥已在使用中(我想它指的是我的个人帐户)。
我注册了另一个密钥(id_rsa_test.pub),但我在 git 中找不到任何参数来传递不同的密钥/凭据?

如何在本地 PC 上使用 git 和 SSH而不用特定的 SSH 密钥替换我的个人 SSH 密钥

作为临时解决方案,我尝试将其放入 GIT 配置中,但不起作用(仍然“找不到存储库”错误)

Host GitHub
    HostName github.com
    User alex-company-user
    IdentityFile c:\Users\alex\.ssh\new_key_rsa

ssh-add <path to the new key file> 返回“连接代理时出错:没有这样的文件或目录” 我想是因为在这台机器上我没有安装 Git-Bash。 (据我了解,实际上必须始终启动并运行 ssh-agent?)

GIT_SSH_COMMAND='ssh -i C:\Users\alex\.ssh\new_key_rsa' 返回“'GIT_SSH_COMMAND' 未被识别为内部或外部命令”

[临时解决方案:GitHub Desktop]

作为临时解决方案,我使用 GitHub Desktop
它总是通过浏览器进行身份验证(在您传递用户/密码并输入短信收到的验证码之后!!)并且它总是在浏览器中使用已经登录的用户。
于是,我输入我公司账户的用户名和密码,点击“登录”,收到带有验证码的短信,OK。它说我必须通过浏览器进行身份验证,单击“继续”...它会打开浏览器,我会自动使用我的个人帐户进行身份验证!
因此,我必须从我的个人帐户退出浏览器,然后在浏览器中使用我的公司帐户登录后重复该过程。
(我为此打开了一个问题)
它让我可以从列表中选择要克隆的存储库。我克隆了它,发现它使用的是 HTTPS URL(repo/.git//config):

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

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

【问题讨论】:

  • 没有真正的理由在您的公司帐户中重复使用您的个人密钥。只需生成一个新的对。
  • 问题是,当我执行 git clone 时,该 repo 不可见,因为 GIT 不允许传递“其他”SSH 密钥。这就是我认为“找不到存储库错误”的原因。我的公司回购显然是私有的。

标签: git github ssh


【解决方案1】:

作为临时解决方案,我尝试将其放入 GIT 配置中,但不起作用

要使用该配置,您需要:

  • 将用户更改为git(与 GitHub 的 SSH 连接始终使用“git”:私钥将验证实际用户)
  • 更改您的网址

所以:

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:&lt;company&gt;/&lt;comany-repo&gt;.git 才能使用 ~/.ssh/config 条目“GitHub”。

您可以为同一个 git@github.com 定义多个条目,正如我 8 年前在“How to work on personal GitHub repo from office computer whose SSH key is already added to a work related GitHub account?”中说明的那样

【讨论】:

  • 我更正了用户。我已经尝试过 git,我对 my-usergit 犹豫不决,因为对于 GitLab,它是用 my-user。我正在使用这个 URL: git@github.com:.git 。我没有将存储库从 HTTPS 更改为 SSH,我需要第一次克隆它。调用git clone git@github.com:&lt;my-company-repo&gt;.git 时仍然出现“找不到存储库”。 (HTTPS url 也有同样的错误)。
  • @Alex75 这似乎很正常:一个实际的 GitHub URL 涉及一个用户或组织,然后是一个存储库:git@github.com:&lt;my-company&gt;/&lt;my-company-repo&gt;.git
  • @Alex75 首先检查ssh -Tv GitHub,如果您的身份验证正确
  • 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\\ type 0 debug1:key_load_public:没有这样的文件或目录 debug1:身份文件 c:\\Users\\alex\\.ssh\\-cert type -1 debug1:本地版本字符串 SSH-2.0-OpenSSH_for_Windows_7.7 debug1:远程协议版本 2.0,远程软件版本 babeld -f24cc9ea debug1: 不匹配: babeld-f24cc9ea [继续...]
  • @Alex75 只要ssh -Tv GitHub(其中“GitHub”是您的~/.ssh/config文件中的主机条目名称)不会以“Welcome xxx”结尾,其他任何方法都不会起作用.
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 2017-06-02
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
相关资源
最近更新 更多