Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "InternetRete/DesktopRemoto/OpenSsh"
Differenze tra le versioni 15 e 16
Versione 15 del 22/03/2007 13.35.40
Dimensione: 9884
Autore: DavideLuigi
Commento:
Versione 16 del 22/03/2007 13.42.07
Dimensione: 9886
Autore: DavideLuigi
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 122: Linea 122:
= Evitare l'inserimento della password a ogni connessione = == Evitare l'inserimento della password a ogni connessione ==

Introduzione

OpenSSH è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni:

  • controllare un computer remoto(tramite terminale)
  • copiare file da un computer remoto al computer locale e viceversa
  • criptare qualunque traffico di dati tra computer locale e computer remoto tramite tunneling

OpenSSH sostituisce i vecchi e insicuri programmi telnet, rlogin e ftp (questi programmi sono insicuri perchè trasmettono dati e password in chiaro, rendendone semplice il furto)

Preparazione dei computer

È necessario disporre di un server ssh su ogni computer al quale ci si vuole connettere (chiamato in seguito "computer remoto"), e di un client ssh su ogni computer dal quale si vuole avviare la connessione (chiamato in seguito "computer locale"). Se ad esempio si dispone di due computer e si vuole che ognuno dei due possa connettersi all'altro tramite ssh, ognuno dei due computer dovrà avere sia il server che il client.

Per avere il server ssh su ubuntu, è sufficiente installare il pacchetto openssh-server, che si trova già nei repository standard e può essere installato tramite Synaptic, o tramite terminale con il seguente comando:

sudo apt-get install openssh-server

Il client ssh (contenuto nel pacchetto openssh-client) è installato in ubuntu in modo predefinito.

Usare Nautilus con computer remoti in maniera sicura

Nautilus può visualizzare, editare e copiare file presenti su un computer remoto in tutta sicurezza, grazie a OpenSSH. E' sufficiente aprire Nautilus e inserire un indirizzo così composto:

ssh://<nomeutente>@<indirizzoIP>

per vedere il filesystem di un computer remoto come se fosse locale(ricordarsi di sostituire <nomeutente> e <indirizzoIP> in maniera adeguata).

A questo punto è possibile svolgere tutte le operazioni che si svolgono normalmente con nautilus(copiare file da remoto a locale e viceversa, cancellare file remoti, eccetera).

Copiare file da un computer a un altro tramite terminale locale

Per copiare un file dal nostro computer locale a un computer remoto(e viceversa) attraverso il terminale, OpenSSH mette a disposizione il comando scp.

Nel primo caso, il comando dovrebbe seguire questo schema:

scp <percorsoFileLocale> <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoDestinazioneRemota>

Per esempio:

scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt

prenderà il file fileDaCopiare.txt, presente nella directory corrente del computer locale, e lo copierà nella posizione /home/mario/fileCopiato.txt (notare che abbiamo anche cambiato il nome del file, ma non è necessario) del computer remoto identificato dall'indirizzo ip 192.168.1.1 , usando l'utente mario sul computer remoto(utente di cui dobbiamo conoscere la password).

Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso:

scp <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoFileRemoto> <PercorsoDestinazioneLocale>

Per esempio:

scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt .

Copierà il file remoto identificato dal percorso /home/mario/fileDaCopiare.txt nella directory corrente (identificata dal punto . ), senza rinominarlo.

Immagine(Icone/Piccole/note.png,,left) Con scp non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.BRBR

Controllare un computer remoto tramite terminale

Per accedere alla linea di comando di un computer remoto, OpenSSH fornisce il comando ssh. È sufficiente digitare il comando:

ssh <nomeutente>@<indirizzoIP>

Per esempio:

ssh mario@192.168.23.42

Grazie a questo comando si disporrà in locale del computer remoto, tutto ciò che faremo in questo terminale avverrà sul computer remoto(e non sul computer locale).

Immagine(Icone/Piccole/note.png,,left) Se il computer remoto ha ubuntu come sistema operativo, risulterà impossibile connettersi ad esso come utente root, perchè in ubuntu l'utente root non è abilitato. Se si desidera svolgere compiti amministrativi su un computer remoto con ubuntu, connettersi prima come utente normale, quindi usare sudo per dare comandi con privilegi amministrativi; in alternativa, abilitare l'utente root sul computer remoto.

Autenticazione a chiave pubblica

Precedentemente è stata utilizzata l'autenticazione tipica con username e password. Tuttavia se qualcuno è venuto in possesso della password dell'utente del computer remoto, vi si potrà connettere dall'esterno a nostra insaputa, compromettendone la sicurezza. Da tempo OpenSSH è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica.

OpenSSH può usare chiavi di accesso private e pubbliche al posto della password utente remoto.

La prima cosa da fare è creare(se non se ne ha già una) la propria chiave privata sul computer locale.

Da terminale inserire:

ssh-keygen -t dsa

Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita ~/.ssh/id_dsa) e di scegliere una "passphrase". La passphrase è una nuova password, usata per criptare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decriptare la chiave privata).

Immagine(Icone/Piccole/note.png,,left) Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non criptare la chiave privata, ma sarebbe una pessima scelta, in quanto un cracker che venisse in possesso della nostra chiave privata in chiaro, avrebbe facile accesso a tutti i servizi cui noi accediamo tramite la suddetta chiave; al contrario, con una chiave privata criptata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).BRBR

Insieme alla chiave privata viene creata anche la chiave pubblica(localizzata in ~/.ssh/id_dsa.pub sul computer locale), che è quella che possiamo dare liberamente in giro; in questo caso specifico, dobbiamo dare la nostra chiave pubblica al nostro computer remoto per garantirci la sua "fiducia", cioè l'accesso tramite ssh.

L'utente che usiamo sul computer remoto deve avere la nostra chiave pubblica nel relativo file di autorizzazione, cioè il file ~/.ssh/authorized_keys2 del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare come nell'esempio

ssh-copy-id <nomeutente>@<indirizzoIP>

Immagine(Icone/Piccole/note.png,,left)Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.BRBRBR

Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando

ssh <nomeutente>@<indirizzoIP>

verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto(salvata in /etc/password del computer remoto).

Immagine(Icone/Piccole/note.png,,left) Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente settando "PasswordAuthentication no" nel file /etc/ssh/sshd_config (è necessario riavviare il server ssh per rendere effettivo il cambiamento).BR

Evitare l'inserimento della password a ogni connessione

Se si usa l'autenticazione a chiave pubblica, OpenSSH fornisce un metodo grazie al quale la passphrase verrà chiesta solo una volta durante tutta la sessione. Questa caratteristica è utile ad esempio a chi usa spesso il comando scp, o agli amministratori di computer remoti, in quanto evita di dover reinserire la password ogni volta che si lancia un comando della suite OpenSSH.

Il comando per aggiungere la propria passphrase al gestore delle identità è ssh-add, usato semplicemente con:

ssh-add

verrà chiesta la passphrase, dopodiché la nostra chiave privata sarà disponibile senza ulteriori richieste.

Immagine(Icone/Piccole/note.png,,left) Se ci si allontana dal proprio computer, altre persone potrebbero usarlo e sfruttare la chiave privata senza conoscere la passphrase. Se si teme una simile eventualità, si consiglia di bloccare lo schermo con la combinazione di tasti CTRL+ALT+L prima di allontanarsi.BRBR

Permettere solo l'esecuzione di specifici comandi

Il computer remoto(quello con il server ssh installato) può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un CVS, si può aggiungere nel file authorized_keys2 la seguente riga

command="/usr/bin/cvs server" ssh-dss AAAAB3N....

In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi.

Connettersi a un server ssh usando Microsoft Windows

Un computer con Microsoft Windows non può fare da server ssh, però può fare da client, basta scaricare un piccolo programma che si chiama [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty].

Connettersi a un server ssh usando un cellulare Symbian

Putty è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian].


Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en}

CategoryInternet