Il problema
I seguenti messaggi vengono registrati quando si riavvia il servizio sshd in un sistema CentOS/RHEL 5/6.
Dec 14 00:15:19 geeklab sshd[9182]: Received signal 15; terminating. Dec 14 00:15:19 geeklab sshd[9274]: Server listening on :: port 22. Dec 14 00:15:19 geeklab sshd[9274]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
La soluzione
Quando IPv6 e IPv4 sono entrambi abilitati contemporaneamente, IPv6 si collega prima sulla porta 22 a tutti gli IP IPv6 disponibili (::) quando viene avviato il servizio sshd. Pertanto, quando gli IP IPv4 (0.0.0.0) tentano di eseguire il binding sulla stessa porta, il sistema registrerà il messaggio di errore precedente. Questo perché la porta è già utilizzata dagli IP IPv6.
Puoi controllare la stessa cosa anche nell'output di netstat.
# netstat -anp | grep sshd tcp 0 0 :::22 :::* LISTEN 9302/sshd
Per risolvere il problema, segui i passaggi descritti di seguito:
1. Modifica il file di configurazione sshd /etc/ssh/sshd_config e decommenta la riga seguente:
# vi /etc/ssh/sshd_config ListenAddress 0.0.0.0
2. Riavvia nuovamente il servizio sshd per rendere effettive le modifiche.
# service sshd restart
3. I registri simili ai seguenti devono essere registrati nel file /var/log/messages.
Dec 14 00:35:23 geeklab sshd[9274]: Received signal 15; terminating. Dec 14 00:35:23 geeklab sshd[9301]: Server listening on 0.0.0.0 port 22.
4. Puoi anche controllare l'output del comando netstat per confermare se la porta sshd 22 sta ascoltando solo gli indirizzi IPv4.
# netstat -anp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8977/sshd