重新启动 14.04 服务器后是什么导致了 SSH 问题?

Tom*_*man 17 server ssh openssh 14.04

为什么重新启动运行 Ubuntu 14.04 的服务器会出现“连接被拒绝”错误?

我看到ssh: connect to host <IP-address-here> port 22: Connection refused但仅适用于 14.04 并且仅在重新启动之后。我在家里使用 12.04 桌面版。我该如何解决这个问题?


为了使问题更清楚,以下是对我有用或不起作用的内容:

  • SSH 进入全新安装的 12.04 > 注销 > SSH 再次进入 > 有效
  • SSH 进入 12.04 的全新安装 > 重新启动 > SSH 再次进入 > 有效
  • SSH 进入 14.04 的全新安装 > 注销 > SSH 再次进入 > 有效
  • SSH 进入 14.04 的全新安装 > 重新启动 > SSH 再次进入 > 连接被拒绝

我遇到的问题是 14.04 独有的,只有在重新启动后才会发生。在此之前,我有几台运行 12.04 的服务器,一切仍然运行良好。我有一台新服务器,我想在其上使用 14.04,我想了解出了什么问题。有什么建议?


这是我迄今为止尝试过的:

sudo traceroute -p 22 -T <IP-address-here>
Run Code Online (Sandbox Code Playgroud)

Traceroute 工作正常,我在 SSH 端口 22 上收到来自服务器的响应。

initctl list
...
ssh start/running, process 23371
...
Run Code Online (Sandbox Code Playgroud)

看起来 14.04 服务器上的 ssh 设置为启动时启动(如预期)。

tom@Desktop:~$ ssh -vvv root@<IP-address-here>
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
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 <IP-address-here> [<IP-address-here>] port 22.
debug1: connect to address <IP-address-here> port 22: Connection refused
ssh: connect to host <IP-address-here> port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

编辑:这是来自新创建的机器整个系统日志。我创建了它,SSH 输入并发出reboot now命令,然后在等待它重新启动并第二次尝试 SSH 后收到连接被拒绝的错误。通过主机控制面板硬重启,现在 SSH 连接再次工作。

Ben*_*oit 18

快速回答:

SSH 不是问题。你用来重启的命令是有问题的:不要做reboot now,做rebootshutdown -r now重启你的系统。

命令语法(自 13.04 起)为:

reboot [OPTION]...  [REBOOTCOMMAND]
Run Code Online (Sandbox Code Playgroud)

REBOOTCOMMAND以前从来没有存在过。在 12.04 中,您now只是被忽略了,但现在它正在被使用......它破坏了一切。

长答案,附上我的测试结果和解释:

我有一些运行 14.04 和 VPS 的服务器(托管在法国 OVH 提供商 - 运行 OpenVZ)reboot now以及在服务器内部执行时遇到类似问题。

像您一样,我reboot now从控制台发出了命令(使用 SSH 登录)。按下 几秒钟后RETURN,我的会话会自动断开连接。像您一样,在发出此命令后,我一直无法通过 SSH 重新连接到服务器。

所以,我决定打开OVH提供的KVM控制台。(模拟这种虚拟服务器在物理服务器上使用键盘和屏幕的直接访问)。

我能够连接到我的机器,我看到她正在进入单用户模式,等待我按CTRL+D继续或输入 root 密码进​​入维护模式。我按下组合键让进程继续,然后能够再次通过 SSH 进入我的系统。我惊讶地看到,运行后uptime,正常运行时间不是 2 或 3 分钟,而是很多天:reboot now在 Ubuntu 14.04 VPS 内执行并没有真正重新启动,而只是要求进入单用户模式!

由此,我学会了永远不要从我的 VPS 中请求重启,而是从主机管理界面上提供的命令中请求它。

因此,您的 SSH 安装没有问题。问题是当你输入reboot now. 事实上,我后来也对它进行了测试,如果你输入了reboot(只是这个词,没有选项),它就会完成你想要做的事情:重新启动服务器。

使用reboot参数(来自手册页)shutdown使用给定参数调用命令。事实上,如果我执行shutdown now,我有相同的行为:系统没有重新启动,它进入单用户模式。

备注:看起来这是预期的行为,因为点击执行此命令后出现在屏幕上的消息是这样的:

系统将进入维护模式

维护模式或单用户模式,这代表相同,一个运行级别,不仅仅是一个shell,没有网络,没有网络进程,......

这可能会令人困惑,但请注意,正确的用法shutdown是,例如:shutdown -h now立即停止系统或shutdown -r now立即重新启动系统。我不知道shutdown now这只会使系统进入单用户模式。我通常这样做init S来实现这一目标。