| name | wsl-proxy-fix |
| description | Fix WSL git proxy connection errors (Failed to connect to 127.0.0.1 port 7890) |
| author | ericyangbit |
| version | 1.0.0 |
| tags | ["wsl","git","proxy","networking","troubleshooting"] |
WSL Git Proxy Fix Skill
Overview
This skill helps diagnose and fix git proxy connection errors in WSL (Windows Subsystem for Linux) environments. Common error: "Failed to connect to 127.0.0.1 port 7890 after 0 ms: Connection refused".
Problem Description
When using git in WSL, you may encounter proxy-related connection errors even when no proxy should be active. This happens because:
- Proxy configurations may be set in git config (global or local)
- Environment variables may contain proxy settings
- HTTPS git URLs may fail authentication in WSL
- Residual proxy settings from Windows may interfere
Quick Start
1. Run the Fix Script
chmod +x tools/wsl-proxy-fix.sh
./tools/wsl-proxy-fix.sh --diagnose
./tools/wsl-proxy-fix.sh --auto
./tools/wsl-proxy-fix.sh --clean
./tools/wsl-proxy-fix.sh --ssh
./tools/wsl-proxy-fix.sh --test
2. Manual Fix Commands
If you prefer manual fixes:
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --local --unset http.proxy
git config --local --unset https.proxy
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY
git remote set-url origin git@github.com:user/repo.git
git -c http.proxy= -c https.proxy= push
Detailed Fix Procedures
Scenario 1: "Failed to connect to 127.0.0.1 port 7890"
This error indicates git is trying to use a proxy server at 127.0.0.1:7890, but no proxy is running there.
Solution:
./tools/wsl-proxy-fix.sh --clean
git config --global --unset http.proxy
git config --global --unset https.proxy
unset http_proxy https_proxy
Scenario 2: "Could not read Username for 'https://github.com'"
This error occurs when using HTTPS URLs without proper authentication.
Solution:
./tools/wsl-proxy-fix.sh --ssh
git remote set-url origin git@github.com:user/repo.git
Scenario 3: SSH authentication fails
This happens when SSH keys are not properly configured.
Solution:
ls -la ~/.ssh/
ssh -T git@github.com
ssh-keygen -t ed25519 -C "your_email@example.com"
Diagnosis Commands
Check what's causing the issue:
git config --global http.proxy
git config --global https.proxy
git config --local http.proxy
git config --local https.proxy
env | grep -i proxy
git config --get remote.origin.url
curl -I https://github.com
timeout 10s git ls-remote https://github.com/git/git.git
Common WSL Proxy Issues
Issue 1: Windows Proxy Settings Interference
Windows proxy settings can sometimes leak into WSL.
Fix:
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY
Issue 2: Git Credential Manager Issues
Git credential manager may not work properly in WSL.
Fix:
git remote set-url origin git@github.com:user/repo.git
git config --global credential.helper store
Issue 3: DNS Resolution Problems
WSL may have DNS issues resolving github.com.
Fix:
nslookup github.com
git config --global url."https://140.82.121.4/".insteadOf "https://github.com/"
Preventive Measures
Add these to your shell configuration (~/.bashrc or ~/.zshrc):
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY 2>/dev/null
alias gitnp='git -c http.proxy= -c https.proxy='
git-ssh() {
local remote_url
remote_url=$(git config --get remote.origin.url 2>/dev/null)
if [[ -z "$remote_url" ]]; then
echo "Error: No remote origin configured"
return 1
fi
if [[ "$remote_url" == https://github.com/* ]]; then
local repo_path="${remote_url#https://github.com/}"
repo_path="${repo_path%.git}"
local ssh_url="git@github.com:${repo_path}.git"
git remote set-url origin "$ssh_url"
echo "Switched to SSH: $ssh_url"
elif [[ "$remote_url" == https://gitlab.com/* ]]; then
local repo_path="${remote_url#https://gitlab.com/}"
repo_path="${repo_path%.git}"
local ssh_url="git@gitlab.com:${repo_path}.git"
git remote set-url origin "$ssh_url"
echo "Switched to SSH: $ssh_url"
else
echo "Cannot convert URL: $remote_url"
echo "Manual command: git remote set-url origin git@host:user/repo.git"
fi
}
The Fix Script
The tools/wsl-proxy-fix.sh script provides a comprehensive solution:
#!/bin/bash
Available options:
--diagnose: Show all proxy-related configurations
--clean: Remove proxy settings from git and environment
--ssh: Convert HTTPS remote URLs to SSH
--test: Test GitHub connectivity
--auto: Run all fixes automatically
Integration with Claude Code
To use this skill with Claude Code:
- Direct script usage: Claude can run the fix script for you
- Manual commands: Claude can provide the exact commands needed
- Diagnosis: Claude can help interpret error messages
Example Claude interaction:
User: "git push fails with proxy error"
Claude: "Run: ./tools/wsl-proxy-fix.sh --diagnose"
Claude: "Then run: ./tools/wsl-proxy-fix.sh --auto"
References
Git Proxy Documentation
WSL Networking
SSH Configuration
Troubleshooting Guide
If the script doesn't work:
-
Check script permissions:
chmod +x tools/wsl-proxy-fix.sh
-
Run with bash explicitly:
bash tools/wsl-proxy-fix.sh --diagnose
-
Check git version:
git --version
-
Check WSL version:
wsl --version
If SSH still doesn't work:
-
Check SSH agent:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
-
Verify GitHub SSH access:
ssh -T git@github.com
-
Add SSH key to GitHub:
cat ~/.ssh/id_ed25519.pub
Version History
- v1.0.0 (2026-04-21): Initial release with diagnosis, cleaning, SSH switching, and testing features
License
This skill is provided as-is under MIT License. Use at your own risk.
Support
For issues with this skill:
- Check the troubleshooting guide above
- Review the script output for clues
- Consult WSL and git documentation
- Ask Claude for help with specific error messages