#!/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 git@hf.co 2>&1 SSH_EXIT=$? echo "" if [ $SSH_EXIT -eq 0 ] || [ $SSH_EXIT -eq 1 ]; then if ! timeout 40 ssh -T git@hf.co 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. 网络连接是否正常"