GitHub 私有仓库服务器 SSH 密钥部署指南
介绍在多台服务器上安全部署 GitHub 私有仓库的最佳实践。通过为每台服务器生成独立的 SSH 密钥并绑定为 GitHub Deploy Key,替代易出错的 HTTPS Token 方式,实现权限隔离与安全认证。步骤包括生成密钥、配置 SSH Client、设置文件权限及测试连接,确保自动化部署的稳定性和安全性。

介绍在多台服务器上安全部署 GitHub 私有仓库的最佳实践。通过为每台服务器生成独立的 SSH 密钥并绑定为 GitHub Deploy Key,替代易出错的 HTTPS Token 方式,实现权限隔离与安全认证。步骤包括生成密钥、配置 SSH Client、设置文件权限及测试连接,确保自动化部署的稳定性和安全性。

~/.ssh/id_ed25519)scp 拷贝到 server1、server2、server3……这非常危险!
📌 Deploy Key 是 GitHub 提供的专用于仓库只读/读写访问的 SSH 公钥,不关联用户账户,权限粒度精确到单个仓库。
你可能尝试过:
git config --global http.sslBackend openssl
却收到报错:
fatal: Unsupported SSL backend 'openssl'. Supported SSL backends: gnutls


这样选择 repo 生成一个 key 也是一种方法,拿到 key 之后,可以采用:
git clone https://username:[email protected]/XXXX/XXX.git
假设你要在一台名为
star-server的机器上部署 XXXXXX 项目
# 登录到目标服务器后执行(建议用普通用户,非 root)
ssh-keygen -t ed25519 -C "star-server-deploy" -f ~/.ssh/id_ed25519_github_XXXXXX
# 一路回车(不设置密码,便于自动化)
💡 使用
-f指定文件名,避免覆盖默认密钥;-C添加注释便于识别。
cat ~/.ssh/id_ed25519_github_XXXXXX.pub
复制输出内容,然后:
https://github.com/XXXXX/XXXXXXstar-server(自定义,用于区分)✅ Allow write access(如果你后续需要 git pull 或 git push)



⚠️ 注意:Deploy Key 默认只有读权限,勾选 'Allow write access' 才能推送。
nano ~/.ssh/config
添加以下内容:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_rankground
IdentitiesOnly yes
PreferredAuthentications publickey
保存退出(Ctrl+O → Enter → Ctrl+X)
✨
IdentitiesOnly yes确保 SSH 只使用指定密钥,避免其他密钥干扰。
SSH 对权限非常敏感,错误的权限会导致认证失败:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519_github_rankground # 私钥必须仅 owner 可读写
chmod 644 ~/.ssh/id_ed25519_github_rankground.pub # 公钥可读
chmod 600 ~/.ssh/config
ssh -T [email protected]
成功时会显示:
Hi XXXXXXX! You've successfully authenticated, but GitHub does not provide shell access.
✅ 认证通过!
git clone [email protected]:XXXXXX/XXXXX.git
从此,这台服务器可以自由拉取(甚至推送)代码,无需密码、token 或交互。
假设你有 5 台服务器:web-01, web-02, worker-a, worker-b, staging
| 服务器 | 操作 |
|---|---|
| web-01 | 生成密钥 → GitHub Deploy Key (Title: web-01) |
| web-02 | 生成密钥 → GitHub Deploy Key (Title: web-02) |
| worker-a | 生成密钥 → GitHub Deploy Key (Title: worker-a) |
| ... | ... |
'每台服务器,一把钥匙;一个仓库,多个入口。'
通过为每台服务器生成独立 SSH 密钥并绑定为 GitHub Deploy Key,你不仅解决了 Git 认证问题,更构建了一个安全、可审计、易维护的部署体系。
这不仅是技术选择,更是工程素养的体现。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online