Server SSH non funzionante (respawn fino all'arresto)


12

Ho un Ubuntu Server 10.04.1 in esecuzione. Quando ho provato ad accedere al server tramite ssh, non ci sono riuscito. Invece, ho ricevuto un connection refusederrore. Ho provato a eseguire il ping della macchina e ho ricevuto risposta! Quindi, il chiaro motivo è che il demone SSH è stato arrestato.

Dopo il riavvio, sono stato in grado di accedere al mio server tramite SSH. Dopo qualche tempo, ho esaminato i miei registri /var/log/sysloge ho trovato i seguenti record:

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

Ho cercato un problema / soluzione simile. Alcune persone hanno detto che questo è causato dal demone SSH che tenta di iniziare prima della rete e suggeriscono di cambiare ListenAddressin /etc/ssh/sshd_configessere 0.0.0.0. Penso che questa non sia la causa nel mio caso, perché il mio problema si verifica dopo che il sistema è attivo e funzionante.

Qualche idea di cosa sta causando questo? Questo è Ubuntu Server e dovrebbe essere in esecuzione e accessibile in remoto tramite SSH.

AGGIORNARE:

Ecco lo snippet di registro in cui ho trovato /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.

Sembra che questo errore abbia iniziato a comparire dopo che ho ricaricato il demone SSH. Dovrei evitare di usare ssh reloade usare ssh restartinvece?


Dai un'occhiata anche a questo. Potrebbe esserci un problema con sshd_config sintaxis bugs.launchpad.net/ubuntu/+source/openssh/+bug/911753

Risposte:


7

Dovresti controllare per vedere cosa è successo poco prima che SSH iniziasse a vacillare syslog. Se il sottosistema di rete è morto, ciò potrebbe spiegare perché ha sshdiniziato a fallire.

Vorrei anche controllare /var/log/auth.log. È il sshdregistro e potrebbe darti un messaggio di errore migliore.


Grazie! Ho trovato molte voci nel auth.logfile e ho aggiornato la mia domanda.
Khaled,

reloaddovrebbe essere un'azione valida. Si dovrebbe attivare un riavvio interno (e sembra che hanno tentato e ha ottenuto appena bloccato). Prova a ricaricare di nuovo e vedi se si blocca di nuovo.
Oli

in effetti, ricaricare dovrebbe essere valido, ma c'è un bug. Vedi la mia risposta per maggiori informazioni.
SpamapS

16

Ho appena avuto lo stesso problema sulla mia scatola 12.04. Vale a dire gli stessi sintomi. Purtroppo, è sempre successo quando ho introdotto la ListenAddressclausola con gli indirizzi inete inet6in sshd_config. In breve, questo sembra essere un sintomo di un formato errato sshd_config, sebbene i file di registro non abbiano indicato nulla del genere.

Risoluzione dei problemi sshd

Quello che trovo generalmente molto utile in questi casi è iniziare sshdsenza lasciarlo demonizzare. Il problema nel mio caso è stato che né syslogauth.logha mostrato qualcosa di significativo.

Quando l'ho avviato dal terminale ho ottenuto:

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

Molto meglio! Questo messaggio di errore mi ha permesso di vedere cosa c'è che non va e risolverlo. Nessuno dei file di registro conteneva questo output.

NB: almeno su Ubuntu $(which sshd)è il metodo migliore per soddisfare i sshdrequisiti di un percorso assoluto. In caso contrario, si otterrà il seguente errore: sshd re-exec requires execution with an absolute path. Le -p 10222marche sshdascolto su quella porta alternativa, sovrascrivendo il file di configurazione - è così che non si scontra con potenzialmente in esecuzione sshdistanze. Assicurati di scegliere una porta libera qui.

Questo metodo mi ha aiutato molte volte a trovare problemi, siano essi problemi di autenticazione o altri tipi. Per ottenere un output davvero dettagliato stdout, utilizzare $(which sshd) -Ddddp 10222(notare l'aggiunta ddper aumentare la verbosità). Per ulteriori controlli di bontà di debug man sshd.


Il vantaggio principale di questo metodo è che consente di verificare la sshdconfigurazione senza dover riavviare la sshdporta predefinita. Normalmente questo non dovrebbe interferire con le connessioni SSH esistenti, ma l'ho visto. Ciò consente di convalidare il file di configurazione prima di - potenzialmente - interrompere l'accesso a un server remoto (ad esempio, ho quello per alcuni VPS e anche per i server fisici in cui ho bisogno di pagare un extra per ottenere l'accesso fuori banda alla macchina).


3
Il tuo trucco di invocazione diretta mi ha appena salvato la pancetta. Ho riscontrato un errore nel mio file sshd_config (generato da Chef) che sono stato in grado di risolvere usando questa tecnica. GRAZIE per aver dedicato del tempo a pubblicarlo a tutti.
Peter Laird,

4

Questo sembra essere il risultato del bug # 687535, che è stato corretto di recente in Natty ed è stato caricato su Maverick e Lucido come aggiornamento proposto.

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

Incoraggerei tutti ad andare lì, provare il caso di test (cercare CASO DI PROVA) e pubblicare i risultati sia prima che dopo l'installazione della correzione proposta. Ciò aiuterà il team SRU a decidere che la verifica è stata eseguita e a rilasciarla come aggiornamento.


2

In /etc/ssh/sshd_config, assicurarsi che tutte le opzioni sì e no siano in minuscolo. Ad esempio, se impostato PermitRootLogin No, ssh non si avvierà. In realtà deve essere PermitRootLogin no.


1

Ho avuto un problema simile con un'immagine Ubuntu 11.10 su un Linode dopo il riavvio. Il servizio SSH produrrebbe in 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

È una scatola di prova e ha avuto circa 60 giorni di tempo di attività, quindi da qualche parte lungo la strada ho installato qualcosa che è stato aggiunto in fondo a sshd_config:

ClientAliveInterval 60
ClientCountAliveMax 60

Commentare queste righe ha permesso a ssh di iniziare.


0

Ubuntu ssh non si avviava e syslog produceva "init: ssh main process (2044) terminato con stato 255"

/ usr / sbin / sshd -Ddp 10222

Di certo ha funzionato per me per determinare l'errore di linea sshd_config


-1

ha lo stesso problema, la soluzione superiore non funziona, ma ho una soluzione per questo.

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

Il percorso è ok come da documento, quindi corro sshd manualmente.

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

Il permesso / 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

allora va bene. esegui ssh localhost e controlla.

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
Anche se questa è una guida utile, ovviamente non è ciò che ha portato al malfunzionamento dell'OP sshd, come puoi vedere dai messaggi di errore molto diversi nei loro registri. -1
David Foerster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.