使用相同的端口转发运行多个 SSH 会话是否会发生冲突?

使用相同的端口转发运行多个 SSH 会话是否会发生冲突?

如果我打开

ssh -L 8888:localhost:80 myhost

多次并打开页面http://本地主机:8888/在客户端上,那么将通过许多启动的 SSH 会话中的哪一个来传输数据?

更新

当我运行第二次 SSH 时,我收到一条消息

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8008
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8888
Could not request local forwarding.

这意味着转发仅通过第一个 SSH 进行,如果我关闭它,转发就会停止。即我可以自由创建和销毁会话。

有什么解决办法吗?

答案1

如果您共享 SSH 连接,您将避免此问题。添加类似的东西

Host myhost
  ControlMaster auto
  ControlPath ~/.ssh/master-%r@%h:%p
  ControlPersist 2h

给你的~/.ssh/config;这将启用临时连接共享,持续时间为两小时。然后,每当您启用端口转发时,只要主 SSH 连接保持打开状态,转发的端口就会保持活动状态。使用上述配置,这是在最后一次 SSH 连接关闭后两个小时;您还可以删除该ControlPersist行以使用最后一个 SSH 连接关闭它(但是当ssh您断开连接时,您的第一个命令实际上不会退出,它将等待所有其他 SSH 连接关闭)。在这两种情况下,您都可以通过运行强制关闭连接ssh -O exit myhost

相关内容