SSH 公钥用于 Git 服务身份验证
使用 SSH 协议与 Git Server 可以进行安全的通信 (安全性);并且,使用 SSH 密钥访问 Git 远程服务器进行身份验证,无需每次都输入用户名和密码 (便捷性)。
准备
- 选择一个 Git Server 并注册账号
- 在支持 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 站点,右上角用户头像 → Settings
→ SSH and GPG keys
→ New SSH key
(https://github.com/settings/ssh/new),输入 Title 和复制公钥进 Key 之后 ‘Add SSH key’ 提交即可 (Key type 默认为 Authentication Key)。
Title 命名规则建议为 (包括但不限于):
<创建设备所属>_<创建设备型号>_<创建设备系统类型>_<用户信息>
<资产编号>_<系统类型>_<用户信息>
这样能大概知道该公钥的基本信息。
其他 Git Server 站点 SSH 配置大同小异,入口大都在‘右上角用户头像’。
- Gitlab:
Preferences
→SSH Keys
- Bitbucket:
Personal settings
→SSH and GPG keys
- 阿里云 Codeup:
个人设置
→SSH 公钥
测试 SSH 连接
- 验证客户端公钥指纹:
- SHA256 算法指纹:
ssh-keygen -lf ~/.ssh/your_ed25519_or_rsa.pub
- MD5 算法指纹:
ssh-keygen -E md5 -lf ~/.ssh/your_ed25519_or_rsa.pub
- SHA256 算法指纹:
ssh -T [email protected]
- 第一次连接服务器时, SSH 会提示是否信任连接的主机,并返回了服务器的公钥指纹信息,可以对比客户端上的公钥指纹,以确定是否有中间人攻击
- 如无误输入
yes
确认 - 如无异常,提示“Hi username! You've successfully authenticated, but GitHub does not provide shell access.”
Questions
- 如何为不同 Git Server 配置和启动不同账号和不同密钥? (SSH Config)