SSH 服务器不响应连接请求

SSH 服务器不响应连接请求

我正在尝试使用 OpenSSH 在本地计算机上设置 SSH 服务器。当我尝试从远程主机通过 SSH 连接到本地 SSH 服务器时,SSH 服务器没有响应并且请求超时。我很确定有一个非常明显的解决方案可以解决这个问题,但我只是忽略了。

当我尝试从远程主机通过 SSH 登录时,会发生以下情况:

yoshimi@robots:/$ ssh -vv [email protected]
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out

我的远程主机在哪里robots99.3.26.94我的本地 SSH 服务器在哪里。

SSH 正在运行

volt@arnold:~$ ps -A | grep sshd
 5784 ?        00:00:00 sshd

arnold我的本地 SSH 服务器在哪里?

路由器上设置端口转发

我已将家庭路由器设置为将端口 80 和 22 转发到我的 SSH 服务器。有趣的是,端口 80 运行顺利——直接进入 Apache Web 目录。端口 22——没那么多。

NMap 说它已被过滤

yoshimi@robots:/$ nmap -p 22 99.3.26.94

Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds

我的远程主机在哪里robots99.3.26.94我的本地 SSH 服务器在哪里。

这不是 IPTables(我认为)

volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

...而且我没有安装任何其他防火墙——这是一个相对较新的 Debian netinst。

那么,那么:还能是什么?它确实看起来像是防火墙之类的东西,只是忽略流量,但如果它不是路由器,它不是 iptables,也不是 SSH 服务器上的另一个防火墙,......还有什么?

编辑:来自内部网络的连接请求错误

yoshimi@robots:/$ ssh [email protected]
ssh: connect to host 192.168.1.90 port 22: No route to host

答案1

非常令人失望的自我回答

把这个问题搁置一天,然后回来解决这个问题,我既松了一口气,又感到不安(更多的是不安而不是如释重负),我发现一切都神秘地正常工作。

那么,问题是什么?

没有更改或调整任何设置——路由器上、SSH 服务器上、SSH 客户端计算机上都没有。可以相当肯定地说,尽管设置正确,但路由器未能正确处理传入流量。鉴于小型家庭路由器软件不是真的设计用于处理端口转发,这个可怜的家伙花了一段时间才实施必要的更改。

但已经过去了 6 个小时!

是的,伙计,我知道。我花了一整天的时间试图找出问题所在,但始终没有找到,因为不是哪里不对了。显然,路由器设置可能需要 6 小时(可能更长)才能生效。

那么我如何知道这是否是我的问题?

我在这次冒险中遇到的一个很棒的工具是tcpdump.这个瘦小的家伙会为您嗅探流量,为您提供有关实际情况的宝贵见解。另外,他还有一些超级过滤功能,可以让你精确地缩小你想要查看/查找的内容。例如,命令:

tcpdump -i wlan1 port 22 -n -Q inout

指示通过 wlan1 接口( =“接口”)tcpdump查找流量,仅通过端口 22,忽略 DNS 名称解析( =“无名称解析”),并且我们希望查看传入和传出流量(接受、或;是默认值)。-i-n-Qinoutinoutinout

通过在 SSH 服务器上运行此命令,同时尝试通过远程计算机进行连接,很快就会清楚问题所在。本质上有3种可能性:

  1. 如果你看到传入来自远程机器的流量,但是没有传出来自本地服务器的流量,问题出在服务器上:可能需要更改防火墙规则等。
  2. 如果你看到传入和传出,但您的远程计算机没有收到响应,它很可能是路由器:它允许传入流量,但丢弃传出数据包。
  3. 如果有根本没有交通,这也可能是路由器问题:远程计算机的SYN数据包在到达您的服务器之前就被路由器忽略并丢弃。

一旦发现问题所在,修复(通常)就很简单了。

答案2

我正在运行 Mint (Ubuntu)。

我已经完成了所有操作...在authorized_keys中以正确的格式公钥,chmodding,chowning,重新启动ssh和sshd等。正如所有地方都有记录的那样。

对我来说,它是 ufw 防火墙。根本没有任何 ssh 响应让我意识到了这一点,但我在 LAN 上双向 ping 通都没有问题。

我测试通过:

sudo ufw service stop

...并且它工作得很好,即我收到了 ssh 调用的响应。

所以,再次启动 ufw:

sudo ufw service start

...并添加规则:

sudo ufw allow openssh

现在一切正常。

答案3

如果您像我一样启用了 UFW(在 Linux 上,在我的例子中是 Ubuntu),请尝试以下操作:

sudo ufw enable OpenSSH

这将允许防火墙中的 OpenSSH。

答案4

大多数时候,防火墙是罪魁祸首。做service iptables stopservice ip6tables stop.

如果停止服务不起作用,则执行 iptable 刷新。

iptables --flush

如果它是虚拟机,则在主机中也执行相同的操作

相关内容