Come correggere l’errore “Connessione rifiutata” SSH su Linux
SSH è un protocollo di rete che consente di accedere e gestire in modo sicuro un sistema remoto su una rete. Durante la connessione a una macchina remota tramite SSH, potresti aver riscontrato l’errore “connessione rifiutata”. Sperimentare questo problema può essere frustrante soprattutto se sei un amministratore di sistema e devi eseguire alcune attività sul sistema remoto con urgenza.
Diamo un’occhiata ad alcune delle possibili cause dell’errore di “connessione rifiutata” SSH e ai metodi per risolverlo.
1. Verificare se è installato un server SSH
Una possibile causa dell’errore “connessione rifiutata” è che la macchina remota non sta eseguendo un server SSH. Senza il server SSH, la macchina non accetterà connessioni SSH in entrata e non sarà possibile accedervi da remoto.
Quindi il primo passo per risolvere l’errore è verificare se un server SSH è installato sul computer remoto. Utilizzare il seguente comando per verificare l’installazione del server SSH:
Nelle distribuzioni basate su Debian:
dpkg --list | grep ssh
Nelle distribuzioni basate su RHEL:
yum list installed | grep ssh
Su openSUSE:
zypper search -i | grep ssh
Nelle distribuzioni basate su Arch:
pacman -Q | grep ssh
Se il server SSH è installato sulla macchina remota, lo vedrai elencato nell’output. In caso contrario, è necessario installare il server OpenSSH sulla macchina remota a cui si desidera accedere tramite SSH. OpenSSH è una versione open source degli strumenti SSH per l’accesso remoto e il controllo dei sistemi.
Per installare il server OpenSSH, utilizzare i seguenti comandi:
Nelle distribuzioni basate su Debian:
sudo apt install openssh-server
Nelle distribuzioni basate su RHEL:
sudo yum install openssh-server
Su openSUSE:
sudo zypper install openssh
Nelle distribuzioni basate su Arch:
pacman -S openssh
2. Controllare lo stato del servizio SSH
Un altro motivo per ottenere l’errore “connessione rifiutata” può essere che il servizio SSH è disabilitato o non è in esecuzione sul computer remoto. Una volta che sei sicuro che il server SSH sia installato, la seconda cosa che devi controllare è lo stato del server.
sudo systemctl status sshd
Se il servizio è attivo e in esecuzione, l’output lo indicherà come attivo (in esecuzione) . Altrimenti, vedrai qualcosa come inactive (dead) .
Se il server SSH non è in esecuzione, puoi avviarlo manualmente utilizzando il seguente comando:
sudo systemctl start sshd
Puoi anche abilitare l’avvio automatico del servizio all’avvio con:
sudo systemctl enable sshd
3. Controllare la porta SSH
Per impostazione predefinita, il server SSH viene eseguito sulla porta 22. Tuttavia, è possibile modificare la porta predefinita. Pertanto, se ricevi l’errore SSH “connessione rifiutata”, potrebbe essere perché stai tentando di connetterti al server SSH sulla porta predefinita 22 mentre è in esecuzione su una porta diversa.
Puoi utilizzare il comando netstat con grep per trovare la porta su cui è in ascolto il server SSH:
sudo netstat -plntu | grep ssh
Puoi anche trovare la porta SSH dal file sshd_config usando il seguente comando:
grep port /etc/ssh/sshd_config
Dopo aver identificato la porta SSH corretta, prova a connetterti al tuo sistema remoto utilizzando quella porta specifica.
4. Controlla il tuo firewall di sistema
La maggior parte dei problemi di connettività si verifica a causa del blocco di alcune porte o servizi da parte del firewall del computer. Se la macchina remota ha il server SSH installato e in esecuzione, il passaggio successivo consiste nel controllare il firewall.
Per capire se il firewall sta bloccando la connessione, disabilita temporaneamente il firewall usando i seguenti comandi:
Nelle distribuzioni Linux basate su Debian e Arch:
sudo ufw disable
Nelle distribuzioni basate su RHEL e openSUSE:
sudo systemctl disable firewalld
Se l’errore non viene visualizzato dopo aver disabilitato il firewall, significa che il firewall stava bloccando la connessione. In questo caso, riattiva il firewall e aggiungi una regola che consenta SSH.
Nelle distribuzioni Linux basate su Debian e Arch, utilizzare il seguente comando per consentire SSH nel firewall UFW:
sudo ufw allow ssh
In alternativa, puoi anche consentire SSH tramite il numero di porta nel firewall. Supponiamo che il server SSH utilizzi la porta 5555, quindi dovresti utilizzare il seguente comando per consentirlo nel firewall:
sudo ufw allow 5555
Per verificare se la regola è stata aggiunta correttamente, controlla lo stato UFW:
sudo ufw status
Nelle distribuzioni basate su RHEL e openSUSE, utilizzare il seguente comando per consentire SSH nel firewall:
sudo firewall-cmd --permanent --add-service=ssh
Per consentire SSH per numero di porta, utilizzare il seguente comando:
sudo firewall-cmd --permanent --add-port={port}/tcp
Per un server SSH in esecuzione sulla porta 4444, il comando sarebbe:
sudo firewall-cmd --permanent --add-port=4444/tcp
Per verificare l’avvenuta aggiunta della regola nel firewall, eseguire:
sudo firewall-cmd --list-all
5. Risolvere i conflitti di indirizzi IP
Esiste anche la possibilità che si verifichi l’errore di “connessione rifiutata” SSH a causa del conflitto tra l’IP del server SSH e l’IP di un altro sistema nella rete. Ciò accade quando due sistemi su una rete affermano di avere lo stesso indirizzo IP, provocando un conflitto IP.
Per confermare se c’è un conflitto IP nella tua rete, usa lo strumento arp-scan come segue:
arp-scan [network-id]
Se c’è un conflitto IP, vedrai l’indirizzo IP duplicato nell’output. Lo screenshot seguente è un esempio di un conflitto IP in una rete:
Per evitare conflitti IP, assicurarsi che nessun dispositivo disponga di indirizzi IP statici che si sovrappongono agli indirizzi del pool DHCP.
Suggerimento bonus: esegui SSH in modalità dettagliata
Ogni volta che riscontri un errore SSH, prova a eseguire il comando ssh in modalità dettagliata per rintracciare il problema. Per eseguire SSH in modalità dettagliata, utilizzare il comando ssh con l’ opzione -vvv come segue:
ssh -vvv username@ip_address
In modalità dettagliata, vedrai messaggi di debug in ogni passaggio della connessione che ti aiuteranno a capire dove si trova il problema.
Risoluzione dei problemi relativi all’errore “Connessione rifiutata” SSH su Linux
Identificando le potenziali cause dell’errore di connettività SSH e implementando le soluzioni suggerite, sarai in grado di individuare e risolvere l’errore di “connessione rifiutata” SSH. Oltre a questi passaggi, assicurati di connetterti all’indirizzo IP corretto e di utilizzare le credenziali di accesso corrette.
Per rendere la tua connessione remota più sicura, puoi configurare l’autenticazione a due fattori per SSH su Linux.
Lascia un commento