#!/bin/bash echo "=== 详细测试 SSH 连接 ===" echo "" echo "1. 测试 TCP 连接到 hf.co:443..." if timeout 5 bash -c "echo > /dev/tcp/hf.co/443" 2>/dev/null; then echo "✓ TCP 连接成功" else echo "✗ TCP 连接失败" exit 1 fi echo "" echo "2. 测试端口 22..." if timeout 5 bash -c "echo > /dev/tcp/hf.co/22" 2>/dev/null; then echo "✓ 端口 22 可达" PORT_22_AVAILABLE=true else echo "✗ 端口 22 不可达" PORT_22_AVAILABLE=false fi echo "" echo "3. 获取 hf.co 的 IP 地址..." HF_IP=$(getent hosts hf.co | awk '{print $1}' | head -1) if [ -n "$HF_IP" ]; then echo "✓ hf.co IP: $HF_IP" else echo "✗ 无法解析 hf.co" exit 1 fi echo "" echo "4. 测试使用 IP 地址连接..." if timeout 5 bash -c "echo > /dev/tcp/$HF_IP/443" 2>/dev/null; then echo "✓ 使用 IP 连接成功" else echo "✗ 使用 IP 连接失败" fi echo "" echo "5. 测试 SSH 连接(端口 443,详细输出)..." echo "开始测试(60秒超时)..." timeout 60 ssh -vT -o ConnectTimeout=30 -p 443 git@hf.co 2>&1 | tee /tmp/ssh_test_443.log | grep -E "(Connecting|established|banner|timeout|error|Authenticated|successfully)" | head -20 SSH_443_EXIT=${PIPESTATUS[0]} echo "" if [ "$PORT_22_AVAILABLE" = "true" ]; then echo "6. 测试 SSH 连接(端口 22,详细输出)..." echo "开始测试(60秒超时)..." timeout 60 ssh -vT -o ConnectTimeout=30 -p 22 git@hf.co 2>&1 | tee /tmp/ssh_test_22.log | grep -E "(Connecting|established|banner|timeout|error|Authenticated|successfully)" | head -20 SSH_22_EXIT=${PIPESTATUS[0]} echo "" fi echo "7. 测试使用 IP 地址连接..." timeout 60 ssh -vT -o ConnectTimeout=30 -p 443 git@$HF_IP 2>&1 | tee /tmp/ssh_test_ip.log | grep -E "(Connecting|established|banner|timeout|error|Authenticated|successfully)" | head -20 SSH_IP_EXIT=${PIPESTATUS[0]} echo "" echo "=== 测试结果汇总 ===" echo "" echo "端口 443: $([ $SSH_443_EXIT -eq 0 ] || [ $SSH_443_EXIT -eq 1 ] && echo '可能成功' || echo '失败')" if [ "$PORT_22_AVAILABLE" = "true" ]; then echo "端口 22: $([ $SSH_22_EXIT -eq 0 ] || [ $SSH_22_EXIT -eq 1 ] && echo '可能成功' || echo '失败')" fi echo "使用 IP: $([ $SSH_IP_EXIT -eq 0 ] || [ $SSH_IP_EXIT -eq 1 ] && echo '可能成功' || echo '失败')" echo "" echo "详细日志:" echo " 端口 443: /tmp/ssh_test_443.log" if [ "$PORT_22_AVAILABLE" = "true" ]; then echo " 端口 22: /tmp/ssh_test_22.log" fi echo " 使用 IP: /tmp/ssh_test_ip.log"