Git如何使用SSH密钥,用户名进行克隆

Posted

技术标签:

【中文标题】Git如何使用SSH密钥,用户名进行克隆【英文标题】:Git how to clone with SSH key, username 【发布时间】:2017-06-02 13:31:46 【问题描述】:

我有以下内容,我需要在 windows 终端命令提示符或 linux 中克隆存储库。

网址: git@xxxxx.com:xxx/xxx/git 用户名: xxx@xxx.in SSH 密钥: ssh-rsa AAAAB3NzaC1yxxxxxxxxxxxx....xxx@xxx.in

我试过了:

git clone git@xxxxx.com:xxx/xxx/git

我明白了

Permission denied(public key)
Couldn't read from remote repository

还尝试将 URL 更改为:

git clone https://xxxxx.com:xxx/xxx/git

【问题讨论】:

您是否在您的帐户资料(例如 GitHub、BitBucket)中添加了您的~/.ssh/id_rsa.pub 我们无权访问帐户资料...详细信息是从客户那里共享的,我们只需要将我们的代码克隆到他们的 github 中 【参考方案1】:

回答任何问题总是迟到,您可能有多个 ssh 密钥,如果未指定,git 将尝试使用 id_rsa,但如果您需要不同的密钥,您可以使用

git clone git@provider.com:userName/projectName.git --config core.sshCommand="ssh -i ~/location/to/private_ssh_key"

这样,它会在实际从 git 存储库中获取任何数据之前应用此配置并使用不同于 id_rsa 的密钥。

后续的fetchpush 将使用指定的密钥对克隆的存储库进行身份验证。

希望这对任何人都有帮助。

【讨论】:

你摇滚。这是一个很好的解决方案。每个克隆都简单且可重复。 但是递归子模块会出现问题 克隆后,初始化子模块不起作用。有什么解决办法吗? 好吧,子模块的问题有点不同,我最初试图解决的问题,但基本上你需要覆盖每个子模块内的.git/config 文件并更正sshCommand 到子模块所需的任何内容。阅读这里的文档可能会得到更好的解释git-scm.com/docs/git-config#_configuration_file 这是我一直回来的答案之一。它应该被选为正确答案。【参考方案2】:

我建议您按照以下步骤操作:

第 1 步:检查现有的 SSH 密钥

$> ls -al ~/.ssh

您是否看到任何名为 id_rsaid_rsa.pub 的文件?

如果是,请转到第 3 步

如果没有,则需要生成它们

第 2 步:生成新的 SSH 密钥

$> ssh-keygen -t rsa -b 4096 -C "yourEmail"

将您的 SSH 密钥添加到 ssh-agent

$> eval "$(ssh-agent -s)"

$> ssh-add ~/.ssh/id_rsa

步骤 3.1:将 SSH 密钥添加到您的 GIT 帐户。

获取你的公钥

$> cat ~/.ssh/id_rsa.pub

转到您的 GIT 项目 -> 设置 -> SSH 密钥

然后在 SSH 密钥中传递你的公钥内容

步骤 3.2:强制 SSH 客户端使用给定的私钥

当您无法在 Git 帐户上设置密钥时,这是一种替代解决方案

$> sudo nano ~/.ssh/config

那就改这一行

IdentityFile <yourPrivateKey>

第 4 步:克隆项目

$> git clone git@xxxxx.com:xxx/xxx/git

【讨论】:

Step3 是否有替代方法,因为我们无法访问 GIT 帐户,只有我的问题中指定的详细信息,我想我无法访问 Git 帐户...我还有 ssh 密钥内容(我猜它的 id_rsa.pub 内容)....所以我创建了一个文件夹,文件名为 id_rsa.pub 并粘贴了我拥有的内容... 当你在cat ~/.ssh/config 中录制命令时,你看到IdentityFile 行了吗? 这是结构,我的 Windows 本地驱动器中有一个文件夹:C/Users/me/Test/.ssh 在我的 ssh 文件夹中,我有 .id_rsa 文件,当我输入cat ~/.ssh/config 我没有得到这样的文件 @Sachins 我更新了我的答案:参见步骤 3.2:强制 SSH 客户端使用给定的私钥 它正在工作!!!【参考方案3】:

使用 GitHub 测试 ssh 以获得可操作的反馈。

在命令行中运行ssh -T git@github.com (见https://help.github.com/articles/testing-your-ssh-connection/)


如果可行,接下来请使用 git。但很可能会有,是你的问题。

要克隆,然后使用git clone git@github.com:$USERNAME/$REPONAME.git

【讨论】:

并没有真正解决所问的问题。【参考方案4】:

要使用 ssh 通过 Git 克隆源代码,我们可以使用以下格式的 http url:

http://usernameWITHOUTdomain:password@the_rest_httpURL

例如:http://myname:password@192.110.110.10/projectname/project.git

【讨论】:

这是使用 http,而不是 ssh。 当然,但是您说“使用 ssh 使用 Git 克隆源代码”,这不是示例所做的。 这不遵循 ssh 协议 - 不是解决方案

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

如何使用 GitLab 克隆 git 存储库

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

ssh克隆不克隆git中的repo

github SSH 是如何工作的?

git如何使用ssh密钥

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