如果我打开
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
。