web-dev-qa-db-fra.com

Le serveur SSH ne fonctionne pas (respawns jusqu'à l'arrêt)

J'ai un serveur Ubuntu en cours d'exécution 10.04.1. Lorsque j'ai essayé de me connecter au serveur via ssh, je ne pouvais pas. Au lieu de cela, j'ai eu l'erreur connection refused. J'ai essayé de cingler la machine et j'ai eu la réponse! Donc, la raison en est que le démon SSH est arrêté.

Après le redémarrage, j’ai pu me connecter à mon serveur via ssh. Après un certain temps, j'ai consulté mes journaux /var/log/syslog et trouvé les enregistrements suivants:

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

J'ai cherché un problème/solution similaire. Certaines personnes ont expliqué que cela était dû au fait que le démon SSH essayait de démarrer avant la mise en réseau et suggéraient de changer ListenAddress dans /etc/ssh/sshd_config en 0.0.0.0. Je pense que ce n'est pas la cause dans mon cas, car mon problème survient une fois que le système est opérationnel.

Une idée de ce qui cause ça? C'est Ubuntu Server et il devrait être en cours d'exécution et accessible à distance à l'aide de SSH.

PDATE:

Voici l'extrait de journal que j'ai trouvé dans /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.

Il semble que cette erreur ait commencé à apparaître après le rechargement du démon SSH. Devrais-je éviter d'utiliser ssh reload et utiliser plutôt ssh restart?

12
Khaled

Vous devriez vérifier ce qui s’est passé juste avant SSH a commencé à patauger dans syslog. Si le sous-système réseau mourrait, cela pourrait expliquer pourquoi sshd a commencé à échouer.

Je voudrais aussi vérifier /var/log/auth.log. C'est le journal de sshd et cela pourrait vous donner un meilleur message d'erreur.

7
Oli

Je viens d'avoir le même problème sur ma boîte 12.04. C'est à dire. mêmes symptômes. Hélas, cela se produisait toujours lorsque j'ai introduit la clause ListenAddressavec les adresses inetet inet6 dans sshd_config. En bref, cela semble être le symptôme d'un sshd_config malformé - bien que les fichiers journaux ne disent rien de ce genre.

Dépannage de sshdname__

Ce que je trouve généralement très utile dans de tels cas est de démarrer sshdsans le laisser démoniser. Le problème dans mon cas était que ni syslogni auth.log n’avait rien de significatif.

Quand je l'ai démarré depuis le terminal, j'ai eu:

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

Beaucoup mieux! Ce message d'erreur m'a permis de voir ce qui n'allait pas et de le réparer. Aucun des fichiers journaux ne contenait cette sortie.

NB: au moins sur Ubuntu, la $(which sshd) est la meilleure méthode pour satisfaire à sshdl'exigence d'un chemin absolu. Sinon, vous obtiendrez l'erreur suivante: sshd re-exec requires execution with an absolute path. Le -p 10222 permet à sshdd'écouter ce port alternatif, en surchargeant le fichier de configuration, afin d'éviter tout conflit avec des instances sshdpotentiellement en cours d'exécution. Assurez-vous de choisir un port libre ici.

Cette méthode m'a souvent aidé à trouver des problèmes, que ce soit des problèmes d'authentification ou d'autres types. Pour obtenir une sortie vraiment détaillée vers stdoutname__, utilisez $(which sshd) -Ddddp 10222 (notez le ddajouté pour augmenter la verbosité). Pour plus de qualité du débogage, vérifiez man sshd.

16
0xC0000022L

Cela semble être le résultat du bogue n ° 687535, qui a été corrigé récemment dans natty, et qui a été téléchargé à la fois sur maverick et lucid en tant que mise à jour proposée.

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

J'encourage tout le monde à y aller, à essayer le scénario de test (recherchez TEST CASE) et à publier vos résultats à la fois avant et après l'installation du correctif proposé. Cela aidera l’équipe de la SRU à décider que la vérification a été effectuée et la publiera sous forme de mise à jour.

4
SpamapS

Dans /etc/ssh/sshd_config, assurez-vous que toutes les options oui et non sont en minuscule. Par exemple, si vous définissez PermitRootLogin No, ssh ne démarrera pas. En fait, il doit s'agir de PermitRootLogin no.

2
Flow

J'ai eu un problème similaire avec une image Ubuntu 11.10 sur une Linode après le redémarrage. Le service SSH produirait dans 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

C'est une boîte de test, et il y avait environ 60 jours de disponibilité, alors quelque part, j'ai installé quelque chose qui a été ajouté au bas de sshd_config:

ClientAliveInterval 60
ClientCountAliveMax 60

Commenter ces lignes a permis à ssh de commencer.

1
joe

Ubuntu ssh ne voulait pas démarrer et syslog donnait "le processus principal init: ssh (2044) terminé avec le statut 255"

/ usr/sbin/sshd -Ddp 10222

Sûrement travaillé pour moi pour déterminer l'erreur de ligne sshd_config

0
user652460