在共享服务器克隆GitHub仓库且不泄露个人所有仓库权限的方法
解决方案
方案1:HTTPS + 个人访问令牌(PAT)(优先推荐,符合个人账号独立操作的需求)
该方案完全替代旧版HTTPS账号密码验证逻辑,无需在服务器存放任何个人SSH私钥,权限和个人GitHub账号绑定,不会泄露全账号权限。
操作步骤:
- 每位贡献者在个人GitHub账号后台生成专属PAT:进入个人设置→开发者设置→个人访问令牌→Tokens (classic),生成时仅勾选
repo权限即可,有效期可按需设置,建议定期更换。 - 克隆仓库时直接使用仓库的HTTPS链接:
git clone https://github.com/<用户名>/<仓库名>.git,弹出验证提示时,用户名填写个人GitHub账号名,密码填写刚刚生成的PAT。 - 如需避免每次操作重复输入验证信息,可在当前服务器用户的Git配置中开启凭证缓存:执行
git config --global credential.helper store,首次输入后凭证会存储在当前用户家目录的.git-credentials文件中,仅对当前服务器用户可见,不会泄露给其他服务器用户。
注意:PAT的权限仅对应你勾选的范围,仅勾选
repo的前提下就算PAT泄露,对方也仅能访问你账号有权限的仓库,无法操作账号其他功能,风险远低于上传个人SSH私钥,且可随时在GitHub后台主动撤销指定PAT的权限。
方案2:仓库部署密钥(Deploy Key)(实现SSH密钥仅对单个仓库生效)
该方案为官方支持的单仓库SSH权限方案,无需注册额外账号,可按需分配读写权限。
操作步骤:
- 在共用服务器上生成专用SSH密钥,不要和个人SSH密钥混用:
ssh-keygen -t ed25519 -C "repo-deploy-key@<服务器标识>",生成时可按需设置密钥密码。 - 打开目标GitHub仓库的设置页面,找到「部署密钥(Deploy keys)」选项,点击「添加部署密钥」,将生成的公钥(.pub后缀文件内容)粘贴到输入框中,仅需拉取代码则不要勾选「允许写入权限」,需要推送代码时再勾选即可。
- 配置完成后,可访问该服务器上对应私钥的用户,均可通过SSH地址操作该目标仓库,该密钥没有任何其他仓库的访问权限,就算泄露也不会影响其他仓库安全。
注意:如需区分不同人的操作权限,可为每位贡献者单独生成部署密钥并添加到仓库,每个部署密钥可单独设置读写权限,也可随时单独撤销,无需共享私钥。
内容的提问来源于stack exchange,提问作者Tony Bai
相关产品推荐
相关产品推荐

