Files
etf/start_ssh_tunnel.sh

49 lines
1.2 KiB
Bash

#!/bin/bash
# SSH 隧道启动脚本
# 通过香港 ECS 建立本地 SOCKS5 代理,供 Clash 使用
KEY_PATH="/Users/aszer/code/etf/hk_ecs.pem"
HOST="root@8.218.167.69"
LOCAL_PORT=1080
REMOTE_PORT=1080
# 检查是否已有隧道在运行
if pgrep -f "ssh.*-D.*${LOCAL_PORT}" > /dev/null 2>&1; then
echo "✓ SSH 隧道已在运行 (本地端口: ${LOCAL_PORT})"
pgrep -f "ssh.*-D.*${LOCAL_PORT}" | head -1
exit 0
fi
# 确保密钥权限正确
chmod 600 "$KEY_PATH" 2>/dev/null
# 修复可能的 Windows 换行符问题
sed -i '' 's/\r$//' "$KEY_PATH" 2>/dev/null
echo "正在建立 SSH 隧道..."
echo " 服务器: ${HOST}"
echo " 本地 SOCKS5 端口: ${LOCAL_PORT}"
echo " 密钥: ${KEY_PATH}"
ssh -N -D 127.0.0.1:${LOCAL_PORT} \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
-i "$KEY_PATH" \
-p 22 \
"$HOST" &
SSH_PID=$!
sleep 2
if kill -0 $SSH_PID 2>/dev/null; then
echo "✓ SSH 隧道已建立 (PID: ${SSH_PID})"
echo " 本地代理: socks5://127.0.0.1:${LOCAL_PORT}"
echo ""
echo "现在可以启动 Clash 使用 'SSH香港' 节点了"
else
echo "✗ SSH 隧道建立失败"
exit 1
fi