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

如何为不同用户名配置Git的SSH代理转发?

解决方案

1. 显式启用代理转发登录服务器

先尝试用-A参数强制开启代理转发登录other用户,验证是否是配置加载问题:

ssh -A other@box 'git clone git@server:org/repo.git'

如果此命令成功,说明你的本地~/.ssh/config未被正确加载。检查本地配置文件权限必须为600(执行chmod 600 ~/.ssh/config修复),同时确认Host *规则覆盖了目标服务器。

2. 检查服务器端sshd代理转发配置

登录服务器,查看/etc/ssh/sshd_config文件,确认存在AllowAgentForwarding yes(默认开启,但可能被修改)。若该选项为no,修改后重启sshd服务(如systemctl restart sshd)。

3. 验证other用户会话的代理环境

登录other@box后,执行以下命令确认代理转发是否生效:

echo $SSH_AUTH_SOCK
ssh-add -L

若SSH_AUTH_SOCK为空,或ssh-add -L未输出你的密钥,说明代理转发未成功。需进一步检查:

  • 本地ssh-agent是否正常运行(可执行ssh-add -l验证本地密钥存在)
  • other用户的~/.ssh/config是否存在Host * ForwardAgent no这类覆盖规则

4. 修复other用户的~/.ssh目录权限

SSH对目录权限要求严格,错误权限会导致代理或密钥失效。执行以下命令修复:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

确保~/.ssh目录仅other用户可读写,内部文件权限符合要求。

5. 强制Git使用转发代理

若以上步骤无效,可在克隆时显式指定SSH命令,强制使用转发代理:

ssh other@box 'GIT_SSH_COMMAND="ssh -o ForwardAgent=yes" git clone git@server:org/repo.git'

也可在other用户的~/.gitconfig中添加全局配置,永久生效:

[core]
    sshCommand = ssh -o ForwardAgent=yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:55:15