Spaces:
Running
Running
| 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 [email protected]" | |
| exit 1 | |
| fi | |
| # 测试连接 | |
| echo "" | |
| echo "测试 SSH 连接..." | |
| timeout 15 ssh -T [email protected] 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 [email protected]" | |
| fi | |