我已经使用以下命令成功创build了一个SSH隧道到我们的本地linux服务器上的云postgresql服务器:
ssh -N -f -L 5431:localhost:xxxx mycloudserver.com
(其中xxxx是远程端口)
使用这个命令,我可以通过端口5431访问远程PostgreSQL数据库,但只能在这个Linux服务器上访问。
现在我想和networking上的其他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
已经尝试过了
ssh -N -f -L 5431:0.0.0.0:xxxx mycloudserver.com
太。 隧道已成功build立并在服务器上工作,但是我无法“看到”来自客户端的连接。
您需要修改您的命令来指定bind_address,如:
ssh -N -f -L 0.0.0.0:5431:localhost:xxxx mycloudserver.com
这将使它在所有的接口上监听。 要validation,请使用:
netstat -lnp | grep 5431
这实在是错误的做法。 不要使用SSH隧道。 相反,请在云服务器上设置SSL,并直接build立SSL连接,并根据需要使用IP地址限制。
或者,如果您必须使用VPN,请使用专为此angular色devise的VPN,而不是将ssh插入作业。
SSH在TCP上传输TCP,这会导致拥塞控制,重传和窗口缩放algorithm出现问题。 这对于临时工作是一个很好的工具,但是我不会build议使用大量带宽的东西来生产多用户操作系统。
如果你真的必须 ,那么你可以在你的-L使用*的绑定地址,例如
-L *:5431:localhost:xxxx
或者在您的.ssh/config中为该主机设置GatewayPorts yes ,或者通过-o命令行选项来设置,如:
-o GatewayPorts=yes