Spaces:
Running
Running
| 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 | |