Protocollo SSH: Che cos'è? Come funziona?

Protocollo SSH: Che cos'è? Come funziona?

Nataliya Oteir Leggi 11 minuti

SSH è ampiamente utilizzato per gestire l'infrastruttura di rete, trasferire file e impartire comandi remoti. In questo articolo spiegheremo cos'è il protocollo SSH, come funziona e perché è importante.

Che cos'è SSH?

SSH significa Secure Shell, il che implica che fornisce una shell (un'interfaccia a riga di comando) sicura (crittografata e autenticata). SSH può anche fare altre cose, come inviare file, eseguire programmi o modificare le impostazioni di un altro computer.

Secure Shell è un insieme di regole che indicano ai computer come dialogare tra loro in modo sicuro. Si compone di tre componenti principali: il livello di trasporto, il livello di autenticazione dell'utente e il livello di connessione. La parte di trasporto assicura che i computer possano fidarsi l'uno dell'altro e che nessuno possa spiarli o modificare i loro messaggi. La parte utente assicura che solo la persona giusta possa accedere all'altro computer. Il livello di connessione assicura che i computer possano fare cose diverse allo stesso tempo, come digitare comandi, inviare file o aprire programmi.

Il protocollo SSH protegge da vari attacchi, come l'intercettazione, la manomissione, lo spoofing o gli attacchi man-in-the-middle. Secure Shell consente inoltre agli utenti di eseguire varie operazioni in remoto senza esporre le proprie password o i propri dati a hacker o malintenzionati.

Trasferisce qualsiasi tipo di dati attraverso il canale crittografato, a condizione che sia il client che il server supportino lo stesso protocollo. Ad esempio, SSH può trasferire file di testo, binari, audio, video o immagini utilizzando SCP o SFTP. È anche possibile inviare altri tipi di dati, come grafica, TCP/IP porte o socket utilizzando il port forwarding o il tunneling.

Una delle caratteristiche più utili di SSH è la capacità di creare tunnel o proxy. Questa funzione consente agli utenti di inoltrare o reindirizzare il traffico di rete da una porta o un indirizzo a un'altra porta o indirizzo tramite Secure Shell. Ciò può essere utile per aggirare i firewall, accedere a risorse riservate, criptare protocolli non sicuri o nascondere l'attività di rete.

Qual è la storia del protocollo SSH?

Il protocollo di login sicuro è stato creato nel 1995 dall'informatico finlandese Tatu Ylönen. Voleva creare un modo migliore di connettersi ad altri computer rispetto ai vecchi metodi, che non erano sicuri e potevano essere violati facilmente. Ha rilasciato la prima versione di SSH (SSH-1) come software libero sotto una licenza open-source. In seguito, ha fondato un'azienda per sviluppare e commercializzare prodotti SSH.

Il nome SSH era inizialmente Secure Remote Login (SRL), ma fu cambiato in Secure Shell (SSH) perché SRL era già utilizzato da un altro programma. Un altro fatto divertente è che SSH è stato ispirato da un film di James Bond intitolato GoldenEye, in cui un hacker utilizza uno strumento simile per introdursi in un sistema di controllo satellitare.

Nel 1996, un gruppo di sviluppatori guidati da Björn Grönvall iniziò a lavorare a un'implementazione gratuita di SSH chiamata OpenSSH, basata sul codice sorgente di una versione precedente di Secure Shell. OpenSSH fu rilasciato nel 1999 come parte del sistema operativo OpenBSD e divenne presto l'implementazione più popolare di SSH. OpenSSH ha aggiunto molte caratteristiche e miglioramenti a SSH, come il supporto per SSH-2 (una versione rivista del protocollo con sicurezza e funzionalità migliorate), l'inoltro X11, l'inoltro di agenti e il supporto IPv6.

Nel 2006, l'Internet Engineering Task Force (IETF) ha pubblicato una serie di RFC che hanno standardizzato il protocollo Secure Shell come standard Internet. Le RFC coprono il protocollo principale, il protocollo del livello di trasporto, il protocollo di autenticazione dell'utente, il protocollo di connessione e varie estensioni e algoritmi.

Come funziona SSH?

Il login remoto criptato funziona con due computer: un client e un server. Il client è il computer che si usa per connettersi al server. Il server è il computer su cui si desidera effettuare le operazioni. Il client e il server utilizzano un programma speciale chiamato SSH per parlare tra loro.

Il primo passo è avviare la connessione dicendo al client a quale server ci si vuole connettere. Per farlo, digitate nel vostro terminale qualcosa di simile a questo:

ssh nomeutente@indirizzo_ip

Questo significa: utilizzare Secure Shell per connettersi al server con questo indirizzo IP (un numero che identifica un computer su Internet) utilizzando questo nome utente (un nome che identifica un utente sul computer).

Il secondo passo consiste nel verificare se ci si può fidare del server utilizzando la crittografia a chiave pubblica. Si tratta di un modo di usare la matematica per creare codici segreti che solo due persone possono capire. Il server ha due codici: una chiave pubblica e una chiave privata. La chiave pubblica è come una serratura aperta che chiunque può vedere. La chiave privata è come una chiave segreta che solo il server possiede. Il server invia la sua chiave pubblica al client, che verifica se corrisponde a una chiave fidata memorizzata sul vostro computer o fornita da qualcuno di cui vi fidate. Se la chiave è attendibile, si può continuare. In caso contrario, è possibile interrompere o accettare la chiave dopo aver controllato la sua impronta digitale (un breve codice che la identifica).

La terza fase consiste nel dimostrare chi siete al server utilizzando l'autenticazione dell'utente. Si tratta di un modo per dimostrare che si è autorizzati ad accedere al server. Esistono diversi modi per farlo, come password, chiavi pubbliche o certificati. I più comuni sono le password e le chiavi pubbliche. L'autenticazione tramite password è facile ma non molto sicura. Consiste nel digitare la password nel client e inviarla al server tramite una connessione segreta. Il server verifica se corrisponde alla password memorizzata per il nome utente.

L'autenticazione a chiave pubblica è più sicura ma richiede una maggiore configurazione. Implica l'utilizzo di un'altra coppia di codici: una chiave privata e una chiave pubblica. La chiave privata è come una chiave segreta che si conserva con il cliente e non si condivide con nessuno. La chiave pubblica è come una serratura aperta che si condivide con il server prima della connessione. È possibile creare queste chiavi utilizzando uno strumento come ssh-keygen e copiarle sul server utilizzando uno strumento come ssh-copy-id. Il server memorizza la vostra chiave pubblica in un file chiamato authorized_keys nella vostra cartella home (dove tenete i vostri file sul server). Quando si accede con autenticazione a chiave pubblica, il client crea un messaggio segreto con la chiave privata e lo invia al server, che lo verifica con la chiave pubblica.

Dopo l'autenticazione dell'utente, il client può richiedere uno o più servizi al server utilizzando diversi canali all'interno del tunnel crittografato. Il servizio più comune è l'accesso alla shell, che consente all'utente di eseguire comandi sul server remoto. Un altro servizio comune è il trasferimento di file, che consente all'utente di copiare file tra il sistema locale e quello remoto utilizzando protocolli come SCP (Secure Copy Protocol) o SFTP (SSH File Transfer Protocol). SCP è un protocollo tradizionale che utilizza Secure Shell per trasferire i file in modo sicuro, ma presenta alcune limitazioni e svantaggi. SFTP è un protocollo più moderno e flessibile che fornisce funzioni di accesso ai file, trasferimento e gestione dei file tramite SSH.

Quali sono gli usi comuni del protocollo SSH?

Il protocollo Secure Socket Shell è comunemente utilizzato per diversi scopi, come ad esempio:

  • Fornire agli utenti e ai processi automatizzati un accesso sicuro ai sistemi remoti
  • Trasferire file in modo sicuro tra sistemi locali e remoti
  • Esecuzione di comandi in remoto su sistemi remoti
  • Gestione dell'infrastruttura di rete e di altri componenti di sistema mission-critical
  • Tunneling di altri protocolli o applicazioni
  • Proxing del traffico di rete

Conclusione

Secure Shell è uno strumento potente e versatile che consente il login remoto sicuro, il trasferimento di file e l'esecuzione di comandi su reti non protette. Utilizza la crittografia a chiave pubblica e la crittografia simmetrica per fornire l'autenticazione del server, l'autenticazione dell'utente, la riservatezza e l'integrità. SSH consente inoltre di eseguire diverse operazioni sull'altro computer, come digitare comandi, inviare file o aprire programmi. Il protocollo di login sicuro è molto importante per qualsiasi utente o amministratore Linux / Windows che voglia lavorare con sistemi remoti in modo sicuro ed efficiente.

Quanto è stato utile questo post?

Clicca su una stella per votarla!
Рейтинг: 0/5 - 0 голосов