#!/bin/bash echo "=== 快速配置 SSH 使用混合代理端口 7897 ===" echo "" # 获取 Windows 主机 IP WSL_HOST_IP=$(ip route show | grep default | awk '{print $3}') echo "Windows 主机 IP: $WSL_HOST_IP" echo "混合代理端口: 7897" echo "" # 检查 SSH key if [ ! -f ~/.ssh/id_ed25519 ]; then echo "✗ 未找到 SSH key: ~/.ssh/id_ed25519" exit 1 fi KEY_PATH="$HOME/.ssh/id_ed25519" echo "✓ 找到 SSH key" echo "" # 检查 nc 命令 if ! command -v nc > /dev/null 2>&1; then echo "⚠️ 未找到 nc (netcat) 命令" echo "正在安装 netcat-openbsd..." sudo apt-get update -qq > /dev/null 2>&1 sudo apt-get install -y netcat-openbsd > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "✓ 已安装 netcat-openbsd" else echo "✗ 安装失败,请手动安装: sudo apt-get install netcat-openbsd" exit 1 fi fi echo "" # 配置 SSH SSH_CONFIG="$HOME/.ssh/config" mkdir -p ~/.ssh chmod 700 ~/.ssh # 备份 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 # 添加新配置 cat >> "$SSH_CONFIG" << EOF # Hugging Face SSH 配置(混合代理端口 7897) Host hf.co HostName hf.co User git Port 443 IdentityFile $KEY_PATH IdentitiesOnly yes StrictHostKeyChecking accept-new ConnectTimeout 10 ProxyCommand nc -X 5 -x $WSL_HOST_IP:7897 %h %p ServerAliveInterval 60 ServerAliveCountMax 3 TCPKeepAlive yes LogLevel ERROR EOF chmod 600 "$SSH_CONFIG" chmod 600 "$KEY_PATH" chmod 644 "$KEY_PATH.pub" echo "✓ SSH 配置已完成" echo "" # 显示公钥 echo "请确认 SSH 公钥已添加到 Hugging Face:" echo "https://huggingface.co/settings/keys" echo "" cat ~/.ssh/id_ed25519.pub echo "" read -p "公钥已添加?(y/n): " key_added if [ "$key_added" != "y" ] && [ "$key_added" != "Y" ]; then echo "请先添加公钥,然后运行: ssh -T git@hf.co" exit 1 fi # 测试连接 echo "" echo "测试 SSH 连接..." timeout 15 ssh -T git@hf.co 2>&1 SSH_EXIT=$? if [ $SSH_EXIT -eq 0 ] || [ $SSH_EXIT -eq 1 ]; then echo "" echo "✓ SSH 连接成功!" echo "" echo "=== 配置完成 ===" echo "现在可以正常使用 git push 了" else echo "" echo "✗ SSH 连接失败" echo "" echo "请检查:" echo "1. Clash Verge 是否正在运行" echo "2. 混合代理端口是否为 7897" echo "3. SSH 公钥是否已添加到 Hugging Face" echo "" echo "手动测试:" echo " ssh -T git@hf.co" fi