Spaces:
Running
Running
File size: 2,685 Bytes
386b079 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
#!/bin/bash
echo "=== 快速配置 SSH 使用混合代理端口 7897 ==="
echo ""
# 获取 Windows 主机 IP
WSL_HOST_IP=$(ip route show | grep default | awk '{print $3}')
echo "Windows 主机 IP: $WSL_HOST_IP"
echo "混合代理端口: 7897"
echo ""
# 检查 SSH key
if [ ! -f ~/.ssh/id_ed25519 ]; then
echo "✗ 未找到 SSH key: ~/.ssh/id_ed25519"
exit 1
fi
KEY_PATH="$HOME/.ssh/id_ed25519"
echo "✓ 找到 SSH key"
echo ""
# 检查 nc 命令
if ! command -v nc > /dev/null 2>&1; then
echo "⚠️ 未找到 nc (netcat) 命令"
echo "正在安装 netcat-openbsd..."
sudo apt-get update -qq > /dev/null 2>&1
sudo apt-get install -y netcat-openbsd > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✓ 已安装 netcat-openbsd"
else
echo "✗ 安装失败,请手动安装: sudo apt-get install netcat-openbsd"
exit 1
fi
fi
echo ""
# 配置 SSH
SSH_CONFIG="$HOME/.ssh/config"
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 备份
if [ -f "$SSH_CONFIG" ]; then
cp "$SSH_CONFIG" "$SSH_CONFIG.backup.$(date +%Y%m%d_%H%M%S)"
fi
# 删除旧的 hf.co 配置
if grep -q "Host hf.co" "$SSH_CONFIG" 2>/dev/null; then
sed -i '/^Host hf.co$/,/^$/d' "$SSH_CONFIG"
fi
# 添加新配置
cat >> "$SSH_CONFIG" << EOF
# Hugging Face SSH 配置(混合代理端口 7897)
Host hf.co
HostName hf.co
User git
Port 443
IdentityFile $KEY_PATH
IdentitiesOnly yes
StrictHostKeyChecking accept-new
ConnectTimeout 10
ProxyCommand nc -X 5 -x $WSL_HOST_IP:7897 %h %p
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
LogLevel ERROR
EOF
chmod 600 "$SSH_CONFIG"
chmod 600 "$KEY_PATH"
chmod 644 "$KEY_PATH.pub"
echo "✓ SSH 配置已完成"
echo ""
# 显示公钥
echo "请确认 SSH 公钥已添加到 Hugging Face:"
echo "https://huggingface.co/settings/keys"
echo ""
cat ~/.ssh/id_ed25519.pub
echo ""
read -p "公钥已添加?(y/n): " key_added
if [ "$key_added" != "y" ] && [ "$key_added" != "Y" ]; then
echo "请先添加公钥,然后运行: ssh -T [email protected]"
exit 1
fi
# 测试连接
echo ""
echo "测试 SSH 连接..."
timeout 15 ssh -T [email protected] 2>&1
SSH_EXIT=$?
if [ $SSH_EXIT -eq 0 ] || [ $SSH_EXIT -eq 1 ]; then
echo ""
echo "✓ SSH 连接成功!"
echo ""
echo "=== 配置完成 ==="
echo "现在可以正常使用 git push 了"
else
echo ""
echo "✗ SSH 连接失败"
echo ""
echo "请检查:"
echo "1. Clash Verge 是否正在运行"
echo "2. 混合代理端口是否为 7897"
echo "3. SSH 公钥是否已添加到 Hugging Face"
echo ""
echo "手动测试:"
echo " ssh -T [email protected]"
fi
|