aileeao / fix_use_port_22.sh
aihuashanying's picture
修复不能push的问题
386b079
#!/bin/bash
echo "=== 配置 SSH 使用端口 22(已测试成功)==="
echo ""
SSH_CONFIG="$HOME/.ssh/config"
KEY_PATH="$HOME/.ssh/id_ed25519"
# 备份配置
if [ -f "$SSH_CONFIG" ]; then
cp "$SSH_CONFIG" "$SSH_CONFIG.backup.$(date +%Y%m%d_%H%M%S)"
echo "✓ 已备份现有配置"
fi
# 删除旧的 hf.co 配置
if grep -q "Host hf.co" "$SSH_CONFIG" 2>/dev/null; then
sed -i '/^Host hf.co$/,/^$/d' "$SSH_CONFIG"
echo "✓ 已删除旧的 hf.co 配置"
fi
# 添加新配置(使用端口 22)
echo "配置 SSH(使用端口 22)..."
cat >> "$SSH_CONFIG" << EOF
# Hugging Face SSH 配置(端口 22,已测试成功)
Host hf.co
HostName hf.co
User git
Port 22
IdentityFile $KEY_PATH
IdentitiesOnly yes
StrictHostKeyChecking accept-new
ConnectTimeout 30
ServerAliveInterval 20
ServerAliveCountMax 5
TCPKeepAlive yes
EOF
chmod 600 "$SSH_CONFIG"
chmod 600 "$KEY_PATH"
chmod 644 "$KEY_PATH.pub"
echo "✓ SSH 配置已完成(端口 22)"
echo ""
# 显示配置
echo "当前配置:"
grep -A 10 "Host hf.co" "$SSH_CONFIG"
echo ""
# 测试连接
echo "测试 SSH 连接(端口 22)..."
timeout 40 ssh -T [email protected] 2>&1
SSH_EXIT=$?
echo ""
if [ $SSH_EXIT -eq 0 ] || [ $SSH_EXIT -eq 1 ]; then
if ! timeout 40 ssh -T [email protected] 2>&1 | grep -qi "timeout\|refused"; then
echo "✓ SSH 连接成功!"
echo ""
echo "=== 配置完成 ==="
echo "现在可以正常使用 git push 了"
echo ""
echo "测试推送:"
echo " git push"
exit 0
fi
fi
echo "如果连接失败,请检查:"
echo "1. SSH 公钥是否已添加到 Hugging Face"
echo "2. Clash Verge 的规则是否正确配置"
echo "3. 网络连接是否正常"