File size: 2,769 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
#!/bin/bash

echo "=== 修复 Hugging Face SSH 连接问题 ==="
echo ""

# 1. 检查 SSH key 是否已添加到 Hugging Face
echo "1. 检查 SSH key 配置..."
if [ -f ~/.ssh/id_ed25519.pub ]; then
    echo "✓ 找到 SSH 公钥:"
    cat ~/.ssh/id_ed25519.pub
    echo ""
    echo "⚠️  请确认此公钥已添加到:https://huggingface.co/settings/keys"
    echo "   如果未添加,请先添加后再继续"
    echo ""
    read -p "公钥已添加到 Hugging Face?(y/n): " key_added
    if [ "$key_added" != "y" ] && [ "$key_added" != "Y" ]; then
        echo "请先添加公钥到 Hugging Face,然后重新运行此脚本"
        exit 1
    fi
else
    echo "✗ 未找到 SSH 公钥"
    exit 1
fi
echo ""

# 2. 更新 SSH 配置,添加超时和连接选项
echo "2. 更新 SSH 配置..."
SSH_CONFIG="$HOME/.ssh/config"

# 备份
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

# 添加优化的配置
KEY_PATH="$HOME/.ssh/id_ed25519"
cat >> "$SSH_CONFIG" << 'EOF'

# Hugging Face SSH 配置(优化版)
Host hf.co
    HostName hf.co
    User git
    Port 443
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
    StrictHostKeyChecking accept-new
    ConnectTimeout 10
    ServerAliveInterval 60
    ServerAliveCountMax 3
    TCPKeepAlive yes
    LogLevel ERROR
EOF

chmod 600 "$SSH_CONFIG"
echo "✓ SSH 配置已更新(带超时设置)"
echo ""

# 3. 测试网络连接
echo "3. 测试网络连接..."
echo "测试 hf.co 的 443 端口..."
if timeout 5 bash -c "echo > /dev/tcp/hf.co/443" 2>/dev/null; then
    echo "✓ 端口 443 可达"
else
    echo "✗ 端口 443 不可达,可能被防火墙阻止"
    echo "  尝试使用代理或检查网络设置"
fi
echo ""

# 4. 使用超时测试 SSH 连接
echo "4. 测试 SSH 连接(10秒超时)..."
timeout 10 ssh -T -o ConnectTimeout=10 -o StrictHostKeyChecking=no [email protected] 2>&1
SSH_EXIT=$?

if [ $SSH_EXIT -eq 0 ] || [ $SSH_EXIT -eq 1 ]; then
    # 退出码 0 或 1 都可能是成功(1 通常表示认证成功但命令失败)
    echo ""
    echo "✓ SSH 连接测试完成"
    echo ""
    echo "=== 配置完成 ==="
    echo "现在可以尝试 git push"
else
    echo ""
    echo "✗ SSH 连接失败或超时"
    echo ""
    echo "可能的解决方案:"
    echo "1. 检查网络连接和防火墙设置"
    echo "2. 如果使用代理,配置 SSH 代理:"
    echo "   export http_proxy=http://proxy:port"
    echo "   export https_proxy=http://proxy:port"
    echo "3. 尝试使用不同的网络环境"
    echo "4. 检查 Hugging Face 服务状态"
fi