🔐 服务器部署最佳实践:为什么每台机器都该有自己的 SSH 密钥?
🔑 一、关于 SSH 密钥:你应该在哪里生成?
❌ 常见错误做法
- 在本地电脑生成一对密钥(如
~/.ssh/id_ed25519) - 把私钥
scp拷贝到 server1、server2、server3…… - 所有服务器共用同一把'钥匙'
这非常危险!
- 一旦某台服务器被入侵,你的 GitHub 账户就暴露了
- 无法精准吊销单台服务器的访问权限
- 违反'最小权限原则'
✅ 正确做法:在每一台目标服务器上分别生成专属 SSH 密钥
为什么?
- 每台服务器是独立的运行环境
- 你不应该(也不需要)把本地私钥分发到生产服务器
- GitHub 的 Deploy Key 机制天然支持多公钥绑定(一个仓库可添加数十个 Deploy Key)
📌 Deploy Key 是 GitHub 提供的专用于仓库只读/读写访问的 SSH 公钥,不关联用户账户,权限粒度精确到单个仓库。
🛠️ 二、为什么不要用 HTTPS + Token 方式?
你可能尝试过:
git config --global http.sslBackend openssl
却收到报错:
fatal: Unsupported SSL backend 'openssl'. Supported SSL backends: gnutls
❌ 原因分析
- 你的系统(如 Ubuntu/Debian)安装的 Git 是用 GnuTLS 编译的,不支持 OpenSSL 后端
- 即使强行重编译 Git,HTTPS 方式仍需管理 Personal Access Token(PAT)
- Token 有有效期、权限粒度粗、难以自动化轮换
✅ 更优解:直接切换到 SSH
- 无需处理 TLS 库兼容性问题
- 认证过程更稳定、更快
- 配合 Deploy Key,实现仓库级权限隔离


这样选择 repo 生成一个 key 也是一种方法,拿到 key 之后,可以采用:





