在 Git 中使用 SSH 密钥克隆仓库或分支

Ankit Raj Goyal 2023年1月30日
  1. 什么是 SSH
  2. 为什么使用 SSH 密钥克隆 Git
  3. 在 Git 中使用 SSH 密钥克隆仓库
  4. 使用选项扩展 Git 克隆 SSH
在 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

生成 ssh 密钥

它将提示你输入密码以保护对客户端计算机上密钥的访问 - 你可以选择将其留空,或输入你喜欢的密码。

专业提示:输入密码时不会显示任何字符。这是为了隐藏密码的长度并增加安全性。

专业提示 2:在某处写下你的密码。如果你忘记了它,你将无法恢复你的访问权限。

我们在这里保留 ssh key-gen 命令的默认值,但我们也可以传入不同的选项——我们想要的加密算法(例如 ed2559)、标签、保存密钥的特定位置。

检查保存的 SSH 密钥对

我们检查我们的 SSH 密钥是否生成并正确保存。

ls -al ~/.ssh

检查 ssh 密钥

密钥存储在你机器的 .ssh 文件夹中。id_rsa 文件保存私钥,而 id_rsa.pub 保存你的公钥。

如果你在输出中看到这两个文件,则你已成功创建并保存了一个 SSH 密钥对。

将 SSH 密钥添加到 SSH 代理

我们将 SSH 代理作为后台进程启动。

eval "$(ssh-agent -s)"

启动 ssh 代理

我们看到代理作为后台进程 970 运行。我们将 SSH 私钥添加到 SSH 代理。

ssh-add ~/.ssh/id_rsa

添加私钥 sshagent

代理确认它已使用消息 Identity added : <path_to_private_key 添加了私钥。

将公钥添加到远程 GitHub 帐户

将公钥复制到剪贴板。

clip < ~/.ssh/id_rsa.pub

专业提示:始终复制 PUBLIC 键。切勿与任何人共享你的 PRIVATE 密钥。

  1. 转到你的 GitHub 帐户。
  2. 点击个人资料图片
  3. 从下拉菜单中选择设置

github 设置

  1. 点击左侧栏中的 SSH and GPG Keys

选择 ssh 和 gpg 密钥

  1. 点击右上角的 New SSH Key

新的 ssh 键单击

  1. 添加描述,并将 PUBLIC 键粘贴到 Key 字段中。

公共 sshkey 粘贴到 github

你现在已经成功地使用你的 GitHub 帐户识别了你的 SSH 代理。

测试与 GitHub 的 SSH 连接

我们测试与 GitHub 的 SSH 连接。

ssh -T git@github.com

测试 ssh 连接

该消息确认你已成功通过身份验证。

在 Git 中使用 SSH 密钥克隆仓库

接下来,我们使用 SSH 克隆我们的远程仓库。

  1. 复制你的仓库的 SSH URL

GitHub 的仓库中,单击右上角的代码绿色按钮。

单击 SSH 以显示你的 SSH URL。复制此 SSH URL。

复制 ssh 网址

  1. Git 终端中的 Git Clone SSH

在 Git 终端中使用 SSH 克隆远程。

git clone <remote_repo_ssh_url>

<remote_repo_ssh_url> 是你在上面复制的 URL。

git 克隆 ssh

你已使用 SSH 密钥在 Git 中成功克隆了一个仓库。

使用选项扩展 Git 克隆 SSH

你可能需要针对你的用例使用特定类型的克隆。你可以使用一些选项通过 SSH 扩展 Git 克隆。

  1. Git Clone SSH Only 一个特定的分支

要使用 SSH 密钥仅克隆一个分支:

git clone --branch <branch_to_clone> <remote_repo_ssh_url>

git clone 特定分支

这在大型仓库的情况下非常有用。为了节省本地机器上的时间和空间,你可能只想克隆你工作的分支或只克隆几个感兴趣的分支。

  1. 使用 SSH 密钥将 Git 克隆到特定位置

你可能希望克隆到特定文件夹以保持本地目录结构井井有条。

克隆到特定位置:

git clone <remote_repo_ssh_url> <specific_location_local>

git clone 具体位置

  1. 使用 SSH 密钥进行浅层 Git 克隆 - 仅克隆少量提交

对于大型仓库,你可能希望减少克隆时间或节省本地磁盘空间。你可以通过仅克隆最后几个提交的选定集来做到这一点。

只克隆几个最近的提交:

git clone --depth=<n> <remote_repo_ssh_url>

这里 <n> 是你要克隆的最近提交的数量。

例如,如果 n = 2,它将仅克隆最后两个提交。

git 浅克隆 ssh

相关文章 - Git Clone