我遇到过多个不支持 SSH 隧道的应用程序,这在我们的服务器异地工作时成为一个问题。
我这里有一个从不关闭的 Raspberry Pi,想知道是否可以通过 SSH 隧道将某些端口(如 9200(Elasticsearch)和 3306(mysql))路由到远程服务器?
我能够使用此命令在 Raspberry Pi 上建立连接:
ssh -A -t -N -L 9200:localhost:9200 user@remoteserver
但它拒绝转发从我的电脑发送的数据包。只有当我像localhost
在 Raspberry Pi 上一样发送数据包时,它才有效。
有什么方法可以转发数据包并使其成为 ssh 隧道代理服务器?
答案1
-g 允许远程主机连接到本地转发端口
添加-g
然后从您的计算机连接到 Raspberry Pi。
或者
使用 ssh 作为带有-D
交换机的 SOCKS 代理。例如。ssh -t -N -D 9000 user@remoteserver
现在您在端口 9000 上有一个 socks 代理。
运行带有 socks 包装器的程序,例如tsocks
。每个 TCP 连接都将通过 socks 代理并终止于远程服务器。
对于 HTTP,在 Raspberry Pi 上安装一个 http 代理,例如 Polipo。
Polipo 配置示例:
proxyPort = 8118
socksParentProxy = "localhost:9000"
socksProxyType = socks5
配置你的 Web 浏览器以使用 Raspberry Pi 作为代理服务器,http://rpi:8118