From 60a6bfc599621fff16ffae17cc9e6b81bd21c22a Mon Sep 17 00:00:00 2001 From: andrea Date: Fri, 15 Mar 2024 11:55:46 +0100 Subject: [PATCH] Aggiunta sezione su mosh --- dispensa/cybersecurity_linux.md | 141 ++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/dispensa/cybersecurity_linux.md b/dispensa/cybersecurity_linux.md index 853bde0..2937dad 100644 --- a/dispensa/cybersecurity_linux.md +++ b/dispensa/cybersecurity_linux.md @@ -235,3 +235,144 @@ simile a quello riportato sotto. | | ----------- ``` +# Secure Shell + +Il protocollo SSH (Secure Shell) è un protocollo di rete che fornisce +una connessione sicura e crittografata tra due sistemi informatici su +una rete non sicura. OpenSSH è una delle implementazioni più comuni di +SSH, che offre una serie di strumenti per la gestione delle chiavi +SSH, l'autenticazione e la sicurezza delle connessioni. + +## Comando `ssh` + +Il comando `ssh` è utilizzato per stabilire una connessione sicura con +un server remoto. Ad esempio, per connettersi a un server remoto con +l'indirizzo IP `192.168.1.100` come utente `utente`, il comando è: + +```bash +ssh utente@192.168.1.100 +``` + +Questo comando avvia una sessione SSH con il server specificato, +richiedendo l'autenticazione dell'utente. + +## Comando `ssh-keygen` + +`ssh-keygen` è uno strumento per generare una coppia di chiavi +pubbliche/private per l'autenticazione SSH. Per generare una nuova +chiave SSH, si può eseguire il comando `ssh-keygen` come nell'esempio sotto + +```bash +ssh-keygen -t rsa +``` + +Agendo sulle opzioni del comando, si può specificare un percorso per +salvare la chiave impostare una passphrase per la chiave privata per +una maggioreq sicurezza. + +```bash +ssh-keygen -t rsa -b 2048 -f ~/.ssh/mykey +``` + +Questo comando genera una chiave RSA di 2048 bit e la salva nel file +`~/.ssh/mykey`. La chiave pubblica corrispondente sarà salvata in +`~/.ssh/mykey.pub`. + +## Comando `ssh-copy-id` + +`ssh-copy-id` è uno strumento che copia la chiave pubblica SSH di un +utente in un server remoto, consentendo l'accesso senza password. Per +copiare la chiave pubblica `mykey.pub` dell'utente corrente al server +`192.168.1.100`, il comando è: + +```bash +ssh-copy-id -i ~/.ssh/mykey.pub utente@192.168.1.100 +``` + +Questo comando copia la chiave pubblica nel file +`~/.ssh/authorized_keys` dell'utente remoto, consentendo l'accesso +senza password. Dopo aver copiato la chiave, è possibile testare +l'accesso senza password con: + +```bash +ssh -i ~/.ssh/mykey utente@192.168.1.100 +``` + +I nomi di default per le chiavi pubbliche e private sono +rispettivamente `id_rsa.pub` e `id_rsa`. Utilizzando queste chiavi, +l'accesso al server senza password si semplifica. Basterà infatti +eseguire + +```bash +ssh utente@192.168.1.100 +``` + +## Mobile Shell (mosh) + +Mosh, acronimo di Mobile Shell, è un'applicazione di terminale remoto +che risolve i problemi di connettività tipici di SSH, specialmente su +reti mobili o instabili. A differenza di SSH, che utilizza TCP e +richiede una connessione stabile, Mosh utilizza UDP, che è un +protocollo senza connessione, permettendo una connessione più stabile +e reattiva anche in presenza di interruzioni temporanee della +connessione. Mosh mantiene una connessione attiva attraverso +cambiamenti di indirizzo IP e sospensioni del dispositivo, rendendolo +ideale per l'uso su dispositivi mobili. + +### Come funziona Mosh + +Mosh inizia stabilendo una connessione SSH per l'autenticazione, +utilizzando le stesse credenziali di SSH (ad esempio, password o +chiavi pubbliche). Successivamente, avvia un server Mosh sul +dispositivo remoto e stabilisce una connessione UDP per la +comunicazione. Questo approccio consente a Mosh di gestire meglio la +perdita di pacchetti e di mantenere una connessione attiva anche in +presenza di interruzioni temporanee della rete. + +### Vantaggi di Mosh rispetto a SSH + +- **Robustezza e Responsività**: Mosh è più robusto e reattivo + rispetto a SSH, soprattutto su connessioni Wi-Fi, cellulari e lunghe + distanze. Questo è dovuto al suo protocollo basato su UDP che + gestisce meglio la perdita di pacchetti e imposta il tasso di + fotogrammi in base alle condizioni della rete. +- **Eco Locale Intelligente**: Mosh fornisce un eco locale speculativo + delle pressioni dei tasti, permettendo all'utente di vedere le + proprie pressioni dei tasti quasi istantaneamente, senza attendere + il round trip di rete. Questo migliora l'esperienza utente, + specialmente su connessioni ad alta latenza. +- **Supporto per Roaming**: Mosh supporta il roaming, permettendo + all'utente di cambiare la propria posizione fisica senza + interrompere la sessione. Questo è particolarmente utile per gli + utenti mobili che si spostano tra diversi luoghi. + +### Esempi + +Per connettersi a un server remoto utilizzando Mosh, il comando è +simile a quello di SSH, ma utilizzando `mosh` al posto di `ssh`. Ad +esempio: + +```bash +mosh utente@host +``` + +E' possibile utilizzare `mosh` e `tmux` insieme. Ad esempio, con la +seguente linea di comando è possibile connettersi al server remoto ed +eseguire tmux. + +```bash +mosh utente@host -- tmux +``` + +## Riferimenti + +[1] https://www.ssh.com/academy/ssh/copy-id +[2] https://www.techtarget.com/searchsecurity/tutorial/Use-ssh-keygen-to-create-SSH-key-pairs-and-more +[3] https://alexhost.com/faq/using-ssh-copy-id-ssh-keygen-commands-in-linux/ +[4] https://www.ssh.com/academy/ssh/keygen +[5] https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys +[6] https://docs.oracle.com/en/operating-systems/oracle-linux/openssh/openssh-WorkingwithSSHKeyPairs.html +[7] https://www.redhat.com/sysadmin/configure-ssh-keygen +[8] https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server +[9] https://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/ +[10] https://mosh.org/