配置带用户名密码的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:
- 安装netcat-traditional:
sudo zypper install netcat-traditional - 修改
~/.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连接:
- 安装corkscrew:
sudo zypper install corkscrew - 创建代理认证文件
~/.ssh/proxy-auth,内容为:proxy_username:proxy_password - 设置文件权限为600,避免其他用户读取:
chmod 600 ~/.ssh/proxy-auth - 更新
~/.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的代理:
- 全局设置代理(适用于所有仓库):
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 - 若不想明文存储密码,可使用Git凭证助手:
首次拉取/推送时输入一次代理用户名和密码,Git会自动加密存储。git config --global credential.helper store
内容的提问来源于stack exchange,提问作者INS
相关产品推荐
相关产品推荐

