重启后无法通过SSH登录!

cod*_*rer 5 firewall debian ufw

systemctl enable ufw; systemctl start ufw我用 ufw 用“ ”和“ ”打开防火墙ufw enable。然后我将其设置为“ ufw default deny incoming”以阻止传入流量。同时,我允许 ssh 连接。到目前为止,一切都还好。我确信我可以通过 ssh 登录服务器。但重启后,我就无法再通过 ssh 登录了。我检查ufw如下:

\n
# ufw status\nStatus: active\n\nTo                         Action      From\n--                         ------      ----\n192.168.0.120 22/tcp       ALLOW       Anywhere\n
Run Code Online (Sandbox Code Playgroud)\n
# systemctl status ufw\n\xe2\x97\x8f ufw.service - Uncomplicated firewall\nLoaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor\npreset: enabled)\nActive: active (exited) since Fri 2019-07-12 17:43:24 CST; 2min 36s ago\nDocs: man:ufw(8)\nProcess: 241 ExecStart=/lib/ufw/ufw-init start quiet (code=exited,\nstatus=0/SUCCESS)\nMain PID: 241 (code=exited, status=0/SUCCESS)\nTasks: 0 (limit: 4915)\nCGroup: /system.slice/ufw.service\n
Run Code Online (Sandbox Code Playgroud)\n

ufw肯定已启用。\n之后,我再次允许 ssh 连接,就像第一次一样。\n然后我可以再次通过 ssh 登录。\n我认为这不正常。

\n

但我不知道如何解决?

\n

更新

\n
\n# systemctl status ssh\n\xe2\x97\x8f ssh.service - OpenBSD Secure Shell server\nLoaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor\npreset: enabled)\nActive: failed (Result: exit-code) since Mon 2019-07-15 11:53:22\nCST; 2min 19s ago\nProcess: 603 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255)\nProcess: 537 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)\nMain PID: 603 (code=exited, status=255)\n
Run Code Online (Sandbox Code Playgroud)\n
Jul 15 11:53:22 debian systemd[1]: Starting OpenBSD Secure Shell server...\nJul 15 11:53:22 debian systemd[1]: ssh.service: Main process exited,\ncode=exited, status=255/n/a\nJul 15 11:53:22 debian systemd[1]: Failed to start OpenBSD Secure Shell server.\nJul 15 11:53:22 debian systemd[1]: ssh.service: Unit entered failed state.\nJul 15 11:53:22 debian systemd[1]: ssh.service: Failed with result 'exit-code'\n
Run Code Online (Sandbox Code Playgroud)\n
\n# cat /etc/ssh/sshd_config:\nPort 22\nListenAddress 192.168.0.120\nKbdInteractiveAuthentication no\nChallengeResponseAuthentication no\nPermitRootLogin yes\nAllowTcpForwarding no\nAllowStreamLocalForwarding no\nGatewayPorts no\nPermitTunnel no\nAllowUsers arcstor root\nCompression yes\nPubkeyAuthentication no\nPasswordAuthentication yes\n
Run Code Online (Sandbox Code Playgroud)\n

por*_*sys 4

检查ssh状态:

# systemctl status ssh
Run Code Online (Sandbox Code Playgroud)

如果该服务被“禁用”:

# systemctl enable ssh #enable run on startup
# systemctl start ssh #start it right now
Run Code Online (Sandbox Code Playgroud)

如果您收到一些关于未启动原因的错误:

# journalctl -u ssh
Run Code Online (Sandbox Code Playgroud)

在那里您应该明白为什么它没有启动并采取相应的行动。

您还可以尝试设置 ufw 以允许来自所有地址的 ssh:

# ufw enable ssh
Run Code Online (Sandbox Code Playgroud)

编辑:回复评论:

它无法启动,但我不明白为什么。192.168.0.120 是您想要通过 SSH 连接到的设备的 IP 地址吗?它是否可能因 DHCP 而被更改?您可以通过“ip地址”进行检查。如果您的 ssh 服务器只有 1 个 IP,则实际上不需要此设置,并且在更改 IP 的情况下会导致问题。

我建议删除该软件包并重新安装它,这可能是获得默认工作环境的最快方法。但是当你删除软件包时,你也必须删除配置,在 Ubuntu(和其他 Debian 衍生品)上,你将“--purge”添加到“apt remove ssh”,尝试为你的发行版找到类似的东西。删除/重新安装后,其中不应有任何旧配置,您可以再次添加您的首选项。

 $ sudo apt remove --purge ssh
Run Code Online (Sandbox Code Playgroud)

如果您想列出要连接的 IP 地址(不是 TO),解决方案位于下面的链接中。它允许您允许某些 IP 连接,而其他 IP 则不允许(ufw 只是 iptables 的包装,因此该命令与 ufw 命令具有相同的效果)。如果你添加 TO IP,那么该 IP 必须是你的主机 SSH 设备的 IP,简而言之:我们正在尝试修复的那个,如果你只有 1 个 IP,我不明白这一点,要么你允许连接,要么不是。也许如果您在 SSH 服务器上使用了更多 IP 地址,并且您希望允许某些地址接受 SSH 连接,而其他地址则不允许。

通过 IP 地址限制对特定客户端的 SSH 访问