Ssh tips and tricks

Da MelugWiki.

Jump to: navigation, search


Indice

Scambio di chiavi tra due host

Lo scambio di chiavi tra due host è comodo quando si vogliono stabilire connessioni ssh senza doveer inserire la pssword di autenticazione per un dato utente durante la fase di attivazione della sessione con il server. La prima cosa da fare è generare una coppia di chiavi, una pubblica e l'altra privata, con le quali l'utente effettuerà il login sul server ssh. Per fare ciò lanciamo il comando:

# ssh-keygen -t [tipo di chiave]

dove tipo di chiave rappresenta l'algoritmo di cifratura che si vuole utilizzare per la generazione delle chiavi: rsa o dsa, ad es.

test@theorem:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_dsa): (battiamo invio)
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase): (battiamo invio)
Enter same passphrase again: (battiamo invio)
Your identification has been saved in /home/test/.ssh/id_dsa.
Your public key has been saved in /home/test/.ssh/id_dsa.pub.
The key fingerprint is:
4e:3c:d2:7b:60:4d:6e:86:0d:03:86:c0:fa:ef:1c:c4 test@theorem
test@theorem:~$

abbiamo così generato la nostra coppia di chiavi e se abbiamo battuto invio alla richiesta: "Enter file in which to save the key" le due chiavi saranno state generate nella directory ".ssh" all'interno della home del nostro utente corrente. Le chiavi avranno il nome id_dsa (chiave privata) e id_dsa.pub (chiave pubblica). Una volta generata la coppia di chiavi, dobbiamo copiare la chiave pubblica nel file "authorized_keys" all'interno della directory ".ssh" sulla home dell'utente con il quale si vuole fare il login senza utilizzare autenticazione tramite password sul server ssh che ci aggrada. Ad es. se vogliamo permettere all'utente "test" di fare il login come utente "pippo" sul server "pluto" mediante autenticazione con scambio di chiavi, copiamo nel file "authorized_keys" all'interno della directory ".ssh" sulla home dell'utente "pippo" del server "pluto" la chiave pubblica dell'utente "test" (nota bene: la chiave va copiata tutta su un'unica riga), adesso possiamo effettuare il login.

Usiamo sshfs

sshfs è un filesystem remoto che ci permette di montare in locale una qualsiasi directory di un server remoto raggiungibile via ssh. Per permettere tale operazione abbiamo bisogno di abilitare il modulo "fuse" (filesystem in userspace) sul nostro kernel, installare quindi il pacchetto fuse prelevandolo da Fuse Project e il pacchetto sshfs prelevato da SSHFS Project. Gli ultimi kernel hanno già il supporto per FUSE quindi dobbiamo solo caricare il modulo o controllare se questo è già linkato staticamente nel nostro kernel, in ogni caso quando compileremo i pacchetti per fuse, il software di configurazione dei sorgenti rileverà automaticamente se fuse è incluso nel nostro kernel in caso contrario lo compilerà come modulo. Per compilare il pacchetto fuse, come nostro solito esplodiamo l'archivio in una directory temporanea ed eseguiamo:

# configure
# make
# make install

facciamo la stessa cosa con il pacchetto sshfs. Nota per configurare il pacchetto su Debian/Ubuntu ho usato questo (anche se esistono già i pacchetti precompilati)

# SSHFS_CFLAGS='-I/usr/lib/glib-2.0/include' SSHFS_LIBS='-L /usr/lib/glib-2.0' ./configure
# make
# make install

una volta compilato e installato tutto non ci resta che caricare in kernel space il modulo fuse:

modprobe fuse

quindi se vogliamo che qualsiasi utente possa montare automaticamente le proprie directory senza avere i permessi di amministrazione aggiungiamo al gruppo fuse l'utente desiderato, per far ciò editiato il file /etc/group e alla fine della riga corrispondente al gruppo fuse dopo i due punti aggiungiamo lo username del nostro utente, ad es.

fuse:x:113:axiom

se ne volessimo aggiungere più di uno separiamoli con una virgola. A questo punto non ci resta che montare il nostro filesystem remoto, la sintassi è:

# sshfs [user]@[server]:[path] [mount point]

ad es.

# sshfs axiom@maggie.roa.cc:/home/axiom /home/axiom/maggie

ed il gioco è fatto. Possiamo migliorare l'operazione di mount creando l'autenticazione mediante scambio di chiavi tra il server ssh e il nostro client (vedi sopra), in tal modo non ci verrà chiesta alcuna password durante l'operazione di mount :)

Personal tools