aileeao / test_ssh_detailed.sh
aihuashanying's picture
修复不能push的问题
386b079
#!/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 [email protected] 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 [email protected] 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"