如何创建 Git SSH 密钥
什么是 SSH 密钥?
SSH 密钥是 SSH(安全外壳)网络协议的访问凭证。这种经过身份验证和加密的安全网络协议用于不安全的开放网络上的机器之间的远程通信。SSH 用于远程文件传输、网络管理和远程操作系统访问。SSH 首字母缩写词还用于描述一组用于与 SSH 协议交互的工具。
SSH 使用一对密钥来启动与远程方之间的安全握手。密钥对包含公钥和私钥。私有与公有的命名方式可能会令人困惑,因为它们都被称为密钥。将公钥视为“锁”,将私钥视为“钥匙”可能会更清晰。将公共“锁”提供给远程方以加密或“锁定”数据。然后使用保存在安全位置的“私人”密钥打开此数据。
如何创建 SSH 密钥
SSH 密钥是通过公钥加密算法生成的,最常见的是RSA或DSA。在非常高的层次上,SSH 密钥是通过一个数学公式生成的,该公式采用 2 个素数和一个随机种子变量来输出公钥和私钥。这是一种单向公式,可确保公钥可以从私钥导出,但私钥不能从公钥导出。
SSH 密钥是使用密钥生成工具创建的。SSH 命令行工具套件包括一个密钥生成工具。大多数 git 托管提供商提供有关如何创建 SSH 密钥的指南。
在 Mac 和 Linux 上生成 SSH 密钥
OsX 和 Linux 操作系统都有全面的现代终端应用程序,这些应用程序安装了 SSH 套件。它们之间创建 SSH 密钥的过程是相同的。
执行以下命令开始创建密钥
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
此命令将使用电子邮件作为标签创建一个新的 SSH 密钥
然后会提示“输入要保存密钥的文件”
。
我们可以指定文件位置或按“Enter”接受默认文件位置。
> Enter a file in which to save the key (/root/.ssh/id_rsa): [Press enter]
下一个提示将要求输入安全密码
> Enter passphrase (empty for no passphrase):
> Enter same passphrase again:
密码将为 SSH 添加额外的安全层,并且在使用 SSH 密钥的任何时候都需要。如果有人可以访问存储私钥的计算机,他们也可以访问使用该密钥的任何系统。向密钥添加密码将防止出现这种情况。
此时,新的 SSH 密钥将在之前指定的文件路径处生成。
下面将新的 SSH 密钥添加到 ssh-agent。
ssh-agent 是另一个程序,它是 SSH 工具套件的一部分。ssh-agent 负责保存私钥。可以把它想象成一个钥匙扣。除了持有私钥之外,它还代理使用私钥签署 SSH 的访问请求,保证私钥永远不会不安全地传递。
在将新的 SSH 密钥添加到 ssh-agent 之前,首先通过执行以下命令确保 ssh-agent 正在运行:
$ eval "$(ssh-agent -s)"
> Agent pid 10157
一旦 ssh-agent 运行,以下命令会将新的 SSH 密钥添加到本地 SSH 代理。
$ ssh-add -K /Users/you/.ssh/id_rsa
新的 SSH 密钥现已注册并可以使用!
在 Windows 上生成 SSH 密钥
Windows 环境没有标准的默认 unix shell。需要安装外部 shell 程序才能获得完整的密钥生成体验。最直接的选择是使用Git Bash。安装 Git Bash 后,可以在 Git Bash shell 中遵循适用于 Linux 和 Mac 的相同步骤。