![SSH隧道,如何知道隧道后的服务器端口信息](https://linux22.com/image/134487/SSH%E9%9A%A7%E9%81%93%EF%BC%8C%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E9%9A%A7%E9%81%93%E5%90%8E%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E5%8F%A3%E4%BF%A1%E6%81%AF.png)
我试图用谷歌搜索一种方法来实现这一目标,但找不到。
基本上,我使用这样的命令通过堡垒主机创建了到多个远程主机的 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
尽管这并不能完全回答您的问题,但这可能是一个起点。