管理多个 ssh 隧道连接

管理多个 ssh 隧道连接

每天我都会使用 5 到 10 个与远程服务器的 ssh 隧道连接,使用如下命令:

ssh -Nvvv -L localhost:8866:127.0.0.1:3478 host

我使用其中一些服务器作为浏览网络的代理,在其他服务器中我运行 jupyter、tensorboard 或其他类似程序,然后我可以从我的个人计算机上的浏览器上的映射端口进行访问。

但每次都必须启动所有连接,并记住哪个端口映射到哪个服务器,这很烦人。

是否有任何基于 GUI 或终端的工具来管理此类连接?

答案1

一个简单的方法可能是创建一个启动它们的 Bash 脚本。下面的示例脚本是为两个连接编写的,如果您调用它tunnelchmod +x tunnel那么您可以使用

tunnel start

启动它们(幂等地)并且

tunnel stop

清理它们。

#!/bin/bash
C1="localhost:8866:127.0.0.1:3478 host1"
C2="localhost:8867:127.0.0.1:3478 host2"
pkill -f "$C1"
pkill -f "$C2"
if [ "$1" = stop ]; then exit 0; fi
sleep 3  # give some time for them to exit, if applicable
nohup ssh -N -L $C1 &> /dev/null &
nohup ssh -N -L $C2 &> /dev/null &

另一种方法可能是让autossh它们单独运行,并可能安排它们在系统启动时开始。

最后,您也许可以在 /etc/services 中为端口提供符号名称,尽管这样我们就会开始在您的系统上创建一些配置混乱。您可能希望端口位于保留范围 (< 1024) 内,因此需要 root 权限。

相关内容