与本地网络共享 SSH 端口隧道

Gio*_*ini 4 postgresql linux database odbc ssh-tunnel

我已经成功地在本地 linux 服务器上创建了一个到我们的云 postgresql 服务器的 SSH 隧道,使用以下命令:

ssh -N -f -L 5431:localhost:xxxx mycloudserver.com
Run Code Online (Sandbox Code Playgroud)

(其中 xxxx 是远程端口)

使用这个命令我可以通过端口 5431 访问远程 PostgreSQL 数据库,但只能在这个 linux 服务器上。

现在我想与网络上的其他PC“共享”此连接,以便我可以使用ODBC驱动程序连接到linux_server:5431并读取云数据库,而无需在客户端上安装任何SSH软件。使用 iptables 打开端口 5431 不起作用。

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.128.5 --dport 5431 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.128.5 --sport 5431 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

已经试过了

 ssh -N -f -L 5431:0.0.0.0:xxxx mycloudserver.com
Run Code Online (Sandbox Code Playgroud)

也。隧道已成功构建并在服务器上运行,但我无法“看到”来自客户端的连接。

Kha*_*led 6

您需要修改您的命令以指定 bind_address ,如:

ssh -N -f -L 0.0.0.0:5431:localhost:xxxx mycloudserver.com
Run Code Online (Sandbox Code Playgroud)

这将使它侦听所有接口。要验证,请使用:

netstat -lnp | grep 5431
Run Code Online (Sandbox Code Playgroud)