一. 前言
昨天在使用 Mac 电脑上传本地代码到 github 网站时,发现无法使用 SSH 进行链接,原因是没有配置私钥和公钥对。当配置完成后,私钥保存在本地电脑上,公钥保存在 github 远程仓库,以此建立本地主机和远程 github 仓库的一一链接关系,这样每次在上传代码时便不需要每次进行用户名和密码的登录。此外,如果不采用 SSH 链接到远程仓库,而采用 HTTP 链接到远程仓库,每次都需要输入用户名和密码,非常麻烦。因此,配置 SSH 的私钥和公钥对还是非常有必要的。
注:接下来的配置步骤参考主要基于 Github配置ssh key的步骤(大白话+包含原理解释。
二. 配置步骤
1. 使用秘钥生成工具生成 RSA 秘钥和公钥
a. 检查本地主机中是否已经存在 SSH Key
cd ~/.ssh
ls
检查是否已经存在 id_rsa 和 id_rsa.pub 文件,如果这两个文件存在于您的 ~/.ssh 目录下(在Unix/Linux系统中,默认的SSH密钥存储位置),那么这意味着您已经有了用于SSH认证的一套密钥,其中 id_rsa 是您的私钥,而 id_rsa.pub 是对应的公钥。拥有这些文件即表明您可能已经为无密码 SSH 登录或者其他依赖 SSH 密钥认证的服务(比如Git访问远程仓库)做好了准备。
如果存在,直接跳到步骤 c.
b. 如果不存在 SSH Key,需要生成 SSH Key
ssh-keygen -t rsa -C "xxx@xxx.com"
这里的邮箱可以是注册 github 时用的邮箱,也可以不是,我理解就是只需要一个配对的私钥和公钥对即可。具体我查阅了通义千问,粘贴如下供大家参考。
在生成SSH密钥对并将其配置到GitHub时,生成密钥的过程中提供的电子邮件地址并不强制要求必须是与GitHub账户关联的主邮箱地址,尽管这样做有助于识别密钥所属的用户。ssh-keygen命令中的 -C 参数是为了在生成的密钥注释部分记录电子邮件地址信息,便于后期管理多个密钥时进行区分。
例如,当你运行 ssh-keygen -t rsa -C "[email protected]" 时,[email protected] 可以是你任何有效的电子邮件地址。然而,为了最佳实践和清晰管理,在GitHub上使用的SSH密钥对应注释部分使用GitHub账户的邮箱地址是比较推荐的做法。
重要的是,无论使用哪个邮箱地址生成SSH密钥,关键在于将生成的公钥(即 id_rsa.pub 文件内容)正确地添加到GitHub账户的SSH密钥列表中。只要GitHub能够验证你的私钥与你在其服务器上配置的公钥匹配,你就可以通过SSH协议顺利地进行身份验证和访问GitHub仓库。
c. 获取ssh key公钥内容(id_rsa.pub)
cd ~/.ssh
cat id_rsa.pub
cat打印出来之后,复制对应的公钥。
2. 将 RSA 公钥添加到代码托管平台
进入 github 主页,按照下图依次点击 Settings -> SSH and GPC Keys -> New SSH
key,然后将刚才复制的公钥粘贴进去即完成配置。
三. 验证步骤
在终端或者 iTerm 中输入以下命令进行验证:
ssh -T git@github.com
如果显示如下信息,则表示配置成功。
三. 原理
配置 SSH 私钥和公钥,私钥保存在自己的主机,公钥保存在远程 github 仓库,这样就相当于自己的主机和远程的 github 仓库建立了一一对应的链接,那么下次我们在用这台主机链接远程的 github 时,便不需要进行用户名和密码验证,便可以证明我们的身份。这样配置一次,便省去了后续好多次的身份验证操作。