跳到主要内容

SSH 公钥用于 Git 服务身份验证

使用 SSH 协议与 Git Server 可以进行安全的通信 (安全性);并且,使用 SSH 密钥访问 Git 远程服务器进行身份验证,无需每次都输入用户名和密码 (便捷性)。

准备

  1. 选择一个 Git Server 并注册账号
  2. 在支持 SSH 协议的终端中创建密钥对

在客户端复制公钥

  • Windows: clip < ~/.ssh/your_ed25519_or_rsa.pub
  • Mac: pbcopy < ~/.ssh/your_ed25519_or_rsa.pub
  • Linux: cat ~/.ssh/your_ed25519_or_rsa.pub

以 Github 为例配置 SSH 密钥

打开 Github Git Server 站点,右上角用户头像 → SettingsSSH and GPG keysNew SSH key (https://github.com/settings/ssh/new),输入 Title 和复制公钥进 Key 之后 ‘Add SSH key’ 提交即可 (Key type 默认为 Authentication Key)。

Title 命名规则建议为 (包括但不限于):

  • <创建设备所属>_<创建设备型号>_<创建设备系统类型>_<用户信息>
  • <资产编号>_<系统类型>_<用户信息>

这样能大概知道该公钥的基本信息。

其他 Git Server 站点 SSH 配置大同小异,入口大都在‘右上角用户头像’。

测试 SSH 连接

  • 验证客户端公钥指纹:
    • SHA256 算法指纹:ssh-keygen -lf ~/.ssh/your_ed25519_or_rsa.pub
    • MD5 算法指纹:ssh-keygen -E md5 -lf ~/.ssh/your_ed25519_or_rsa.pub
  • ssh -T [email protected]
  • 第一次连接服务器时, SSH 会提示是否信任连接的主机,并返回了服务器的公钥指纹信息,可以对比客户端上的公钥指纹,以确定是否有中间人攻击
  • 如无误输入 yes 确认
  • 如无异常,提示“Hi username! You've successfully authenticated, but GitHub does not provide shell access.”

Questions

  1. 如何为不同 Git Server 配置和启动不同账号和不同密钥? (SSH Config)

Resources