给定 ServerB 和 ServerA,我在 ServerB 上运行以下命令来设置远程端口转发,以便到达 serverA 端口 4000 的请求转发到 ServerB:22。
ssh -R 4000:localhost:22 user@serverA
在我的本地机器上,我现在可以通过跳转到 ServerA 端口 4000 来连接到 ServerB。
ssh -J user@serverA user@localhost -p 4000
这有效。
我试图理解为什么以下命令的输出(在 ServerA 上运行时)
sudo lsof -i -P -n
没有达到我的期望。
而不是看到像这样的输出……
...
sshd TCP 127.0.0.1:4000->serverB:22 (ESTABLISHED)
...
我看到的是这些……
...
sshd TCP [::1]:4000 (LISTEN)
sshd TCP 127.0.0.1:4000 (LISTEN)
sshd TCP 127.0.0.1:4000->127.0.0.1:4340 (ESTABLISHED)
...
这些没有提到 ServerB,特别是最后一行只是建议与另一个随机端口的本地连接。
为什么会这样?鉴于上述情况,我该如何输出有意义的描述?
2
最佳答案
1
ssh -R 4000:localhost:22 user@serverA
告诉ServerA在本地监听端口 4000。任何与ServerA上此端口的连接都将转发到端口 22 上的ServerB 。但是, ServerA本身在本地管理转发,这就是为什么lsof
只显示如上所示的连接。您可能想要检查 ServerA 上的 SSH 日志,或使用获取从ServerA到ServerB 的netstat
连接。
|
ssh
命令中,您没有在任何地方使用 serverB,只有 localhost 和 ServerA,因此很明显您不会连接到 serverB–
–
|