SSH隧道,如何知道隧道后的服务器端口信息

SSH隧道,如何知道隧道后的服务器端口信息

我试图用谷歌搜索一种方法来实现这一目标,但找不到。

基本上,我使用这样的命令通过堡垒主机创建了到多个远程主机的 SSH 隧道。

ssh -L 9000:ourprodserver.domain.com:1521 \
    -L 9001:otherprodserver.domain.com:1521 \
-A -l [email protected] somebastionhost.domain.net

现在,当隧道处于活动状态时,我如何知道映射到本地端口的连接详细信息。

即我希望能够创建这种形式的列表。

L_port         Remote_host            R_port
9000       ourprodserver.domain.com   1521
9001       otherprodserver.domain.com 1521

是否可以?

答案1

存在一个简单的解决方案,但它只会列出目前活跃隧道连接:它使用 ssh 转义序列~#

如果不使用隧道,则不会显示。

从帮助中(在活动的 ssh 连接内用 ~? 显示):

~# - 列出转发的连接

示例输出将是:

user@somebastionhost$ ~#
The following connections are open:
  #4 client-session (t4 r0 i0/0 o0/0 fd 9/10 cc -1)
  #5 direct-tcpip: listening port 9000 for ourprodserver.domain.com port 1521, connect from 127.0.0.1 port 48954 to 127.0.0.1 port 9000 (t3 nr0 i0/0 o0/0 fd 12/12 cc -1)

在客户端,您可以通过列出已打开的 TCP 套接字来了解打开的隧道,甚至是不活动的隧道:

lsof -n -p <pidof-ssh-client> -a -iTCP -a -sTCP:LISTEN

尽管这并不能完全回答您的问题,但这可能是一个起点。

相关内容