如何诊断 SSH 远程端口转发不起作用

如何诊断 SSH 远程端口转发不起作用

使用该命令,我试图找出远程端口转发不起作用的原因,直到我意识到主机的 sshd_config 中没有该命令。添加该命令后,它成功运行。ssh -v -R 2255:localhost:2255 [email protected]GatewayPorts yes

有什么方法可以诊断出这个病吗?

SSH 甚至输出以下内容(不带 GatewayPorts yes):

debug1: Remote connections from LOCALHOST:2255 forwarded to local address localhost:2255
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: remote forward success for: listen 2255, connect localhost:2255
debug1: All remote forwarding requests processed

答案1

您需要GatewayPorts yessshd_config 才能从外部访问它。

答案2

当您指定时,2255:localhost:2255前面会填充缺失的主机名作为localhost。这实际上只会绑定到localhost地址(环回)。如果您还想“从外部”使用它,则需要使用服务器 IP 进行远程端口转发,例如example.com:2255:localhost:2255

答案3

您随时可以添加更多-vs 以使输出更加详细。OpenSSH 最多支持三个vs:

ssh -vvv

三级详细输出应包括有关端口转发的信息。

答案4

对我来说,正确答案是贾库杰诺拉杰结合:

  1. 除了指定远程端口外,还需要指定远程绑定地址-R(即-R '*:$REMOTEPORT:$LOCALADDR:$LOCALPORT')。如果不指定地址,sshd 将仅绑定到环回接口(默认)。

  2. 默认情况下,似乎/etc/sshd_confing[GatewayPorts默认为否]。您应该将其设置yes强行公开转发端口或clientspecified允许客户端选择。我更喜欢后者。

设置完成后,我的服务器就会按预期公开转发的服务。

如果仍然遇到问题,您可以检查实际如何sshd绑定外部端口(例如ss -a)以及暴露的端口是否被本地或上游防火墙阻止。

相关内容