#!/bin/bash echo "=== 测试 SSH 连接(多种方式)===" echo "" WSL_HOST_IP=$(ip route show | grep -i default | awk '{ print $3}' | head -1) echo "Windows 主机 IP: $WSL_HOST_IP" echo "" # 测试 1: 直接连接(TUN 模式应该自动代理) echo "测试 1: 直接连接(依赖 TUN 模式自动代理)" timeout 10 ssh -T -o ConnectTimeout=5 -v git@hf.co 2>&1 | grep -E "(Connecting|Authenticated|successfully|Connection|error)" | head -5 echo "" # 测试 2: 通过混合代理端口 7897 (SOCKS5) echo "测试 2: 通过混合代理端口 7897 (SOCKS5)" if command -v nc > /dev/null 2>&1; then timeout 10 ssh -T -o ConnectTimeout=5 \ -o ProxyCommand="nc -X 5 -x $WSL_HOST_IP:7897 %h %p" \ git@hf.co 2>&1 | grep -E "(Connecting|Authenticated|successfully|Connection|error)" | head -5 else echo " ✗ nc (netcat) 未安装,跳过此测试" echo " 安装命令: sudo apt-get install netcat-openbsd" fi echo "" # 测试 3: 设置代理环境变量后连接 echo "测试 3: 设置代理环境变量后连接(混合端口 7897)" export http_proxy=http://$WSL_HOST_IP:7897 export https_proxy=http://$WSL_HOST_IP:7897 export all_proxy=socks5://$WSL_HOST_IP:7897 echo " 已设置代理环境变量" timeout 10 ssh -T -o ConnectTimeout=5 git@hf.co 2>&1 | grep -E "(Connecting|Authenticated|successfully|Connection|error)" | head -5 echo "" # 测试 4: 使用端口 22 echo "测试 4: 尝试端口 22(通过代理)" timeout 10 ssh -T -o ConnectTimeout=5 -p 22 git@hf.co 2>&1 | grep -E "(Connecting|Authenticated|successfully|Connection|error)" | head -5