You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH远程连接开发机后无法推拉GitLab:Permission denied(publickey)问题求助

问题分析与解决

核心问题定位

从ssh git@gitlab.com -T -vvv的调试日志差异可直接找到根源:

  • 开发机本地操作时,SSH Agent(密钥代理)已启动并加载了有效ED25519密钥(日志中debug2: key: some_user@some_place.com (0x55........), agent行可证明),因此能正常完成GitLab认证。
  • 远程连接开发机后,当前会话未加载任何有效密钥:既没有继承开发机本地的SSH Agent进程,也没有通过Agent转发本地机器的密钥;同时尝试读取的/home/xxx/.ssh/id_rsa不存在或无效,导致没有可用密钥提交给GitLab,最终触发Permission denied (publickey)错误。

解决方法

方法1:在开发机会话中手动启动并加载SSH Agent

远程连接开发机后执行以下步骤:

  1. 检查SSH Agent是否运行:
    echo $SSH_AUTH_SOCK
    
    无输出则说明Agent未启动,手动启动:
    eval "$(ssh-agent -s)"
    
  2. 将开发机本地的有效密钥添加到Agent:
    ssh-add /home/xxx/.ssh/id_ed25519
    
    (替换为你实际的密钥路径,如RSA密钥则用id_rsa)
  3. 测试连接有效性:
    ssh git@gitlab.com -T
    
    输出Welcome to GitLab, @xxx!即为成功。

方法2:启用SSH Agent转发(复用本地机器密钥)

若希望远程连接时直接使用本地机器的SSH密钥,无需在开发机重复配置:

  1. 终端发起SSH连接时添加-A参数:
    ssh -A xxx@开发机IP
    
  2. VS Code远程连接配置:修改本地~/.ssh/config,给开发机条目添加ForwardAgent yes:
    Host dev-machine
        HostName 开发机IP
        User xxx
        ForwardAgent yes
    
    保存后重新连接VS Code,即可自动转发本地Agent的密钥到开发机会话。

方法3:修复开发机SSH密钥权限(避免权限过高被拒绝)

若开发机本地密钥存在但未被识别,可能是权限不符合SSH要求:

  1. 修改.ssh目录权限:
    chmod 700 ~/.ssh
    
  2. 修改密钥文件权限:
    chmod 600 ~/.ssh/id_ed25519
    
    SSH要求密钥文件权限不能高于600,否则会拒绝加载。

内容的提问来源于stack exchange,提问作者Sterling Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:23:33