我试图从WAN访问位于同一本地networking上的两台不同机器的VNC服务器。
因为我希望stream量在SSH隧道中路由,我使用ssh [email protected] -N -L 15900:127.0.0.1:5900 ,然后是vnc://[email protected]:15900 ,没有问题的第一台机器。
对于第二台机器,我将端口2222 NAT到路由器中本机IP的端口22。 NAT还configuration为将端口5900转发到第一台机器的IP,将端口5901转发到第二台机器的IP的端口5900。
我假设ssh -p2222 [email protected] -N -L 15901:127.0.0.1:5901 ,然后vnc://[email protected]:15901将工作,但它不。
我正在运行ssh -p2222 [email protected] -N -L 15901:127.0.0.1:5901命令输出的shell:
通道2:打开失败:连接失败:连接被拒绝
当我尝试将VNC放入机器时。
我试过ssh -v -p2222 [email protected] -N -L 15901:127.0.0.1:5901
我得到了:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: /etc/ssh_config line 102: Applying options for * debug1: Connecting to xxxxx.net [xx.xx.xx.xx] port 2222. debug1: Connection established. debug1: identity file /Users/admin/.ssh/id_rsa type 1 debug1: identity file /Users/admin/.ssh/id_rsa-cert type -1 debug1: identity file /Users/admin/.ssh/id_dsa type -1 debug1: identity file /Users/admin/.ssh/id_dsa-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.2 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.2 debug1: match: OpenSSH_5.2 pat OpenSSH_5* debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: RSA xx:xx:xx:xx debug1: Host '[xxxxx.net]:2222' is known and matches the RSA host key. debug1: Found key in /Users/admin/.ssh/known_hosts:60 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,keyboard-interactive debug1: Next authentication method: public key debug1: Offering RSA public key: /Users/admin/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 535 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (public key). Authenticated to xxxxx.net ([xx.xx.xx.xx]:2222). debug1: Local connections to LOCALHOST:15901 forwarded to remote address 127.0.0.1:5901 debug1: Local forwarding listening on ::1 port 15901. debug1: channel 0: new [port listener] debug1: Local forwarding listening on 127.0.0.1 port 15901. debug1: channel 1: new [port listener] debug1: Requesting [email protected] debug1: Entering interactive session. debug1: Connection to port 15901 forwarding to 127.0.0.1 port 5901 requested. debug1: channel 2: new [direct-tcpip] channel 2: open failed: connect failed: Connection refused debug1: channel 2: free: direct-tcpip: listening port 15901 for 127.0.0.1 port 5901, connect from 127.0.0.1 port 51974, channels 3
有没有人有任何想法?
如果我正确理解networking布局,就会误解SSH隧道与NAT的交互方式。 基本上,一旦NAT路由器已经将您的SSH连接从externalIP:2222转发到了privateIP1:22,那么NAT已经完成了它的工作。
要连接到第二台内部计算机,需要将连接从本地计算机上的端口15901,通过SSH连接到第一台内部计算机,然后从那里连接到第二台内部计算机。 您可以使用ssh -p2222 [email protected] -N -L 15901:privateIP2:5900 。
“privateIP2:5900”部分是你所缺less的; 您的版本告诉第一台计算机在端口5901上将连接转发给自己(127.0.0.1); 没有什么在那里听,所以它被拒绝了。
你不希望NAT盒转发端口5900和5901任何东西 – 让任何人从任何地方VNC到这些计算机,完全忽略SSH隧道。