突然之间(阅读:未更改任何参数),我的netbsd虚拟机开始表现异常。症状与ssh隧道有关。
从我的笔记本电脑启动:
$ ssh -L 7000:localhost:7000 [email protected] -N -v
然后,在另一个Shell中:
$ irssi -c localhost -p 7000
Ssh调试说:
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 [email protected]:/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守护程序无济于事。我尚未重启-也许这里有人可以建议其他诊断。我认为它可能是虚拟网卡驱动程序,也可能是植根于我们ssh的人。
想法..?
问题解决了:
$ ssh -L 7000:127.0.0.1:7000 [email protected] -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的赏金我付出了很多:)
尽管OP的问题已经解决,但我还是决定为我的问题共享解决方案,因为我从ssh收到了相同的错误消息,而在其他站点上却找不到任何解决方案。
就我而言,我必须连接到仅侦听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
会导致如下错误:channel 2: open failed: connect failed: Connection refused
解决方案是:
ssh -f [email protected] -L 51005:[:: 1]:51005 -N
IPv6地址必须放在方括号中。
我先试试这个。
$ ssh -L 7000:127.0.0.1:7000 [email protected] -N -v -v
您最多可以使用“ -v” 3次来增加详细程度。
我认为如果防火墙阻止端口7000会出现此错误消息can,但是您已经排除了该错误消息。 (如果以后的读者没有排除这种情况,请查看netstat --numeric-ports
的输出。)
我think我可能很久以前就看到了此错误消息,当时ssh在更新后首次意识到IPV6地址。我对此可能是错的。如果您想尝试,可以尝试IPV6环回地址“ 0:0:0:0:0:0:0:0:1”(或“ :: 1”)。
“ ...显然,远程主机不喜欢'localhost'。但是,远程/ etc/hosts包含:”
除非您在客户端上运行ssh,否则客户端不喜欢'localhost'。远程/ etc/hosts文件用于远程连接out而不是incoming连接。
我试图通过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 [email protected]
mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword
当我转发带有完整域名而不是localhost的端口时遇到此错误:
ssh -L 5900:Host.name.com:5900 x11vnc
该端口仅为本地主机打开,因此要接受具有完全限定名称的连接,我必须添加绑定端口描述:
ssh -L *:5900:Host.name.com:5900 x11vnc
这将允许从任何地方进行连接(因此安全性不高,请谨慎使用)。
就我而言,替代解释是您输入的错误。
[email protected] ~ $ ssh -vvvNL 4444:127.0.0.0.1:4444
...
channel 2: open failed: connect failed: Name or service not known
这里发生的是该IP地址具有太多的零,因此不是有效地址。因此,ssh将其视为无法解析的域名。糟糕!
PS:我对此进行了补充,因此在对相同症状进行故障排除时,我们会全面列出可能出现的问题。
对我来说,添加前导“:”有效,因此您的情况下的命令应如下所示:
ssh -L :7000:localhost:7000 [email protected] -N -v
对我来说,我正在尝试ssh -L <port>:<remote server IP>:<port> <login>@<remote server IP>
当我应该做ssh -L <port>:127.0.0.1:<port> <login>@<remote server IP>
。
我希望这可以帮助别人!
我收到了相同的错误消息:
通道3:打开失败:连接失败:连接被拒绝
原因是人为错误-我试图访问远程主机上与我指定的端口不同的端口。
只是想与我分享一下,尽管这可能不是大多数人都遇到此错误的原因。
缺少IP地址--ip=n.n.n.n
在行尾。您应该确切指定要连接的IP。
对我有用的是切换命令的顺序。
所以基本上-
$ ssh user @ Host -L 7000:localhost:7000 -N
奇怪