Questo articolo mostra come risolvere i problemi di Secure Shell (SSH) su un server Linux®.
Diversi tipi di errori
Se non puoi accedere tramite SSH a un server, dovresti prestare attenzione agli errori (o alla loro mancanza) che ricevi. L'elenco seguente descrive alcuni possibili errori.
Accesso negato o autenticazione rifiutata
Questo tipo di errore si verifica ogni volta che accedi tramite SSH con credenziali errate. Se ricevi questo errore, puoi controllare quanto segue:
- Assicurati di aver digitato correttamente nome utente e password.
- Se stai utilizzando una coppia di chiavi SSH, assicurati di avere la chiave privata installata sul tuo computer locale.
Porta 22:connessione rifiutata
Questo errore si verifica per i seguenti motivi:
- SSH non è installato o in esecuzione.
- SSH è in ascolto su una porta diversa.
- Le regole del firewall non consentono SSH.
Errore di rete:connessione scaduta
Questo errore si verifica spesso a causa di problemi di connettività di rete sul server o sul computer locale. Ogni volta che ricevi questi errori, assicurati che il tuo computer locale sia connesso a Internet. Se è connesso, controlla anche la connessione del server per assicurarti che il server sia in esecuzione.
Controlla dall'esterno
Di seguito sono riportati alcuni modi comuni per risolvere i problemi di SSH dall'esterno del server:
nmap
nmap
è uno strumento di esplorazione della rete e uno scanner di sicurezza o porta. È possibile utilizzare questo strumento per verificare se la porta per SSH è aperta sul server. L'esempio seguente fornisce il comando e il relativo output:
$ nmap <ip-address-of-host>
Starting Nmap 6.40 ( https://nmap.org ) at 2020-03-21 23:44 UTC
Nmap scan report for <ip-address-of-host>
Host is up (0.033s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.35 seconds
ssh -vvv
Usando ssh
con il -vvv
flags produce un output dettagliato quando si accede al server tramite SSH. Questo comando può fornire alcune informazioni utili per la risoluzione dei problemi esattamente dove potrebbe essere il problema.
Controlla dall'interno
Se riscontri problemi con SSH, puoi accedere utilizzando la console di emergenza per risolvere i problemi del server e verificare le seguenti condizioni:
Processo SSH
Innanzitutto, assicurati che il processo SSH sia in esecuzione eseguendo il comando seguente:
- Per Ubuntu® 16.04+, Debian® 8+ e Centos® 7+:
systemctl status sshd
- Per Centos 6:
service sshd status
Se non vedi il servizio in esecuzione, puoi avviare il processo utilizzando il comando seguente:
- Per Ubuntu 16.04+, Debian 8+ e Centos 7+:
systemctl start sshd
- Per Centos 6:
service sshd start
netstat
Il netstat
comando mostra le connessioni correnti sul server. Questo comando è un buon modo per controllare e vedere su quale porta è in esecuzione SSH. Quando esegui netstat
, usa i flag -plnt
per ottenere il seguente output:
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::22 :::* LISTEN 13631/sshd
File di configurazione SSH
Il file di configurazione SSH, /etc/ssh/sshd_config , imposta la configurazione SSH. Ci sono molte opzioni nel file di configurazione, ma eccone alcune a cui prestare attenzione:
Port 22 <---- The port ssh runs on
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
~
~
~
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes <---- Allows or block users logging in as root
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes <---- Will state whether or not a user needs an ssh key to log in
In alternativa, puoi usare il grep
comando per cercare queste righe specifiche. Quando usi grep
comando, devi essere specifico quando cerchi una frase specifica. Fai attenzione alla punteggiatura, alle maiuscole e all'ortografia.
$ sudo grep Port /etc/ssh/sshd_config
# Port 22
Il firewall
Se disponi di connettività di rete, tutte le configurazioni sono corrette e non riesci ancora a connetterti tramite SSH, potresti voler esaminare le regole del firewall sul server. Sui server Linux, iptables ha queste regole. Per elencare le regole del firewall in iptables , esegui il comando iptables -L
. Per ulteriori informazioni su iptables , leggi Introduzione a iptables.
fail2ban
fail2ban
è un'applicazione che blocca un indirizzo IP dopo un certo numero di tentativi di accesso non riusciti. Per controllare le jail, puoi eseguire il comando fail2ban-client status
. Questo comando mostra tutte le jail configurate sul server e gli indirizzi IP che si trovano in quelle jail.
I file di registro
Quando tutto il resto fallisce, vai ai file di registro. Questi file forniscono informazioni sul fatto che stai raggiungendo o meno il server, se stai utilizzando una password non valida e così via. I file di registro che dovresti esaminare includono i seguenti file:
- Ubuntu o Debian:/var/log/auth.log
- CentOS o RHEL®:/var/log/secure
Durante la ricerca in questi file di registro, puoi utilizzare less
comando per analizzare l'intero file e cercare un'ora o una stringa specifica. Se hai effettuato l'accesso al server dalla console, puoi utilizzare tail -f
sui log mentre provi a eseguire l'accesso SSH al server. Quindi, puoi guardare l'aggiornamento dei file di registro in tempo reale.