Originariamente pubblicato su Ask Ubuntu
Se hai escluso eventuali fattori "esterni", la seguente serie di passaggi di solito aiuta a restringere il campo. Quindi, anche se questo non risponde direttamente alla tua domanda, può aiutarti a rintracciare la causa dell'errore.
Risoluzione dei problemi sshd
Quello che trovo generalmente molto utile in questi casi è iniziare sshd
senza lasciarlo demonizzare. Il problema nel mio caso era che né syslog
né auth.log
ha 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 il $(which sshd)
è il metodo migliore per soddisfare sshd
requisito di un percorso assoluto. Altrimenti otterrai il seguente errore:sshd re-exec requires execution with an absolute path
. Il -p 10222
rende sshd
ascolta su quella porta alternativa, sovrascrivendo il file di configurazione - questo in modo che non sia in conflitto con sshd
potenzialmente in esecuzione istanze. Assicurati di scegliere una porta libera qui.
Infine:connettiti alla porta alternativa (ssh -p 10222 [email protected]
).
Questo metodo mi ha aiutato molte volte a trovare problemi, siano essi problemi di autenticazione o di altro tipo. Per ottenere un output davvero dettagliato in stdout
, usa $(which sshd) -Ddddp 10222
(notare il dd
aggiunto aumentare la verbosità). Per una maggiore bontà del debug controlla man sshd
.
Il vantaggio principale di questo metodo è che ti permette di controllare il sshd
configurazione senza dover riavviare il sshd
sulla porta predefinita. Normalmente questo non dovrebbe interferire con le connessioni SSH esistenti, ma l'ho visto. Quindi questo consente di convalidare il file di configurazione prima - potenzialmente - di interrompere l'accesso a un server remoto (ad esempio l'ho per alcuni VPS e anche per server fisici dove devo pagare un extra per ottenere l'accesso fuori banda alla macchina).
Puoi anche avere un host la cui memoria è così frammentata da non poter allocare una pagina in una memoria contigua per eseguire il fork del processo per ospitare una sessione SSH.
In tal caso, puoi ottenere uno dei messaggi:
ssh_exchange_identification: read: Connection reset by peer
oppure:
Connection closed by aaa.bbb.ccc.ddd
a seconda di quanto lontano arriva l'host prima che esca.
Se la frammentazione della memoria è la causa apparente, la soluzione è accedere al server tramite altri mezzi e riavviare alcuni dei servizi pertinenti. Ho scoperto che Apache e MySQL sono i colpevoli delle VM poiché le VM non hanno una partizione di swap. In caso contrario, riavvia l'host.
Per ogni evenienza, perché è successo a me. Assicurati di avere sshd in esecuzione nell'host!
È uno stupido fallimento, ma potrebbe essere davvero un tuo problema.