SSH连接隧道被拒绝

时间:2017-03-30 14:08:24

标签: networking ssh netcat ssh-tunnel

我有一个位于专用网络内的虚拟机。 首先,我应该进入server.com,然后进入my-machine

我想将笔记本电脑ssh-tunnel改为my-machine

ssh -v -A -nNT -L 40000:127.0.0.1:40000 login@server.com ssh -v -nNT -L 40000:127.0.0.1:40000 my-machine & 

现在我想用ssh-tunnel测试netcat

我在my-machine

运行
nc -l 40000

在我的笔记本电脑上:

~ ❯❯❯ nc 127.0.0.1 40000

但它给了我:

debug1: Connection to port 40000 forwarding to 127.0.0.1 port 40000 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip: listening port 40000 for 127.0.0.1 port 40000, connect from 127.0.0.1 port 49692 to 127.0.0.1 port 40000, nchannels 3

为什么会发生这种情况以及如何解决?我希望我在笔记本电脑控制台中输入的任何内容都会显示在my-machine控制台中。

最后一个字符串是什么意思?特别是127.0.0.1 port 49692为什么使用这个端口?我从不打字。

debug1: channel 2: free: direct-tcpip: listening port 40000 for 127.0.0.1 port 40000, connect from 127.0.0.1 port 49692 to 127.0.0.1 port 40000, nchannels 3

1 个答案:

答案 0 :(得分:2)

每个TCP连接都是点到点需要两对IP地址和端口。阅读所有信息(不仅仅是你展示的部分):

connect from 127.0.0.1 port 49692

确实,您正在连接到端口40000,但是您正在连接来自端口49692(随机分配给您的netcat或某些转发步骤。)

  

如何解决这个问题?

这种双跳转发不起作用,因为你需要在第一个之前建立的第二个。

此外,您正在使用-N开关来执行第一个命令,这会阻止运行第二个ssh命令。

但我会尝试使用ProxyCommand,它会让您直接从主机通过单个命令连接到目的地:

ssh -v -nNT -L 40000:127.0.0.1:40000 \
    -oProxyCommand="ssh -W %h:%p login@server.com" my-machine &