Collegamento via SSH

Il primo esercizio, necessario per svolgere tutti i seguenti, è collegarsi in SSH ad un computer a scelta dell'Aula 4. Avendo a disposizione un client SSH (ad esempio, il comando ssh su GNU/Linux, sul MAC, oppure Putty su Windows — qui trovate un breve video su come installarlo), ci si può collegare tramite il comando

$ ssh utente@labN.cs.dm.unipi.it
dove utente è il vostro nome utente, ed N è un intero fra 1 e 25, e identifica uno fra i 25 computer presenti in Aula 4 (e l'analoga procedura con Putty).

Nel caso non si abbia a disposizione un client SSH, è possibile utilizzare uno dei seguenti link per collegarsi direttamente dal browser. Sebbene questi funzionino, l'esperienza non è proprio ottimale, il collegamento con un software nativo è sicuramente preferibile.

Al primo collegamento, il client SSH ed il server si scambiano le relative chiavi pubbliche, con una (variante della) procedura nota come Scambio di chiavi Diffie-Hellman. Utilizzando il client web, questo passaggio verrà "nascosto", ed accettato in modo automatico (ed insicuro!). Utilizzando invece il client dal proprio computer verrà chiesto di accettare la chiave pubblica del server, mostrando il suo fingerprint.

Si utilizzino i comandi riportati sopra (o l'interfaccia web) per collegarsi ad uno dei computer dell'Aula 4 (da lab1 a lab25). Una volta collegati, utilizzare il comando who per verificare chi è collegato alla stessa macchina. Riuscita a trovare i colleghi del vostro gruppo?

Cambio password

La prima operazione da fare dopo il login è cambiare la password per il primo accesso che ci è stata assegnata. È possibile farlo digitando il comando passwd. Questo chiederà la password attuale, e di ripetere due volte quella nuova.

Attenzione: la nuova password non apparirà sullo schermo, per evitare che sia leggibile da occhi indiscreti. Questo è perfettamente normale. Nel caso si commettesse un errore di battitura, si può cancellare l'input premendo un numero sufficiente di volte il tasto Backspace.

È opportuno scegliere un password sufficiente sicura, ad esempio contente lettere maiuscole e minuscoli, numeri, e non basata su una parola di dizionario. Nel caso si cercasse ispirazione, si può generare alcune password con il comando pwgen N, dove N è un intero pari alla lunghezza desiderata. Provare ad esempio con $N \geq 8$.

Collegarsi ad un'altra macchina

Una volta collegati a labN per qualche N intero fra 1 e 25, ci si può collegare ad un altro computer nella stessa stanza, "incapsulando" due connessioni. Si può effettuare quest'operazione con il comando:

$ ssh labN
Questa volta non è necessario specificare il nome utente scelto, perché ssh utilizza quello dell'utente corrente se non gli si indica altrimenti. Ancora una volta, se non ci si è mai collegati ad una determinata macchina, verrà chiesto di accettare la chiave pubblica mostrando il relativo fingerprint. Una volta aperto il collegamento, si può terminarlo con il comando logout.

Una volta aperta la connessione ad un'altra macchina, si verifichi il successo del collegamento guardando al prompt del terminale. Ad esempio, se si è collegati alla macchine lab10 come utente pippo, il terminale deve essere del tipo:

pippo@lab10:~$

Il salvataggio della chiave pubblica

Tradizionalmente, nei sistemi Unix (a cui Linux è ispirato), si può interagire con il sistema attraverso file di testo. In effetti, anche la chiave pubblica che avete appena accettato è stata salvata in un file, che si trova nella vostra home, all'interno delle cartella .ssh.

Si utilizzi il comando ls per visualizzare i file nella cartella corrente (se non è stato dato alcun comando, la vostra home).

Noterete immediatamente che la cartella .ssh non viene listata dal comando ls. Questo succede perché tutti i file (e le cartelle) che cominciano con un punto vengono considerati file nascosti; per visualizzarli, è necessario utilizzare il comando ls -a.

Si stampi sul terminale il contenuto del file ~/.ssh/known_hosts, che contiene la lista di tutti i fingerprint degli host a cui ci si è collegati. Questo si può ottenere tramite il comando:
cat ~/.ssh/known_hosts
Il comando cat permette di stampare un file di testo sul terminale. Per digitare il carattere ~, che rappresenta la propria home directory, è possibile utilizzare varie combinazioni di tasti:

Memorizzare la chiave pubblica permette di garantire che, alla prossima connessione, l'host contattato sarà esattamente quello che dice di essere. In questo modo, si evitano i cosiddetti attacchi MITM (Man In The Middle), dove qualcuno si sostituisce a chi volete contattare, e ascolta o modifica il traffico.