AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 489192
Accepted
lorenzog
lorenzog
Asked: 2013-03-20 01:32:37 +0800 CST2013-03-20 01:32:37 +0800 CST 2013-03-20 01:32:37 +0800 CST

ssh 隧道拒绝与“通道 2:打开失败”的连接

  • 772

突然间(阅读:没有改变任何参数)我的 netbsd 虚拟机开始表现得很奇怪。这些症状与 ssh 隧道有关。

从我的笔记本电脑上启动:

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

然后,在另一个外壳中:

$ 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 连接到(远程)网络服务器,结果相同。

远程主机运行 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在远程主机上运行,​​我发现了这些“错误的校验和”:

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。

想法..?

networking
  • 15 15 个回答
  • 333107 Views

15 个回答

  • Voted
  1. Best Answer
    lorenzog
    2013-04-01T12:48:24+08:002013-04-01T12:48:24+08:00

    问题解决了:

    $ 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 的赏金就这么多了:)

    • 68
  2. rzymek
    2013-09-27T00:23:54+08:002013-09-27T00:23:54+08:00

    虽然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 地址必须在方括号中。

    • 25
  3. Mike Sherrill 'Cat Recall'
    2013-04-02T03:47:07+08:002013-04-02T03:47:07+08:00

    我会先试试这个。

    $ 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”)。

    • 15
  4. bilbo baggins
    2013-04-02T06:42:03+08:002013-04-02T06:42:03+08:00

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

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

    • 4
  5. valentt
    2017-04-13T15:53:30+08:002017-04-13T15:53:30+08:00

    对我来说,添加前导“:”是有效的,因此在您的情况下命令将如下所示:

    ssh -L :7000:localhost:7000 user@host -N -v
    
    • 4
  6. Tom McQuarrie
    2014-04-04T15:55:27+08:002014-04-04T15:55:27+08:00

    我在尝试通过 ssh 隧道连接到另一台服务器上的 mysql 时遇到了同样的错误。我发现目标服务器/etc/my.cnf 中的bind-address 参数绑定到我的外部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
    
    • 3
  7. cengique
    2014-12-12T11:47:10+08:002014-12-12T11:47:10+08:00

    我在使用完整域名而不是 localhost 转发端口时遇到了这个错误:

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

    该端口仅为本地主机打开,因此要接受具有完全限定名称的连接,我必须添加绑定端口描述:

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

    这将允许来自任何地方的连接(因此它不是那么安全,请谨慎使用)。

    • 3
  8. poige
    2013-03-31T20:06:42+08:002013-03-31T20:06:42+08:00

    ???

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

    在user@host7000端口什么都没有监听,很简单,就是这样。

    • 2
  9. Hincor
    2019-07-09T01:28:20+08:002019-07-09T01:28:20+08:00

    就我而言,替代解释是您输入错误。

    user@host ~ $ ssh -vvvNL 4444:127.0.0.0.1:4444
    ...
    channel 2: open failed: connect failed: Name or service not known
    

    这里发生的是 IP 地址有一个太多的零,因此不是一个有效的地址。因此 ssh 将其视为无法解析的域名。哎呀!

    PS:我对此进行了补充,以便我们在对相同症状进行故障排除时获得可能出现的问题的完整列表。

    • 2
  10. Roei Bahumi
    2017-04-27T23:48:44+08:002017-04-27T23:48:44+08:00

    我收到了同样的错误信息:

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

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

    只是想我会分享这一点,尽管这可能不是你们中的大多数人遇到此错误的原因。

    • 1

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve