通过GitHub使用不同SSH密钥部署多应用的问题排查与解决
指定特定SSH密钥克隆代码的方法
临时指定密钥克隆
直接在克隆命令中通过GIT_SSH_COMMAND指定密钥文件路径,适合单次操作:
GIT_SSH_COMMAND="ssh -i /home/your-user/.ssh/frontend-key" git clone git@github.com:your-username/frontend-repo.git
持久化配置(通过SSH Config)
通过配置~/.ssh/config,让特定仓库自动匹配指定密钥,步骤如下:
- 创建或编辑SSH配置文件,确保权限安全:
touch ~/.ssh/config && chmod 600 ~/.ssh/config - 在文件中添加前端仓库的专属配置:
Host github-frontend HostName github.com User git IdentityFile ~/.ssh/frontend-key IdentitiesOnly yes # 强制使用指定密钥,避免自动尝试其他密钥 - 后续操作前端仓库时,使用自定义Host别名即可自动匹配密钥:
git clone git@github-frontend:your-username/frontend-repo.git
更简便的多应用SSH部署方案
方案1:使用GitHub个人访问令牌(PAT)
放弃SSH密钥,改用HTTPS协议克隆,用PAT作为认证凭据:
- 在GitHub设置的「Developer settings」→「Personal access tokens」生成带仓库读写权限的PAT
- 克隆命令示例:
git clone https://your-pat-here@github.com/your-username/repo.git
一个PAT可授权访问多个仓库,无需处理密钥冲突,管理更简单。
方案2:使用机器用户
创建专门的GitHub机器用户,给该用户分配前后端仓库的访问权限,生成一个SSH密钥绑定到机器用户账户(而非仓库部署密钥)。服务器使用这个密钥即可同时访问两个仓库,不用为每个仓库单独生成密钥。
方案3:SSH代理转发
如果本地机器已持有能访问两个仓库的SSH密钥,可通过代理转发让服务器复用本地密钥:
- 连接服务器时添加
-A参数开启代理转发:ssh -A your-user@your-vultr-ip - 服务器上克隆仓库时,会自动使用本地机器的SSH密钥完成认证,无需在服务器存储多份密钥。
内容的提问来源于stack exchange,提问作者Yusuf ÇAKIRCA
相关产品推荐
相关产品推荐

