我从笔记本电脑启动: >
$ 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扎根了。 想法..?
#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
奇怪
评论
要进行故障排除,请尝试$ 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