SSH服务器无法正常工作(重生直到停止)


12

我有一个正在运行的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 reloadssh restart改用吗?


还要签出这个。sshd_config sintaxis bugs.launchpad.net/ubuntu/+source/openssh/+bug/911753

Answers:


7

您应该检查一下SSH开始陷入困境之前发生了什么syslog。如果网络子系统死了,那可以解释为什么sshd开始失败。

我也会检查/var/log/auth.log。它是sshd的日志,它可能会给您带来更好的错误消息。


谢谢!我在auth.log文件中找到许多条目,并更新了我的问题。
哈立德

reload应该是有效的措施。它应该触发内部重新启动(并且似乎已尝试重新启动并被卡住)。尝试重新加载,然后查看是否再次卡住。
奥利

确实,重新加载应该是有效的,但是有一个错误。查看我的答案以获取更多信息。
SpamapS 2011年

16

我在12.04机器上遇到了同样的问题。即相同的症状。las,当我在中引入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。make -p 10222sshd监听该备用端口,从而覆盖配置文件-这样就不会与可能在运行的sshd实例发生冲突。确保在此处选择一个空闲端口。

这种方法已经帮助我很多次寻找问题,无论是身份验证问题还是其他类型。要获得真正冗长的输出stdout,请使用$(which sshd) -Ddddp 10222(请注意添加dd以增加详细程度)。有关更多调试的信息,请检查man sshd


此方法的主要优点是,它使您无需重新启动默认端口即可检查sshd配置。通常,这应该不会干扰现有的SSH连接,但是我已经看到了。因此,这可以使用户在(可能)切断对远程服务器的访问之前验证配置文件(例如,对于某些VPS甚至对于物理服务器,我都需要对其进行额外付费才能获得带外访问)到机器上)。sshd


3
您的直接调用技巧刚刚保存了我的培根。我的sshd_config文件(由Chef生成)出现错误,可以使用此技术解决。感谢您抽出宝贵的时间将其发布给所有人。
彼得·莱尔德

4

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

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

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


2

在中/etc/ssh/sshd_config,请确保所有的yes和no选项均使用小写字母。例如,如果您设置PermitRootLogin No,则ssh将不会启动。实际上必须如此PermitRootLogin no


1

重新启动后,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启动。


0

Ubuntu ssh无法启动,并且syslog产生“ init:ssh主进程(2044)终止,状态为255”

/ usr / sbin / sshd -Ddp 10222

确定可以为我确定sshd_config行错误


-1

同样的问题,上层解决方案不起作用,但是我有解决方案。

root@imt:~# sshd
sshd re-exec requires execution with an absolute path
ssh localhost
ssh: connect to host localhost port 22: Network is unreachable

路径是每个文档确定,所以我手动运行sshd。

root@imt:~# /usr/sbin/sshd 
/var/run/sshd must be owned by root and not group or world-writable

/ var / run / sshd权限是。

root@imt:~# ls -ld /var/run/sshd
drwsrwsrwt 2 root root 40 Jan  5 12:58 /var/run/sshd

root@imt:~# chmod 755 /var/run/sshd

那很好 运行ssh localhost并检查。

root@imt:~# ssh localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 64:93:fd:ab:4c:f9:7b:8a:86:60:22:f7:56:fa:ea:cc.
Are you sure you want to continue connecting (yes/no)? yes

1
虽然这是一个有用的指南,但显然不是导致OP sshd无法正确运行的原因,正如您从其日志中非常不同的错误消息中可以看到的那样。-1
David Foerster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.