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
的密钥。
后续的fetch
或push
将使用指定的密钥对克隆的存储库进行身份验证。
希望这对任何人都有帮助。
【讨论】:
你摇滚。这是一个很好的解决方案。每个克隆都简单且可重复。 但是递归子模块会出现问题 克隆后,初始化子模块不起作用。有什么解决办法吗? 好吧,子模块的问题有点不同,我最初试图解决的问题,但基本上你需要覆盖每个子模块内的.git/config
文件并更正sshCommand 到子模块所需的任何内容。阅读这里的文档可能会得到更好的解释git-scm.com/docs/git-config#_configuration_file
这是我一直回来的答案之一。它应该被选为正确答案。【参考方案2】:
我建议您按照以下步骤操作:
第 1 步:检查现有的 SSH 密钥
$> ls -al ~/.ssh
您是否看到任何名为 id_rsa
和 id_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密钥,用户名进行克隆的主要内容,如果未能解决你的问题,请参考以下文章