Introduzione
Hai problemi ad accedere a un server remoto tramite SSH? Se SSH risponde con un messaggio "Connessione rifiutata", potrebbe essere necessario modificare la richiesta o controllare la configurazione.
In questo tutorial troverai i motivi più comuni per l'errore di connessione SSH rifiutata.
Perché la connessione viene rifiutata quando accedo a SSH?
Ci sono molte ragioni per cui potresti ricevere il messaggio "Connessione rifiutata " errore quando si tenta di accedere a SSH nel server. Per risolvere questo problema, è necessario prima identificare il motivo per cui il sistema ha rifiutato la connessione tramite SSH.
Di seguito troverai alcuni dei motivi più comuni che potrebbero causare un rifiuto della connessione SSH.
Client SSH non installato
Prima di risolvere altri problemi, il primo passaggio consiste nel verificare se SSH è installato correttamente. La macchina da cui si accede al server dovrebbe avere il client SSH configurato. Senza la corretta configurazione del client, non puoi accedere in remoto a un server.
Per verificare se hai il client SSH sul tuo sistema, digita quanto segue nella finestra del terminale:
ssh
Se il terminale fornisce un elenco di ssh
opzioni di comando, il client SSH è installato sul sistema. Tuttavia, se risponde con comando non trovato , devi installare il client OpenSSH.
Soluzione:installa il client SSH
Per installare il client SSH sulla tua macchina, apri il terminale ed esegui uno dei comandi elencati di seguito.
Per i sistemi Ubuntu/Debian:
sudo apt install openssh-client
Per i sistemi CentOS/RHEL:
sudo yum install openssh-client
Demone SSH non installato sul server
Proprio come è necessaria la versione client di SSH per accedere a un server remoto, è necessaria la versione del server per ascoltare e accettare connessioni. Pertanto, un server può rifiutare una connessione in entrata se manca il server SSH o se l'installazione non è valida.
Per verificare se SSH è disponibile sul server remoto, eseguire il comando:
ssh localhost
Se l'output risponde con "Connessione rifiutata ", passa all'installazione di SSH sul server.
Soluzione:installa SSH sul server remoto
Per risolvere il problema di un server SSH mancante, fare riferimento a come installare il server OpenSSH.
Le credenziali sono errate
Errori di battitura o credenziali errate sono motivi comuni per una connessione SSH rifiutata. Assicurati di non aver digitato in modo errato il nome utente o password .
Quindi, controlla se stai utilizzando l'indirizzo IP corretto del server.
Infine, verifica di avere la porta SSH corretta aprire. Puoi controllare eseguendo:
grep Port /etc/ssh/sshd_config
L'output mostra il numero di porta, come nell'immagine sottostante.
Il servizio SSH è inattivo
Il servizio SSH deve essere abilitato e in esecuzione in background. Se il servizio è inattivo, il demone SSH non può accettare connessioni.
Per verificare lo stato del servizio, inserisci questo comando:
sudo service ssh status
L'output dovrebbe rispondere che il servizio è attivo. Se il terminale risponde che il servizio è inattivo, abilitalo per risolvere il problema.
Soluzione:abilita il servizio SSH
Se il sistema mostra che il demone SSH non è attivo, puoi avviare il servizio eseguendo:
systemctl start sshd
Per abilitare l'esecuzione del servizio all'avvio, eseguire il comando:
sudo systemctl enable sshd
Il firewall impedisce la connessione SSH
SSH può rifiutare una connessione a causa delle restrizioni del firewall. Il firewall protegge il server da connessioni potenzialmente dannose. Tuttavia, se hai SSH configurato sul sistema, devi configurare il firewall per consentire le connessioni SSH.
Assicurati che il firewall non blocchi le connessioni SSH in quanto ciò potrebbe causare la "connessione rifiutata " errore.
Soluzione:consenti connessioni SSH tramite firewall
Per risolvere il problema menzionato sopra, puoi utilizzare ufw (Uncomplicated Firewall), lo strumento di interfaccia a riga di comando per la gestione della configurazione del firewall.
Digita il seguente comando nella finestra del terminale per consentire le connessioni SSH:
sudo ufw allow ssh
La porta SSH è chiusa
Quando si tenta una connessione a un server remoto, SSH invia una richiesta a una porta specifica. Per accettare questa richiesta, un server deve avere la porta SSH aperta.
Se la porta è chiusa, il server rifiuta la connessione.
Per impostazione predefinita, SSH utilizza la porta 22. Se non hai apportato modifiche alla configurazione della porta, puoi controllare se il server è in attesa delle richieste in arrivo.
Per elencare tutte le porte in ascolto, esegui:
sudo lsof -i -n -P | grep LISTEN
Trova la porta 22 nell'output e controlla se è STATE è impostato su ASCOLTA .
In alternativa, puoi verificare se una porta specifica è aperta, in questo caso la porta 22:
sudo lsof -i:22
Soluzione:apri la porta SSH
Per abilitare la porta 22 per ASCOLTARE le richieste, usa iptables
comando:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Puoi anche aprire le porte tramite la GUI modificando le impostazioni del firewall.
Debug e registrazione SSH
Per analizzare i problemi SSH in Linux, puoi attivare la modalità dettagliata o debug modalità . Quando abiliti questa modalità, SSH stampa i messaggi di debug che aiutano a risolvere i problemi di connessione, configurazione e autenticazione.
Ci sono tre livelli di verbosità:
- livello 1 (
-v
) - livello 2 (
-vv
) - livello 3 (
-vvv
)
Pertanto, invece di accedere a un server remoto utilizzando la sintassi ssh [server_ip]
aggiungi il -v
opzione ed esegui:
ssh -v [server_ip]
In alternativa, puoi utilizzare:
ssh -vv [server_ip]
o
ssh -vvv [server_ip]