aileeao / fix_ssh_connection.sh
aihuashanying's picture
修复不能push的问题
386b079
#!/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