我正在使用 ssh 反向隧道(使用 AutoSSH)来允许我的 Internet 服务器上某些端口上的传入连接通过隧道传输到我家 LAN 上的本地服务器。
我的问题是,即使没有端点,SSH 也会接受外部端口上的传入连接;也就是说,本地服务器根本没有运行(但 PC 正在运行)。这应该会导致该 PC 进行本地重置。
尽管如此,TCP 连接仍会在该外部端口上建立。更糟糕的是,当在现有隧道连接期间,本地服务器关闭(无论是通过干净的 TCP 关闭,还是通过 TCP-RESET),这不会转发回外部客户端,并且从此客户端的角度来看,连接仍然存在。
有什么办法可以解决这个问题吗?它是从 systemctl 启动的:
[Unit]
Description=SSH Tunnel
After=network.target
StartLimitIntervalSec=1
[Service]
#PassEnvironment=AUTOSSH_POLL=30
PassEnvironment="AUTOSSH_DEBUG"
Type=forking
GuessMainPID=1
Restart=always
RestartSec=10
KillMode=process
User=nosh
ExecStart=/usr/lib/autossh/autossh -M 20000 -C -N -f -n -T \
-R '*:1234:192.168.50.150:1234' \
-R '*:1235:192.168.50.200:1235' \
-R '*:1236:192.168.50.130:1236' \
-R '*:1237:192.168.50.1:1237' \
[email protected] -p 2200 >> /dev/null 2>&1
[Install]
WantedBy=multi-user.target