如何在 ssh 配置中转发一系列端口?

如何在 ssh 配置中转发一系列端口?

我知道我可以通过以下方式转发 ssh 配置文件中的多个端口:

Host name
    HostName yam.myHost.edu
    User myUserName
    LocalForward 5901 127.0.0.1:5901
    LocalForward 5902 127.0.0.1:5902
    [...]
    LocalForward 5910 127.0.0.1:5910

有没有更简单的方法来转发一系列端口,而无需为端口添加额外的线路?就像是LocalForward 5901-5910 127.0.0.1:5901-5910

答案1

我通常在没有配置的情况下在命令行中交互地执行此操作,如下所示

ssh yam.myHost.edu $(for i in `seq 5901 5920` ;do echo -L $i:localhost:$i ;done)

您还可以生成配置文件行并将其复制/粘贴到您的配置文件中:

for i in `seq 5901 5920` ;do echo "LocalForward $i localhost:$i" ;done
LocalForward 5901 localhost:5901
LocalForward 5902 localhost:5902
LocalForward 5903 localhost:5903
[...]

答案2

简短的回答是否定的。

SSH 不支持端口转发的“范围”。它可以通过更复杂的设置来实现,该设置仅转发 1 个端口,两端的代理将充当路由器,选择正确的本地端口,但我想这远远不是您所需要的。

最方便的方法是在配置中提供多个 LocalForward 行(可以使用小脚本动态创建)。另请注意,SSH 命令接受多个端口的多个 -L 参数,因此以下内容有效:

ssh user@host -L 8000:localhost:8000 -L 8001:localhost:8001

您可以做的是设置一个别名,为您需要的所有端口执行 1 个 ssh 连接。

相关内容