SSH 服务器不工作(重新启动直到停止)

SSH 服务器不工作(重新启动直到停止)

我正在运行 Ubuntu Server 10.04.1。当我尝试通过 ssh 登录服务器时,却无法登录。相反,我得到了connection refused错误。我尝试 ping 机器,得到了回复!所以,很明显的原因是 SSH 守护进程已停止。

重启后,我可以通过 ssh 登录到我的服务器。过了一段时间,我查看了日志/var/log/syslog,发现了以下记录:

Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2465) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2469) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2473) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2477) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2481) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2485) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2489) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2493) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2497) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2501) terminated with status 255
Jan 16 10:57:09 myserver init: ssh respawning too fast, stopped

我搜索了类似的问题/解决方案。有人说这是由于 SSH 守护程序试图在联网之前启动而导致的,他们建议将 更改为ListenAddress。我认为这不是我的情况的原因,因为我的问题发生在系统启动并运行之后。/etc/ssh/sshd_config0.0.0.0

知道是什么原因造成的吗?这是 Ubuntu Server,它应该正在运行并使用 SSH 进行远程访问。

更新:

这是我在中找到的日志片段/var/log/auth.log

Jan 16 10:56:38 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/vim /etc/ssh/sshd_config
Jan 16 10:57:09 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/etc/init.d/ssh reload
Jan 16 10:57:09 myserver sshd[1465]: Received SIGHUP; restarting.
Jan 16 10:57:09 myserver sshd[2461]: Server listening on 0.0.0.0 port 22.
Jan 16 10:57:09 myserver sshd[2465]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2465]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2469]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2469]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2473]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2473]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2477]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2477]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2481]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2481]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2485]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2485]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2489]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2489]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2493]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2493]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2497]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2497]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2501]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2501]: fatal: Cannot bind any address.

似乎在我重新加载 SSH 守护程序后才开始出现此错误。我应该避免使用ssh reload而改用ssh restart吗?

答案1

我刚刚在 12.04 机器上遇到了同样的问题。即同样的症状。唉,当我在 中引入ListenAddress带有inetinet6地址的子句时,总是会发生sshd_config这种情况。简而言之,这似乎是格式错误的症状sshd_config- 尽管日志文件没有说明任何类似情况。

故障排除sshd

我发现,在这种情况下,启动时sshd不让其成为守护进程通常非常有用。我遇到的问题是,syslog或都没有auth.log显示任何有意义的内容。

当我从终端启动它时,我得到:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

好多了!这个错误消息让我看到了问题所在并修复了它。两个日志文件都没有包含此输出。

注意:至少在 Ubuntu 上,这$(which sshd)是满足sshd绝对路径要求的最佳方法。否则您将收到以下错误:sshd re-exec requires execution with an absolute path-p 10222使监听sshd该替代端口,覆盖配置文件 - 这样它就不会与可能正在运行的sshd实例发生冲突。确保在此处选择一个空闲端口。

这种方法帮助我多次发现问题,无论是身份验证问题还是其他类型的问题。要获得真正详细的输出stdout,请使用$(which sshd) -Ddddp 10222(注意添加dd以增加详细程度)。要获得更多调试优点,请查看man sshd


此方法的主要优点是它允许您检查sshd配置没有必须sshd在默认端口上重新启动。通常情况下这不会干扰现有的 SSH 连接,但我见过这种情况。因此,这允许人们在可能切断对远程服务器的访问之前验证配置文件(例如,我对一些 VPS 甚至物理服务器都这样做,我需要额外付费才能获得对机器的带外访问)。

答案2

你应该检查一下刚才发生了什么SSH 开始陷入困境syslog。如果网络子系统崩溃,这就可以解释为什么sshd开始失败。

我还会检查/var/log/auth.log。这是sshd的日志,它可能会给你一个更好的错误消息。

答案3

这似乎是错误 #687535 的结果,该错误最近在 natty 中被修复,并且作为建议的更新上传到 maverick 和 lucid。

https://bugs.launchpad.net/ubuntu/lucid/+source/openssh/+bug/687535

我鼓励大家去那里,尝试测试用例(搜索测试用例),并在安装建议的修复之前和之后发布您的结果。这将有助于 SRU 团队确定验证已完成并将其作为更新发布。

答案4

重启后,我在 Linode 上的 Ubuntu 11.10 映像上遇到了类似的问题。ssh 服务会在 syslog 中生成:

Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3419) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3422) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh respawning too fast, stopped

它是一个测试箱,大约有 60 天的正常运行时间,因此在某个时候,我安装了一些东西,附加到 sshd_config 的底部:

ClientAliveInterval 60
ClientCountAliveMax 60

注释掉这些行可以让 ssh 启动。

相关内容