突然之间(阅读:未更改任何参数)我的netbsd虚拟机开始表现异常。症状涉及ssh隧道传输。

我从笔记本电脑启动: >
$ ssh -L 7000:localhost:7000 user@host -N -v


ssh调试显示:

$ irssi -c localhost -p 7000


我也尝试使用localhost:80连接到(远程)Web服务器,相同的结果。

远程主机运行NetBSD:

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


我有点迷路。我尝试在远程主机上运行tcpdump,但发现了这些“错误的chksum”:我尚未重启-也许这里有人可以建议其他诊断。我认为它可能是虚拟网卡驱动程序,也可能是有人将我们的ssh扎根了。

想法..?

评论

要进行故障排除,请尝试$ ssh -L 7000:127.0.0.1:7000 user @ host -N -v -v。 (您最多可以使用“ -v” 3次来增加详细程度。)而且,ssh是否最近被更新了?

我粘贴的输出日志已经使用-v收集了。

您最多可以使用-v三次来增加详细程度。因此,您可能会看到ssh -L 7000 ... -N -v -v(两个v)或ssh -L 7000 ... -N -v -v -v的输出。

@ MikeSherrill'CatRecall'也可以使用速记:-vvv

#1 楼

解决的问题:

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v


...显然,远程主机不喜欢'localhost'。但是,远程/etc/hosts包含:

::1                     localhost localhost.
127.0.0.1               localhost localhost.


而本地网络接口是

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33184
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2


感叹。对于100rp的赏金我付出了很多:)

评论


啊。好吧,我不会费心写下我的评论作为答案。 (查看ssh是否在系统上更喜欢ipv6地址。)

– Mike Sherrill的“猫召回”
13年4月1日,0:45

好吧,您建议将-v选项加倍,但这并没有显示任何新内容。但是,几天后让我再次查看输出有助于查明问题。如果您想写下答案,我很乐意为您提供赏金。

– lorenzog
13年4月1日在8:26

实际上,重点是将“ localhost”替换为“ 127.0.0.1”。附加的“ -v”参数可能会有所帮助,但它们并不是我的目标。谢谢。

– Mike Sherrill的“猫召回”
13年4月1日在11:51

根据有关超级用户的帖子:superuser.com/questions/346971/ssh-tunnel-connection-refused,配置为侦听特定地址的程序将侦听该特定地址

– jopasserat
2014年1月1日,3:09

对我来说,添加前导“:”有效,因此您的情况下的命令应如下所示:ssh -L:7000:127.0.0.1:7000 user @ host -N -v -v

–valentt
17年4月12日23:55

#2 楼

尽管OP的问题已经解决,但是我还是决定共享解决方案,因为我从ssh收到了相同的错误消息,但在其他站点上却找不到任何解决方案。

我必须连接到仅在IPv6上侦听的服务。
我尝试了以下方法:

尝试连接到http://localhost:51005都会导致如下错误:
channel 2: open failed: connect failed: Connection refused

解决方案是:方括号。

评论


如果您使用ssh配置文件怎么办?示例:“ LocalForward localhost:64160 192.168.1.56:3389”

– Northstrider
2015年11月13日,0:33

对我来说,添加前导“:”有效,因此您的情况下的命令如下所示:ssh -f root@192.168.0.18 -L:51005:127.0.0.1:51005 -N

–valentt
17年4月12日在23:54

#3 楼

我先尝试一下。

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v


最多可以使用“ -v” 3次以增加详细程度。如果防火墙阻止了端口7000,则可能会出现此消息,但是您已经排除了该可能性。 (如果以后的读者并没有排除这种情况,请查看netstat --numeric-ports的输出。)更新。我对此可能是错的。如果您想尝试,可以尝试IPV6环回地址“ 0:0:0:0:0:0:0:0:1”(或“ :: 1”)。

评论


我这边不是防火墙,但有点相似。 Web浏览器使用了打开的端口,并且浏览器中激活了一个广告阻止程序。广告拦截器显然设法导致了上述错误消息(“通道2 ...”)。关闭广告拦截器后,一切正常。

–rwoo
20-05-29在11:34

#4 楼

“ ...显然,远程主机不喜欢'localhost'。但是,远程/ etc / hosts包含:“

除非您在客户端上运行ssh,所以'localhost'不是被您的客户喜欢。远程/ etc / hosts文件用于远程连接而不是传入连接。

评论


这也让我感到困惑。当您在本地计算机上键入localhost时,它将在本地解析

–阿默多夫
18年1月31日在13:11

#5 楼

我尝试通过ssh隧道连接到另一台服务器上的mysql时遇到了同样的错误。我发现目标服务器上/etc/my.cnf中的bind-address参数绑定到我的外部ip(双NIC服务器)而不是内部ip,我没有用。

何时我设置了bind-address = 127.0.0.1,可以按如下方式成功使用ssh隧道:

ssh -N -f -L 3307:127.0.0.1:3306 user@server.name

mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword


评论


这也对我有用。您只能将MySQL绑定到一个地址。

–leeand00
15年11月23日在21:38

#6 楼

我在转发具有完整域名而不是localhost的端口时遇到此错误:完全合格的名称,我必须添加一个绑定端口说明:

ssh -L 5900:host.name.com:5900 x11vnc


这将允许从任何地方进行连接(因此不太安全,请谨慎使用)。 />

#7 楼

???


通道2:打开失败:连接失败:连接被拒绝


user@host上没有监听端口7000,这很简单,那就是全部。

评论


这不是真的。主机:7000上运行着一项服务。我还尝试了其他服务。

– lorenzog
13年3月31日在20:43

不,那么它将只是挂起连接。

– RickyA
13-10-10在9:39



@RickyA:其实不是。如果未绑定端口,则连接将被拒绝。我通过使用错误的内部端口(未运行任何服务)收到此错误,当我更正错误时,该错误消失了。 poige是正确的,因为如果端口上没有侦听任何内容,则将导致错误。

–erb
2015年10月9日9:42

#8 楼

对我来说,添加前导“:”可以使您的命令看起来像这样:

ssh -L :7000:localhost:7000 user@host -N -v


评论


时间已经过去了很多,我不能回去检查,但这看起来很棒。

– lorenzog
17年4月13日在15:44

#9 楼

在我的情况下,另一种解释是您输入的是错误的。因此,ssh将其视为无法解析的域名。糟糕!

PS:我对此进行了补充,以便我们在排查相同症状时可能出现的问题的详细列表。

#10 楼

我收到了相同的错误消息:


通道3:打开失败:连接失败:连接被拒绝


,原因是人为错误-我尝试访问远程主机上与我指定的端口不同的端口。

我以为我会分享这一点,尽管这可能不是大多数人遇到此错误的原因。

评论


就我而言:这正是我正在做的。如此愚蠢的错误,但是我用这个答案让我检查了端口。 h

–肯·夏普
18年4月19日在12:55

#11 楼

对我来说,我应该在尝试ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>时尝试ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>

我希望这对某人有帮助!

#12 楼

该行末尾缺少IP地址--ip=n.n.n.n。您应该确切指定要连接的IP。

#13 楼

对我有用的是切换命令的顺序。

所以基本上-


$ ssh user @ host -L 7000:localhost:7000 -N


奇怪