Ubuntu 16.04 局域网上的 ssh 失败,并显示“连接被拒绝”

Ubuntu 16.04 局域网上的 ssh 失败,并显示“连接被拒绝”

我在同一个局域网中拥有一台台式机和一台笔记本电脑,都运行着 Ubuntu 16.04 x64。两台电脑都安装并运行着 openssh 和 openssh-server。在两台电脑上,ssh访问 localhost 都运行正常,而另一台电脑上都无法 ssh ,而是失败了connection refused。更准确地说,这会导致同样的错误,尽管 ip 是我尝试使用的那台电脑的 ip。每台电脑都可以访问另一台电脑。两台电脑都使用公钥进行身份验证。 ,并且都失败了,并出现同样的错误。我尽我所能尝试验证两台电脑上都没有防火墙阻止 ssh 流量(但欢迎在此处进行额外测试)。ssh [email protected]pingsftptelnetssh-copy-id

我可能做错了什么以及我该如何解决这个问题?

我很乐意为任何相关检查提供输出结果。

答案1

我发现解决 ssh 连接问题的最简单方法是使用客户端和服务器应用程序的调试模式。

在一台机器上,我们将其称为 pcA,打开终端并运行以下命令:

/usr/sbin/sshd -d -p 2222

在另一台 Linux 机器 pcB 上输入此命令并观察 pcA 上的服务器输出:

ssh -vv -p 2222 [IP Address of pcA]

我们在这里做的是在 pcA 上运行 ssh 守护程序的“前台”版本,监听端口 2222 上的连接,以调试(详细)模式运行。在 pcB 上,我们尝试以详细模式在端口 2222 上作为 ssh 客户端连接到 pcA。

  • pcA 和 pcB 都会输出表示它们所看到的连接过程的流程的文本。

  • 通常结果足以使解决方案显而易见,例如 ~/.ssh 目录上的权限。

    一些建议:

    如果服务器完全看不到来自 pcB 的连接尝试,则表明存在某种防火墙或网络路由问题。在这种情况下,尝试使用 nmap 从 pcB 在同一端口上进行网络扫描:nmap -p 2222 [ip address pcA]

    您还可以使用语法调用 nmapnmap -A [ip address pcA]进行常规扫描(包括标准 sshd 端口(22)和跟踪路由信息。这可能表明东西在哪里被丢弃(路由器防火墙?)

  • 如果不太明显,请在问题中发布客户端和服务器的结果。

更新

在 pcA 上运行该命令netstat -tulpn,查看该机器上的哪些端口正在监听。它将为您提供如下输出:

Proto Recv-Q  Send-Q   Local Address       Foreign Address      State    PID/Program name
tcp     0       0      0.0.0.0:22            0.0.0.0:*          LISTEN     1133/sshd
tcp6    0       0      :::22                 :::*               LISTEN     1133/sshd
udp     0       0      0.0.0.0:68            0.0.0.0:*                     722/dhclient

如果您运行它并且 sshd 在端口 22 上正常运行。请在 pcA 上发布对此命令的响应。

第二次更新 看到您的回复 - ListenAddress 之前设置为什么?通常默认为 0.0.0.0(即任意地址),并且不会出现任何问题。

答案2

好的,我刚刚在行上手动添加了ip我的机器的 s 。优点:我终于可以 ssh 了。缺点:这可能是一种可怕的、不可扩展的黑客攻击;如果我需要从 LAN 外 ssh 进入我的机器,我可能会遇到真正的麻烦。 ListenAddress/etc/ssh/sshd_config

相关内容