File size: 3,552 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash

echo "=== 配置 Hugging Face SSH 连接 ==="
echo ""

# 1. 检查并创建 SSH 目录
echo "1. 检查 SSH 目录..."
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "✓ SSH 目录已准备"
echo ""

# 2. 检查 SSH key
echo "2. 检查 SSH key..."
if [ -f ~/.ssh/id_ed25519.pub ]; then
    echo "✓ 找到 id_ed25519.pub"
    SSH_KEY_FILE="~/.ssh/id_ed25519"
    SSH_PUB_KEY="~/.ssh/id_ed25519.pub"
elif [ -f ~/.ssh/id_rsa.pub ]; then
    echo "✓ 找到 id_rsa.pub"
    SSH_KEY_FILE="~/.ssh/id_rsa"
    SSH_PUB_KEY="~/.ssh/id_rsa.pub"
else
    echo "✗ 未找到 SSH key,正在生成..."
    ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" -C "huggingface"
    SSH_KEY_FILE="~/.ssh/id_ed25519"
    SSH_PUB_KEY="~/.ssh/id_ed25519.pub"
    echo "✓ 已生成新的 SSH key"
fi
echo ""

# 3. 显示公钥
echo "3. 你的 SSH 公钥(请复制并添加到 Hugging Face):"
echo "----------------------------------------"
if [ -f ~/.ssh/id_ed25519.pub ]; then
    cat ~/.ssh/id_ed25519.pub
elif [ -f ~/.ssh/id_rsa.pub ]; then
    cat ~/.ssh/id_rsa.pub
fi
echo "----------------------------------------"
echo ""
echo "⚠️  请访问 https://huggingface.co/settings/keys 添加上述公钥"
echo "   按 Enter 继续(添加完公钥后)..."
read
echo ""

# 4. 配置 SSH config
echo "4. 配置 SSH config..."
SSH_CONFIG="$HOME/.ssh/config"

# 备份现有配置
if [ -f "$SSH_CONFIG" ]; then
    cp "$SSH_CONFIG" "$SSH_CONFIG.backup.$(date +%Y%m%d_%H%M%S)"
    echo "✓ 已备份现有配置"
fi

# 确定使用的 key 文件
if [ -f ~/.ssh/id_ed25519 ]; then
    KEY_PATH="$HOME/.ssh/id_ed25519"
elif [ -f ~/.ssh/id_rsa ]; then
    KEY_PATH="$HOME/.ssh/id_rsa"
fi

# 添加或更新 hf.co 配置
if grep -q "Host hf.co" "$SSH_CONFIG" 2>/dev/null; then
    echo "✓ 更新现有 hf.co 配置"
    # 删除旧的 hf.co 配置块
    sed -i '/^Host hf.co$/,/^$/d' "$SSH_CONFIG"
fi

# 添加新配置
cat >> "$SSH_CONFIG" << EOF

# Hugging Face SSH 配置
Host hf.co
    HostName hf.co
    User git
    Port 22
    IdentityFile $KEY_PATH
    IdentitiesOnly yes
    StrictHostKeyChecking accept-new
EOF

chmod 600 "$SSH_CONFIG"
echo "✓ SSH config 已配置(端口 22)"
echo ""

# 5. 设置 key 文件权限
echo "5. 设置文件权限..."
chmod 600 "$KEY_PATH"
chmod 644 "$KEY_PATH.pub"
echo "✓ 权限已设置"
echo ""

# 6. 测试 SSH 连接(端口 22)
echo "6. 测试 SSH 连接(端口 22)..."
if ssh -T git@hf.co 2>&1 | grep -q "successfully authenticated"; then
    echo "✓ SSH 连接成功!"
    echo ""
    echo "=== 配置完成 ==="
    echo "现在可以正常使用 git push 了"
    exit 0
else
    echo "✗ 端口 22 连接失败,尝试配置端口 443..."
    echo ""
    
    # 更新配置为端口 443
    sed -i 's/Port 22/Port 443/' "$SSH_CONFIG"
    echo "✓ 已更新为端口 443"
    echo ""
    
    echo "7. 测试 SSH 连接(端口 443)..."
    if ssh -T git@hf.co 2>&1 | grep -q "successfully authenticated"; then
        echo "✓ SSH 连接成功(使用端口 443)!"
        echo ""
        echo "=== 配置完成 ==="
        echo "现在可以正常使用 git push 了"
        exit 0
    else
        echo "✗ 端口 443 也连接失败"
        echo ""
        echo "请检查:"
        echo "1. SSH 公钥是否已添加到 https://huggingface.co/settings/keys"
        echo "2. 网络连接是否正常"
        echo "3. 防火墙是否阻止了连接"
        echo ""
        echo "可以手动测试:"
        echo "  ssh -T git@hf.co"
        exit 1
    fi
fi