我花了一段时间才弄清楚,但最终还是让远程端口转发正常工作了远程控制如下:
ssh -N -i /etc/ssh/id_rsa [email protected] -R 8080:localhost:80 -C -v
本地服务器使用私钥连接到配置了公钥的远程服务器。能够成功验证,日志中没有错误。ssh 打印的最后一行是:
debug1: remote forward success for: listen 8080, connect localhost:80
我尝试用我的公共网站, 如下:
- http://www.somewhere.com
- http://www.somewhere.com:8080
- https://www.somewhere.com
- https://www.somewhere.com:8080
然而,什么也没有发生——仍然看到这一行:
debug1: remote forward success for: listen 8080, connect localhost:80
如果我本地测试在远程服务器使用http://127.0.0.1:8080, 它作品美好的。
注意:远程服务器上的 sshd_config 中设置了以下内容:
- AllowTcpForwarding 是
- GatewayPorts 是
不确定我错过了什么...
答案1
引自man ssh
默认情况下,服务器上的 TCP 侦听套接字将仅绑定到环回接口。这可以通过指定 bind_address 来覆盖。空的 bind_address 或地址“*”表示远程套接字应侦听所有接口。仅当启用了服务器的 GatewayPorts 选项时,指定远程 bind_address 才会成功(请参阅 sshd_config(5))。