配置第二套Git环境:解决SSH密钥切换引发的GitLab克隆权限问题
解决多SSH密钥切换访问GitLab的问题
我来帮你搞定这个SSH密钥切换的问题!你遇到的情况非常常见——当本地同时存在多个对应不同Git服务的SSH密钥时,Git默认只会尝试使用第一个找到的密钥,这就导致它拿着GitHub的密钥去连GitLab,自然会被拒绝。下面是具体的解决步骤,一步步来就行:
1. 创建/编辑SSH配置文件
SSH允许通过配置文件来为不同的Git服务指定对应的密钥,这样就能自动区分使用哪组密钥了。
- 打开终端(Windows用Git Bash或者PowerShell),编辑
~/.ssh/config文件(如果这个文件不存在就直接创建):nano ~/.ssh/config - 在文件里添加以下内容(根据你的实际信息替换占位符):
简单解释:# GitHub配置(原有的个人密钥) Host github.com HostName github.com User git IdentityFile ~/.ssh/你的GitHub密钥文件名(比如id_rsa) IdentitiesOnly yes # 公司GitLab配置(新的工作密钥) Host your-gitlab-domain.com # 替换成你们公司GitLab的域名,比如gitlab.company.com HostName your-gitlab-domain.com User git IdentityFile ~/.ssh/你的GitLab密钥文件名(比如id_rsa_gitlab) IdentitiesOnly yesHost是自定义别名,后续操作仓库时可以直接用它代替域名IdentityFile指定对应服务要使用的私钥文件路径IdentitiesOnly yes强制SSH只使用这里指定的密钥,避免自动尝试其他密钥
2. 设置配置文件的权限
SSH对配置文件的权限要求很严格,必须确保只有你自己能读写,否则会报错:
chmod 600 ~/.ssh/config
如果是Windows系统,右键点击config文件 → 属性 → 安全 → 高级,删除其他用户的权限,只保留你自己的“读取”和“写入”权限。
3. 测试GitLab连接
配置好后,先测试一下是否能正常连接到公司的GitLab:
ssh -T git@your-gitlab-domain.com
如果看到类似Welcome to GitLab, @你的工作用户名!的提示,说明连接成功了。
4. 克隆GitLab项目
现在克隆项目的时候,直接用GitLab的SSH地址就行,SSH会自动根据配置文件选择对应的密钥。比如:
git clone git@your-gitlab-domain.com:团队名/项目名.git
如果之前已经尝试克隆过失败的仓库,记得先删除本地的错误仓库,再重新克隆。
额外:清除旧密钥缓存(如果需要)
如果之前SSH agent缓存了旧的密钥,可能会影响新配置的生效,可以先清除缓存再添加新密钥:
# 清除所有缓存的密钥 ssh-add -D # 添加GitLab的密钥到缓存 ssh-add ~/.ssh/你的GitLab密钥文件名
这样操作之后,你的电脑就能自动区分GitHub和公司GitLab的密钥,不会再出现权限拒绝的问题啦!
内容的提问来源于stack exchange,提问作者matthewmarshdev




