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