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
    • 最新
    • 标签
主页 / user-1209858

Paul Reynolds's questions

Martin Hope
Paul Reynolds
Asked: 2025-01-19 23:55:14 +0800 CST

无法通过 ssh 隧道连接到服务器

  • 5

我正尝试通过互联网通过 ssh 隧道连接到正在路由器后面的远程计算机端口上监听的服务。我在本地计算机和远程计算机上拥有 root 权限,并且对路由器拥有管理员访问权限。远程计算机的防火墙拒绝除其 ssh 端口(假设为 2222)之外的所有传入连接。端口 2222 由路由器转发,本地计算机的 ssh 客户端也在使用此端口。我能够使用 通过互联网从本地计算机连接到远程计算机ssh <my_user>@<router public ip>,从而获得一个 shell。

到目前为止一切顺利。要设置隧道,我运行

ssh -D 5555 <my_user>@<router public ip>

然后我按预期在远程计算机上获得了一个 shell。在本地计算机的输出中,sudo ss -tap | grep ssh我可以看到 ssh 客户端正在监听本地主机端口 5555,充当 SOCKS5 服务器,并且已建立隧道连接:

LISTEN 0 0                  127.0.0.1:5555             0.0.0.0:*    users:(("ssh", pid=...))    
ESTAB  0 0 <local machine private ip>:40632 <router public ip>:2222 users:(("ssh", pid=...))

40632 是 ssh 客户端使用的随机传出端口。我告诉我的应用程序客户端使用 localhost:5555 处的 SOCKS5 服务器,并尝试通过隧道通过其 GUI 连接到应用程序服务器。这失败了,GUI 中出现输入/输出错误,在终端中我得到

channel 3: open failed: connect failed: Connection refused

在远程机器的 auth.log 中我得到了

sshd[<pid>]: error: connect_to <router public ip> port 5555 failed

在阅读了有关此问题的大量其他来源后,我发现“通道 3”消息通常是由于远程计算机上没有服务在端口 5555 上侦听。我猜想远程计算机上的 sshd 无法传递现在未加密的数据包。在我的例子中,应用程序服务正在侦听远程端口 5555:我可以在 ss 的输出中看到这一点,并且我还能够在远程计算机上使用 nc 连接到该端口,从而在 ss 输出中生成已建立的内部连接。

我认为相关错误消息来自远程计算机的 sshd。这告诉我 sshd 正在尝试连接到路由器的公共 IP 地址端口 5555,该端口未转发,因此无法连接(我已通过允许路由器转发此端口来验证这一点,但这对我来说不是一个解决方案)。我的印象是隧道正在运行,直到远程 sshd 应将数据包传递到远程目标端口的部分。

远程计算机上的 sshd 不应该尝试连接到远程计算机的 localhost:5555 而不是使用公共 IP 地址吗?我可能在这里配置不正确吗?

通过路由器转发 5555 会破坏隧道,所以我肯定设置错了。还有一件事要提一下,当我通过 LAN 执行所有操作时,隧道可以正常工作。正如我上面所说,通过互联网进行简单的 ssh 连接也可以正常工作。我还检查了远程计算机的防火墙没有阻止任何东西,事实确实如此(ufw.log 中没有阻止)。

如果我遗漏了任何关键细节,请告诉我。任何关于这方面的想法都将不胜感激!谢谢。

ssh-tunnel
  • 2 个回答
  • 50 Views

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