突然(读:不改变任何参数)我的netbsd virtualmachine开始行为奇怪。 症状涉及SSH隧道。
从我的笔记本电脑启动:
$ ssh -L 7000:localhost:7000 user@host -N -v
然后,在另一个shell:
$ irssi -c localhost -p 7000
sshdebugging说:
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
我也尝试使用localhost:80连接到(远程)Web服务器,结果相同。
远程主机运行NetBSD:
bash-4.2# uname -a NetBSD host 5.1_STABLE NetBSD 5.1_STABLE (XEN3PAE_DOMU) #6: Fri Nov 4 16:56:31 MET 2011 root@youll-thank-me-later:/m/obj/m/src/sys/arch/i386/compile/XEN3PAE_DOMU i386
我有点失落。 我尝试在远程主机上运行tcpdump
,并发现这些“坏chksum”:
09:25:55.823849 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 67, bad cksum 0 (->3cb3)!) 127.0.0.1.54381 > 127.0.0.1.7000: P, cksum 0xfe37 (incorrect (-> 0xa801), 1622402406:1622402421(15) ack 1635127887 win 4096 <nop,nop,timestamp 5002727 5002603>
我试图重新启动SSH守护进程无济于事。 我还没有重新启动 – 也许这里有人可以build议其他诊断。 我认为它可能是虚拟网卡驱动程序,或者有人根植于我们的SSH。
想法..?
问题解决了:
$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v
显然,' 本地主机 '不被远程主机所喜欢。 然而,远程/etc/hosts
包含:
::1 localhost localhost. 127.0.0.1 localhost localhost.
而本地networking接口是
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的奖金我穿上:)
虽然OP的问题已经解决了,但是我决定为我的问题分享解决scheme,因为我从ssh得到了同样的错误信息,而且在其他站点上我没有find任何解决scheme。
在我的情况下,我不得不连接到只侦听IPv6的服务。 我试过了:
ssh -f [email protected] -L 51005:127.0.0.1:51005-N ssh -f [email protected] -L 51005:localhost:51005-N
和其他一些方法,但没有奏效。 任何连接到http://localhost:51005
尝试http://localhost:51005
导致如下错误: channel 2: open failed: connect failed: Connection refused
解决scheme是:
ssh -f [email protected] -L 51005:[:: 1]:51005-N
IPv6地址必须在方括号内。
我会先试试这个。
$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v
您最多可以使用“-v”3次以增加详细程度。
如果防火墙阻塞端口7000,我想这个错误信息可能会出现,但是你已经排除了。 (如果后来的读者没有排除这个问题,请查看netstat --numeric-ports
的输出。)
我想我可能很久以前就看到了这个错误信息,当ssh第一次知道更新后的IPV6地址的时候。 我可能是错的。 如果您想尝试一下,可以尝试IPV6环回地址“0:0:0:0:0:0:0:1”(或“:: 1”)。
我试图通过ssh隧道连接到另一台服务器上的mysql时遇到了同样的错误。 我发现目标服务器上的/etc/my.cnf中的bind-address参数绑定到了我的外部ip(双网卡服务器),而不是内部的,我没有使用它。
当我设置绑定地址= 127.0.0.1,我可以成功地使用我的SSH隧道,如下所示:
ssh -N -f -L 3307:127.0.0.1:3306 [email protected] mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword
我在使用完整域名而不是本地主机转发端口时遇到了此错误:
ssh -L 5900:host.name.com:5900 x11vnc
该端口仅为localhost打开,因此要接受具有完全限定名称的连接,必须添加一个绑定端口说明:
ssh -L *:5900:host.name.com:5900 x11vnc
这将允许从任何地方连接(所以它不是那么安全,使用它保守)。
???
通道2:打开失败:连接失败:连接被拒绝
在user@host
没有什么监听端口7000,这很简单,这一切。
“…显然,'localhost'不被远程主机所喜欢,然而远程/ etc / hosts包含:”
除了你在客户端运行ssh,所以'localhost'不被你的客户所喜欢。 远程/ etc / hosts文件是用于远程连接而不是传入连接。
对于我来说,添加领先的“:”的作品,所以在你的情况下命令是这样的:
ssh -L :7000:localhost:7000 user@host -N -v
我收到了同样的错误信息:
通道3:打开失败:连接失败:连接被拒绝
原因是人为错误 – 我试图访问远程主机上的一个不同的端口比我指定的。
只是想我会分享,虽然这可能不是你们大多数人遇到这个错误的原因。
对我来说,当我本来应该做ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>
ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>
时,我正在尝试ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>
ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>
。
我希望这可以帮助别人!