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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用非默认的SSH密钥进行克隆。相关的知识,希望对你有一定的参考价值。

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

我有一个私人GitHub账户,已经使用本地默认密钥(~.sshid_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中找不到任何参数来传递不同的keycredentials。我注册了另一个密钥(id_rsa_test.pub),但我在git中找不到任何参数来传递不同的keycredentials?

我如何在本地电脑上用SSH使用git?不更换我的个人SSH密钥 用一个特定的SSH密钥?

作为一个临时的解决方案,我试着把这个放在GIT配置中,但并不奏效(仍然是 "找不到仓库 "的错误)。

Host GitHub
    HostName github.com
    User alex-company-user
    IdentityFile c:Usersalex.ssh
ew_key_rsa

ssh-add <path to the new key file> 返回 "Error connecting to agent: 我想是因为这台机器上没有安装Git-Bash,(据我所知,实际上是必须要有一个一直运行的ssh-agent的。

GIT_SSH_COMMAND='ssh -i C:Usersalex.ssh ew_key_rsa' 返回"'GIT_SSH_COMMAND'未被识别为内部或外部命令"

[临时解决办法:GitHub桌面]

作为一个临时的解决方案,我使用的是 GitHub桌面. 它总是用浏览器进行验证(也是在你通过用户密码和输入短信收到的验证码之后!),而且它总是使用已经在浏览器中登录的用户。所以,我输入我公司账户的用户名和密码,点击 "登录",收到带有验证码的短信,确定。 它说我要用浏览器认证,点击 "继续"......它打开浏览器,我就自动用我的个人账号认证了! 所以,我必须用我的个人账户退出浏览器,在浏览器中用我的公司账户登录后,重复这个过程。我为此开了一个 Issue)它让我从列表中选择要克隆的仓库。我克隆了它,发现它使用的是HTTPS URL(repo.git/config)。

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

(也许我可以把它改成SSH,我试试)所以,我希望这个解决方案不需要我经常在浏览器中切换用户。我还是想知道如何直接用git来做(不用第三方工具)。

答案

作为一个临时的解决方案,我试着把这个放在GIT配置中,但没有用。

要使用该配置,你需要。

  • 将用户改为 git (与GitHub的SSH连接 始终 使用'git':私钥将认证实际用户)
  • 更改您的URL

所以:

Host GitHub
    HostName github.com
    User git <<=== not alex!
    IdentityFile c:Usersalex.ssh
ew_key_rsa

还有:

cd C:path	o
epo
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年前在""中说明的那样。如何从办公室的电脑上在个人GitHub repo上工作,其SSH密钥已经添加到与工作相关的GitHub账户中?"

以上是关于使用非默认的SSH密钥进行克隆。的主要内容,如果未能解决你的问题,请参考以下文章

关于Git GUI克隆代码

如何使用私钥克隆 GIT 存储库

ssh克隆不克隆git中的repo

在 GitLab 中使用 SSH 进行 Git 克隆不起作用

Gitlab - 无法通过 SSH 克隆,但 SSH 可以自己工作

linux公钥登录远程服务器