Spaces:
Running
Running
| 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 [email protected] 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 [email protected] 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 [email protected]" | |
| exit 1 | |
| fi | |
| fi | |