|
@@ -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/
|