在 Git 中使用 SSH 密钥克隆仓库或分支
SSH Git 克隆提供了一种克隆远程仓库的安全方法。本教程展示了使用 SSH 密钥进行 Git 克隆的完整方法 - 如何生成 SSH 密钥、在 Git 中设置 SSH 以及使用 SSH 密钥进行 Git 克隆。
我们还展示了一些有用的选项来扩展该功能 - 只克隆一个分支,克隆到选定的目录,或者只克隆一些大型仓库的提交。
什么是 SSH
SSH 或安全 shell 协议是一种网络协议,用于在不安全的网络上使用安全服务。它使用公钥-私钥对 - 只有你在将公钥发送到你要使用的服务时才能访问你的私钥。
任何用你的公钥加密的数据只能用你的私钥打开,反之亦然。
为什么使用 SSH 密钥克隆 Git
SSH Git Clone 提供了一种通过不安全的公共网络安全地克隆远程仓库的简单方法。
如果你使用 SSH 密钥进行 Git 克隆,则不必每次都重新输入密码来向远程服务器表明自己的身份。一旦服务器对 SSH 代理进行身份验证,它就会记住详细信息 - 你不必每次都重新输入 SSH 密钥。
生成 SSH 密钥对
我们使用 ssh key-gen
命令生成一个 SSH 公私密钥对。
ssh key-gen
它将提示你输入密码以保护对客户端计算机上密钥的访问 - 你可以选择将其留空,或输入你喜欢的密码。
专业提示:输入密码时不会显示任何字符。这是为了隐藏密码的长度并增加安全性。
专业提示 2:在某处写下你的密码。如果你忘记了它,你将无法恢复你的访问权限。
我们在这里保留 ssh key-gen
命令的默认值,但我们也可以传入不同的选项——我们想要的加密算法(例如 ed2559)、标签、保存密钥的特定位置。
检查保存的 SSH 密钥对
我们检查我们的 SSH 密钥是否生成并正确保存。
ls -al ~/.ssh
密钥存储在你机器的 .ssh
文件夹中。id_rsa
文件保存私钥,而 id_rsa.pub
保存你的公钥。
如果你在输出中看到这两个文件,则你已成功创建并保存了一个 SSH 密钥对。
将 SSH 密钥添加到 SSH 代理
我们将 SSH 代理作为后台进程启动。
eval "$(ssh-agent -s)"
我们看到代理作为后台进程 970
运行。我们将 SSH 私钥添加到 SSH 代理。
ssh-add ~/.ssh/id_rsa
代理确认它已使用消息 Identity added : <path_to_private_key
添加了私钥。
将公钥添加到远程 GitHub 帐户
将公钥复制到剪贴板。
clip < ~/.ssh/id_rsa.pub
专业提示:始终复制 PUBLIC
键。切勿与任何人共享你的 PRIVATE
密钥。
- 转到你的
GitHub
帐户。 - 点击
个人资料图片
。 - 从下拉菜单中选择
设置
。
- 点击左侧栏中的
SSH and GPG Keys
。
- 点击右上角的
New SSH Key
。
- 添加描述,并将
PUBLIC
键粘贴到Key
字段中。
你现在已经成功地使用你的 GitHub 帐户识别了你的 SSH 代理。
测试与 GitHub 的 SSH 连接
我们测试与 GitHub 的 SSH 连接。
ssh -T git@github.com
该消息确认你已成功通过身份验证。
在 Git 中使用 SSH 密钥克隆仓库
接下来,我们使用 SSH 克隆我们的远程仓库。
- 复制你的仓库的 SSH URL
在 GitHub
的仓库中,单击右上角的代码
绿色按钮。
单击 SSH
以显示你的 SSH URL。复制此 SSH URL。
- Git 终端中的 Git Clone SSH
在 Git 终端中使用 SSH 克隆远程。
git clone <remote_repo_ssh_url>
<remote_repo_ssh_url>
是你在上面复制的 URL。
你已使用 SSH 密钥在 Git 中成功克隆了一个仓库。
使用选项扩展 Git 克隆 SSH
你可能需要针对你的用例使用特定类型的克隆。你可以使用一些选项通过 SSH 扩展 Git 克隆。
- Git Clone SSH Only 一个特定的分支
要使用 SSH 密钥仅克隆一个分支:
git clone --branch <branch_to_clone> <remote_repo_ssh_url>
这在大型仓库的情况下非常有用。为了节省本地机器上的时间和空间,你可能只想克隆你工作的分支或只克隆几个感兴趣的分支。
- 使用 SSH 密钥将 Git 克隆到特定位置
你可能希望克隆到特定文件夹以保持本地目录结构井井有条。
克隆到特定位置:
git clone <remote_repo_ssh_url> <specific_location_local>
- 使用 SSH 密钥进行浅层 Git 克隆 - 仅克隆少量提交
对于大型仓库,你可能希望减少克隆时间或节省本地磁盘空间。你可以通过仅克隆最后几个提交的选定集来做到这一点。
只克隆几个最近的提交:
git clone --depth=<n> <remote_repo_ssh_url>
这里 <n>
是你要克隆的最近提交的数量。
例如,如果 n = 2
,它将仅克隆最后两个提交。