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

Posted

技术标签:

【中文标题】如何使用私钥克隆 GIT 存储库【英文标题】:How to clone GIT repository with private key 【发布时间】:2011-05-18 13:57:34 【问题描述】:

我正在尝试创建一个将 GIT 存储库克隆到计算机的应用程序。我的问题是如果 SSH 密钥不在默认位置,如何克隆安全存储库。

我想让人们上传密钥,然后使用这些密钥连接和克隆存储库。

因此得出结论:我不希望 GIT 在默认位置查找密钥,我想“给”它密钥文件的路径,然后以某种方式将其置于命令中(以及密码短语,如果有的话)并获取克隆的存储库。

非常感谢您!

【问题讨论】:

“上传密钥”——你是认真的吗?您是在谈论鼓励用户上传他们的私钥吗?这样做的用户显然不知道他们在做什么,因为他们应该将他们的私钥保密!将它发布给任何人、传输它,都会使身份验证安全面临风险,并且几乎否定了任何安全措施。我不知道你想做什么,但你确定这是要走的路吗? 在下面的答案 cmets 中,您正在谈论在 php 中实现这一点,但是您在问题中没有提到 PHP。你能具体说明/详细说明吗?另外,它是在本地执行的 PHP 脚本吗,因为您正试图让它克隆一个 repo 到(本地?)计算机!? 【参考方案1】:

寻找的不是 git,而是 SSH。您需要在 .ssh/authorized_keys 文件中指定密钥,即公钥 btw。私钥将存储在用户机器上。

【讨论】:

非常感谢您的回答。我已经看到 SmartGit(OS X 应用程序)使用它自己的 SSH 客户端来连接存储库。如何创建自己的 SSH 客户端(ps 它是一个 PHP 应用程序)? @Goran 公钥由 SSH 服务器检查。您可以在一些现有的 SSH 客户端上构建:en.wikipedia.org/wiki/Comparison_of_SSH_clients 恐怕你没听懂我的意思。在 SmartGit 应用程序中,您只需选择一个私钥并输入密码,它就会自动连接到 git 存储库。这正是我想要编写的代码,但在 PHP Web 应用程序中......你能帮我吗? @Goran 但是你不需要 ssh 客户端,git 就足够了。这是如何工作的:git client -> ssh client -> INTERNET -> ssh server -> git server @ Let_Me_Be 但是,我仍然不知道如何使用不在默认位置的私钥登录 git repo(假设它在 /mykeys 文件夹中,我没有复制/移动的权限它)...

以上是关于如何使用私钥克隆 GIT 存储库的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Docker 容器克隆 Git 存储库

如何将 Xcode 与克隆的 git 存储库一起使用

如何使用 Python 和 PyGithub/GitPython 克隆我的 git 存储库?

git - 如何克隆本地 svn 存储库?

如何 git-svn 从 Subversion 存储库克隆最后 n 个修订?

使用`--depth 1`克隆存储库后如何获取所有git历史记录?