You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置第二套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 yes
    
    简单解释:
    • Host是自定义别名,后续操作仓库时可以直接用它代替域名
    • 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

火山引擎 最新活动