Come correggere l'errore “SSH Connection refused"?
Questo tutorial riguarda i seguenti argomenti:
L’errore SSH “Connection refused” si verifica quando si tenta di connettersi a un server SSH (Secure Socket Shell), ma la connessione non riesce.
SSH è un protocollo di rete che consente di eseguire numerose attività su una connessione crittografata e sicura. Come FTP, puoi usarlo per caricare, scaricare o modificare file.
Tuttavia, tramite SSH sei in grado di eseguire compiti molto più avanzati. È possibile eseguire vari script e comandi direttamente sul server tramite un’interfaccia a riga di comando. Per ulteriori informazioni, leggi questa guida SSH dettagliata.
Non incontrerai questo errore nel tuo browser mentre visiti i siti. La connessione SSH viene stabilita tra un client SSH installato sul tuo computer e un programma server SSH (chiamato anche daemon) installato su un server di hosting web. Pertanto, il luogo più comune in cui vedrai questo errore è in un programma client SSH.
Di seguito puoi vedere un esempio dell’errore “SSH port 22 Connection refused” nel Terminal su un computer Mac.
Allo stesso modo, vedrai l’errore in Terminal se sei un utente Linux. L’esempio seguente è da un sistema operativo Linux / CentOS.
Gli utenti Windows di solito vedranno l’errore sul popolare client SSH PuTTY. PuTTY può visualizzare un’altra variazione dell’errore – “Connection timed out”.
Quali sono i motivi dell’errore “Connection refused” in SSH e come risolverli?
Sebbene il messaggio di errore in sé non sia abbastanza informativo del problema, ci sono alcune cause comuni. Esamineremo ogni caso e la sua soluzione.
Il tuo computer locale non ha un client SSH installato
Per stabilire una connessione SSH, il tuo computer deve avere un programma chiamato client SSH. Ti consente di comunicare con un server remoto ed eseguire comandi SSH. Se il programma manca, vedrai l’errore SSH “Connection refused”.
Un modo semplice per determinare se il tuo computer ha installato SSH è eseguire il seguente comando in Terminal.
$ ssh
Se SSH è installato, la risposta sul Terminal sarà un elenco di comandi disponibili. Altrimenti, l’output sarà “command not found”.
Gli utenti Mac non hanno bisogno di installare un client SSH. Tutte le versioni moderne di macOS hanno un pacchetto SSH preinstallato e puoi eseguirlo dallo strumento Terminal.
Su Linux, puoi anche eseguire SSH dal Terminal. Tuttavia, non esiste un client SSH integrato per impostazione predefinita, quindi è necessario installarlo ulteriormente.
A seconda della tua distribuzione, puoi installare il pacchetto OpenSSH per il sistema operativo Linux eseguendo i comandi specifici nel Terminal.
Per installare OpenSSH nella distribuzione Ubuntu/Debian, esegui il seguente comando
$ sudo apt install openssh-client
Per le distribuzioni CentOS/RHEL, utilizzare questo comando.
$ sudo yum install openssh-clients
Anche Windows non ha un client SSH di default, quindi dovrai installarlo da solo.
Nelle versioni precedenti di Windows, OpenSSH non è supportato direttamente. Pertanto, è necessario installare un programma client che consenta di stabilire una connessione SSH. Il più popolare è PuTTY. Per istruzioni dettagliate, leggi questa guida su come installare e utilizzare PuTTY.
Da Windows 10 (build 1809) in poi, non è necessario un client dedicato per l’accesso SSH. Puoi installare ed eseguire OpenSSH nel Command Prompt o in PowerShell. Per istruzioni dettagliate, consulta la documentazione ufficiale su come installare OpenSSH su Windows.
Il tuo server di web hosting non ha un daemon SSH installato
Avere un client SSH sul tuo computer locale è un prerequisito importante per una connessione SSH. Tuttavia, il server di hosting del tuo sito web deve avere anche un programma server SSH installato. Si chiama daemon SSH e serve a monitorare e autorizzare le connessioni SSH.
Se provi a connetterti a un server privo di un daemon SSH, attiverai anche il messaggio “Connection refused”. La maggior parte dei provider di hosting gestito ha server SSH preinstallati per impostazione predefinita. I clienti SiteGround hanno SSH abilitato su tutti i piani.
Contatta il tuo provider di hosting per assicurarti che il demone SSH sia installato sul tuo server. Forse il daemon SSH è impostato, ma al momento è inattivo. Il supporto del tuo hosting sarà in grado di controllare le sue impostazioni e fornire ulteriori informazioni.
Nel caso tu stia gestendo il tuo server dedicato o localhost, devi installare il pacchetto daemon SSH.
Per l’installazione del server OpenSSH, è possibile utilizzare le seguenti guide.
- Come installare il server OpenSSH su Linux Ubuntu/Debian
- Come installare il server OpenSSH su Windows
- Come installare il pacchetto OpenSSH su Linux CentOS/RHEL
Un firewall sta bloccando la porta SSH
Per gestire i dati e il traffico da diversi servizi in modo efficiente, i sistemi operativi utilizzano le porte. Le porte sono endpoint software progettati per gestire i dati solo da servizi specifici. Ad esempio, la tua applicazione di posta elettronica utilizza una porta per inviare e-mail tramite SMTP e un’altra porta per ricevere messaggi in arrivo tramite IMAP o POP3.
Il servizio SSH utilizza anche porte dedicate per lo scambio di dati. Per impostazione predefinita, la porta è 22. Tuttavia, molti provider di hosting utilizzano invece una porta SSH personalizzata. La porta SSH su SiteGround è 18765.
Se non sei sicuro della porta, puoi eseguire uno dei seguenti comandi sul tuo server.
$ grep Port /etc/ssh/ssh_config
o
$ grep Port /etc/ssh/sshd_config
L’output del comando mostrerà la porta SSH. Nell’esempio seguente, il sistema indica che è 22.
Ogni porta aperta è considerata una potenziale vulnerabilità che i malintenzionati potrebbero sfruttare. Pertanto, un firewall potrebbe bloccare la porta SSH. Molto spesso, le regole del firewall più restrittive sono impostate su ufficio, VPN e reti pubbliche, come università, aeroporti o biblioteche Wi-Fi.
Se stai utilizzando una rete di questo tipo e ricevi questo errore, prova a connetterti a SSH da un’altra rete. Idealmente, prova dal Wi-Fi di casa che dovrebbe essere meno restrittivo. Se non riesci ancora a connetterti a SSH, controlla le impostazioni del firewall e assicurati di consentire le connessioni per le porte 22 e 18765 (per SiteGround).
Un’altra possibilità è che il blocco possa provenire dal server di hosting. È possibile utilizzare credenziali errate e accumulare tentativi di accesso non riusciti. Pertanto, il firewall del server può bloccare il tuo IP per le connessioni sulla porta SSH. Contatta il tuo provider di hosting, in modo che possano controllare il tuo IP e sbloccarlo, se è il caso.
Credenziali o porta SSH errate
Hai bisogno di diverse credenziali per connetterti dal tuo client SSH a un server. Se una qualsiasi delle impostazioni è errata, il server restituirà il messaggio “Connection refused”.
Qualsiasi connessione SSH richiede i seguenti dettagli:
- Nome host – questo è l’indirizzo del server. Potrebbe essere il suo indirizzo IP, il nome del server o il dominio del tuo sito web (se il record A del dominio è indirizzato al server).
- SSH nome utente – il nome utente per il server SSH del sito web.
- Password – è importante notare che l’utente SSH non ha una password. La password richiesta è la passphrase della chiave SSH privata. Scopri di più sulle chiavi SSH.
- Porta – la porta predefinita per le connessioni SSH è la porta 22. Tuttavia, per motivi di sicurezza, molti provider di hosting utilizzano una porta SSH personalizzata anziché quella predefinita. La porta per SSH in SiteGround è 18765.
Per assicurarti di avere i dettagli corretti, accedi al pannello di controllo del tuo hosting. Dovrebbe esserci una sezione in cui sono elencate le credenziali SSH.
Gli utenti SiteGround possono trovare le credenziali in Site Tools. Apri la sezione “Siti web” della tua Area Cliente. Accedi a Site Tools per il sito specifico e vai alla sezione SVILUPPATORI, quindi seleziona Gestione chiavi SSH. In questa pagina, puoi vedere l’utente SSH, il nome host e la porta in Credenziali SSH.
Il servizio SSH è inattivo
La maggior parte delle soluzioni elencate finora aiutano, dato che il problema ha origine dal dispositivo o dalla rete locale. Se nessuno di questi ha funzionato, l’errore potrebbe essere causato da un problema in corso sul server di hosting.
Il servizio SSH potrebbe essere inattivo, se il server è sovraccarico a causa di risorse insufficienti o picchi di traffico massicci. Contatta l’assistenza del tuo provider di hosting, in modo che possano controllare lo stato del servizio SSH e fornire ulteriori informazioni.
Se gestisci il tuo server dedicato o localhost, potrebbe essere necessario controllare lo stato del server SSH. Può essere installato, ma non attivato.
Per attivare il server SSH, esegui il seguente comando SSH nel Terminal.
$ sudo service ssh start
Se hai bisogno di riavviare il server SSH, usa il comando qui sotto.
$ sudo service ssh restart
Riepilogo
SSH è estremamente utile in molte situazioni e fornisce una vasta gamma di funzioni per utenti avanzati. Inutile dire che è frustrante quando un servizio così essenziale non funziona. Tuttavia, l’errore “Connection refused” si riduce a un numero limitato di possibili cause.
Questa guida ha esaminato i più comuni. Passare attraverso le soluzioni sopra menzionate dovrebbe aiutarti a correggere l’errore.
Un altro errore relativo alle connessioni SSH è “Permission denied”. Scopri di più a riguardo e come risolverlo in questa guida sull’errore “Permission denied (publickey)” durante la connessione tramite SSH.
Per i passaggi dettagliati su come connettersi a SSH, leggi questo articolo su come accedere al tuo sito tramite connessione SSH.