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

配置带用户名密码的SSH代理以访问Git仓库问题求助

解决SSH代理需密码认证后的Git仓库访问问题

问题场景

原本通过无密码代理访问GitHub/GitLab等Git仓库,现在代理启用了密码认证,导致原SSH配置失效,无法正常拉取/推送代码。

当前SSH配置

SO>cat ~/.ssh/config
Host my.company.net
    User git
    IPQoS throughput
    ProxyCommand nc -w 15 -X connect -x 10.26.192.28:3128 %h %p

#Host github.com
    #User git
    #ProxyCommand nc -w 5 -X connect -x 10.14.0.2:3128 %h %p


SO>

环境信息

SO>cat /etc/os-release | grep -i pretty
PRETTY_NAME="openSUSE Leap 15.5"
SO>rpm -qf `which nc`
netcat-openbsd-1.203-150400.1.5.x86_64
SO>git --version
git version 2.35.3
SO>

可行解决方案

方法1:替换为支持代理认证的Netcat版本

openbsd版的nc不支持代理密码认证,换成传统版netcat:

  1. 安装netcat-traditional:
    sudo zypper install netcat-traditional
    
  2. 修改~/.ssh/config中GitHub的配置段(取消注释并更新ProxyCommand):
    Host github.com
        User git
        ProxyCommand nc -w 5 -X connect -x proxy_username:proxy_password@10.14.0.2:3128 %h %p
    

    注意:此方式会明文存储密码,存在安全风险,仅建议在受控环境中使用。

方法2:使用corkscrew工具处理代理认证

corkscrew专门用于通过需要认证的HTTP代理建立SSH连接:

  1. 安装corkscrew:
    sudo zypper install corkscrew
    
  2. 创建代理认证文件~/.ssh/proxy-auth,内容为:
    proxy_username:proxy_password
    
  3. 设置文件权限为600,避免其他用户读取:
    chmod 600 ~/.ssh/proxy-auth
    
  4. 更新~/.ssh/config中的GitHub配置:
    Host github.com
        User git
        ProxyCommand corkscrew 10.14.0.2 3128 %h %p ~/.ssh/proxy-auth
    

方法3:切换为HTTPS协议并配置Git代理

如果允许使用HTTPS而非SSH访问仓库,可以直接配置Git的代理:

  1. 全局设置代理(适用于所有仓库):
    git config --global http.proxy http://proxy_username:proxy_password@10.14.0.2:3128
    git config --global https.proxy https://proxy_username:proxy_password@10.14.0.2:3128
    
  2. 若不想明文存储密码,可使用Git凭证助手:
    git config --global credential.helper store
    
    首次拉取/推送时输入一次代理用户名和密码,Git会自动加密存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:35:16