Dimensione: 9688
Commento: imported from the old wiki
|
Dimensione: 11446
Commento: Modifica massiccia dell'esposizione dei contenuti
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
= ItalianSshHowTo = | ## page was renamed from SshHowTo ||<tablestyle="float:right; font-size: 0.9em; width:50%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| |
Linea 3: | Linea 4: |
## ## This doc should have: ## 1) installing ssh (done) ## 2) securing ssh ## 3) working with ssh (partly done) ## 4) issues with ssh ## Document written by: Alexander Poslavsky & Christoph Haas |
= Introduzione = |
Linea 11: | Linea 6: |
http://www.ubuntulinux.org/wiki/PicDocs.png == Indice == * Installazione di ssh-server * Copiare file attraverso ssh * Navigare con nautilus attraverso ssh * Connettersi ad un computer remoto con ssh * Autenticazione con chiavi pubbliche (pubblic keys) * Limitare l'accesso con ssh * Accesso automatico in batch script * Usare ssh agent http://www.ubuntulinux.org/wiki/IconExample48.png == SSH == OpenSSH è una versione LIBERA del protocollo SSH, suite dei tools per la connettività di rete, che incrementa il numero di persone che fanno affidamento su di esso. Molti utenti che utilizzano telnet, rlogin, ftp e altri programmi simili forse non sanno che la loro password viene trasmessa attraverso la rete non criptata. OpenSSH cripta tutto il traffico (password compresa) per eliminare a tutti gli effetti l'ascolto passivo, l'hijacking della connessione e altri attacchi a livello di rete. In più, OpenSSH fornisce una miriade di possibilità di tunneling sicuro, così come una varietà di metodi di autenticazione.--Da http://www.openssh.com/it/index.html |
OpenSSH è un insieme di programmi per connettersi a un computer remoto in tutta sicurezza: * fornisce vari metodi di autenticazione * cripta tutto il traffico fra i due computer (password compresa) per eliminare il rischio di ascolto passivo, di hijacking della connessione e altri attacchi a livello di rete * fornisce una miriade di possibilità di tunneling sicuro. |
Linea 30: | Linea 12: |
== Installazione di SSH-SERVER == | = Preparazione dei computer = |
Linea 32: | Linea 14: |
Ubuntu usa ssh-server e lo si può ottenere così. {{{ bash:~$ sudo apt-get install openssh-server }}} Questo setterà il tuo ssh-server. |
È 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. |
Linea 38: | Linea 16: |
== Copiare File con SSH == Per copiare un file da un computer ad un altro con ssh si deve usare il comando ''scp''. Il comando dovrebbe essere come il seguente. |
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: |
Linea 43: | Linea 19: |
bash:~$ scp <file> <username>@<indirizzoip>:<!DirectoryDiDestinazione> | sudo apt-get install openssh-server |
Linea 46: | Linea 22: |
oppure in termini più pratici. se sto copiando un file da uno dei miei computer ad un altro il comando sarà | 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: |
Linea 49: | Linea 29: |
bash:~$ scp file.txt hornbeck@192.168.1.103:/home/hornbeck | ssh://<nomeutente>@<indirizzoIP> |
Linea 52: | Linea 32: |
(In questo caso sarà copiato il file <file.txt> da un computer locale verso il computer remoto <hornbeck@192.168.1.103> e nella directory /home/hornbeck). Ci si deve perciò assicurare di aver incluso il <file>, la <username> del computer a cui ci si stà connettendo , l ' <indirizzo IP> e la <!Directory di destinazione> dove il file sarà copiato. | per vedere il filesystem di un computer remoto come se fosse locale(ricordarsi di sostituire <nomeutente> e <indirizzoIP> in maniera adeguata). |
Linea 54: | Linea 34: |
Si può anche copiare un file da un computer remoto verso il disco fisso locale | 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 = Per copiare un file dal nostro computer locale a un computer remoto(e viceversa), '''OpenSSH''' mette a disposizione il comando ''scp''. Nel primo caso, il comando dovrebbe seguire questo schema: {{{ scp <percorsoFileLocale> <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoDestinazioneRemota> }}} Per esempio: |
Linea 57: | Linea 48: |
bash:~$ scp hornbeck@192.168.1.103:/home/hornbeck/urls.txt . | scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt |
Linea 60: | Linea 51: |
Il '.' (l'ultimo punto) significa che il file sarà copiato nella directory corrente. Il file naturalmente potrà essere anche rinominato ( es my.txt ) e questo sarà fatto durante il trasferimento. | 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). |
Linea 62: | Linea 53: |
IMPORTANTE: non si possono muovere file tra due computer remoti. La sorgente o la destinazione devono essere file locali. | 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 spostare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.[[BR]][[BR]] |
Linea 65: | Linea 68: |
== Navigare con Nautilus Attraverso ssh == | = Usare il terminale di un computer remoto = |
Linea 67: | Linea 70: |
Usando nautilus si può avere comunque accesso a computer remoti per navigare, editare e copiare. Aprire un Nautilus file browser ( per esempio attraverso Computer -> Home) e successivamente premere CTRL + L. Scrivere il seguente indirizzo url | Per accedere al terminale di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando: |
Linea 70: | Linea 73: |
ssh://<username>@<hostname> | ssh <nomeutente>@<indirizzoIP> |
Linea 73: | Linea 76: |
( rimpiazzare <username> e <hostname> in maniera adeguata) La copia dei file può essere fatta selezionando e trascinando il file in un'altra finestra di nautilus, come se si fosse all'interno del proprio file-sistem locale. == Connettersi ad un computer remoto con ssh == Per connettersi ad un computer remoto lanciando ssh si deve digitare qualcosa del tipo: |
Per esempio: |
Linea 82: | Linea 79: |
bash:~$ ssh <username>@<ipaddress> | ssh mario@192.168.23.42 |
Linea 85: | Linea 82: |
esempio: | Grazie a questo comando si disporrà in locale del computer remoto, cioè ogni comando dato verrà eseguito sul computer remoto e non su quello locale (per chiarire, se un comando è presente sul computer locale ma non su quello remoto, non verrà eseguito). |
Linea 87: | Linea 84: |
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, tramite l'autenticazione con chiave pubblica. '''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della coppia utente/password. La prima cosa da fare è creare(se non se ne ha già una) la propria chiave privata sul computer locale. Da terminale inserire: |
|
Linea 88: | Linea 96: |
bash:~$ ssh phyrex@192.168.23.42 | ssh-keygen -t dsa |
Linea 91: | Linea 99: |
http://www.ubuntulinux.org/wiki/IconNote.png | Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita) 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). |
Linea 93: | Linea 101: |
'''Nota:''' Si può sempre usare l'hostname (se conosciuto dal sistema (![/etc/hosts])) al posto dell'indirizzo IP. |
[[Immagine(Icone/Piccole/note.png,,left)]] Potremmo anche scegliere di non creare la passphrase(basta non inserirla e premere invio), 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; invece, con una chiave privata criptata, l'eventuale cracker si ritroverebbe in mano un'inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).[[BR]][[BR]] |
Linea 96: | Linea 103: |
== Public key authentication == | Insieme alla chiave privata, è stata 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. |
Linea 98: | Linea 105: |
Precedentemente si è usata l'autenticazione tipica con username e password. Tuttavia se qualcuno ha 'indovinato' o è venuto in possesso della tua password la tua sicurezza può essere compromessa. Da tempo ssh offre un'autenticazione con chiave pubblica ( pubblic key authentication). Ssh usa chiavi di accesso private e pubblica al posto di una semplice password. |
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; pertanto si deve o copiare ed incollare la linea di caratteri ASCII nel file authorized_keys2 oppure usare il comando `ssh-copy-id` come nell'esempio {{{ ssh-copy-id root@fileserver01 }}} |
Linea 101: | Linea 110: |
A meno che non si abbia già una chiave privata , la prima cosa da fare è crearne una. Digitare |
Verrà chiesta la password di root di quel computer. Se l'autenticazione con password è disabilitata si deve copiare e incollare la chiave con un altro mezzo. Successivamente all'aggiunta della chiave pubblica si sarà "affidabili". Digitare |
Linea 104: | Linea 114: |
ssh-keygen -t dsa | ssh root@fileserver01 |
Linea 106: | Linea 116: |
Sarà chiesto dove salvare la chiave la chiave privata (si può accettare la locazione di defaul) e di scegliere una passphrase. La passphrase è usata per criptare la chiave privata. Chiunque ottenga l'accesso alla vostra chiave privata (non protetta) avrà i vostri permessi da altri calcolatori. Si consiglia di pensare bene ad una 'reale' buona password. | |
Linea 108: | Linea 117: |
Ora per avere accesso ad altri computer, questi devono 'fidarsi' della tua chiave pubblica. La chiave pubblica è stata creata assieme alla chiave privata ed è generalmente locata in {{{~/.ssh/id_dsa.pub}}} | e successivamente sarà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente root remoto(salvata in `/etc/password` del computer remoto). |
Linea 110: | Linea 119: |
L'utente target (verso cui ci si connette) deve avere questa chiave (è una linea dei caratteri di ASCII) nel relativo file di autorizzazione di chiavi pubbliche situato in {{{~/.ssh/authorized_keys2}}} del computer target. Così si deve o copiare ed incollare la linea di caratteri ASCII nel file authorized_keys2 oppure usare il comando “ssh-copy-id” come nell'esempio{{{ ssh-copy-id root@fileserver01}}} |
Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto a una semplice autenticazione con utente/password è che per avere un accesso si necessita di avere: |
Linea 113: | Linea 121: |
Verrà chiesta la password di root di quel computer. Se l'autenticazione con password è disabilitata si deve copiare e incollare la chiave con un altro mezzo. Successivamente all'aggiunta della chiave pubblica si sarà 'affidabili'. Digitare{{{ ssh root@fileserver01}}} |
* la chiave privata (criptata mediante passphrase) |
Linea 117: | Linea 123: |
e successivamente sarà chiesta la 'passphrase' e non la password. Si noti che la password e la passphrase sono cose diverse. La password è salvata in /etc/password del computer target, mentre la passphrase è usata per decriptare la tua chiave privata sul tuo computer. Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto ad una autenticazione con password è che per avere un accesso si necessita di avere: * la chiave privata (criptata) |
|
Linea 124: | Linea 125: |
Così se non si scegliesse affatto la passphrase (il che è possibile -vedi dopo) si avrebbe meno sicurezza che usare solo una password. | |
Linea 126: | Linea 126: |
http://www.ubuntulinux.org/wiki/IconNote.png | |
Linea 128: | Linea 127: |
'''Nota:''' Per ragioni di sicurezza si può disabilitare l'autenticazione tramite password settando "!PasswordAuthentication no" nel file /etc/ssh/sshd_config. Non si deve però poi dimenticare di riavviare ssh-server dopo il cambio di configurazione. |
[[Immagine(Icone/Piccole/note.png,,left)]] Per aumentare la sicurezza si può disabilitare l'autenticazione tramite utente/password settando "Password``Authentication no" nel file `/etc/ssh/sshd_config` (è necessario riavviare il server ssh per rendere effettivo il cambiamento).[[BR]] |
Linea 131: | Linea 129: |
== Limitare l'accesso a ssh == | = Permettere solo l'esecuzione di specifici comandi = |
Linea 133: | Linea 131: |
Quando si usa ssh con autenticazione con chiave pubblica esiste un'altra interessante caretteristica. Il computer target può limitare l'esecuzione dei comandi impartiti dall'utente dal suo computer. 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....}}} |
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.... }}} |
Linea 136: | Linea 136: |
Questo permetterà l'esecuzione solo dei comandi per il CVS e nessun altro. | In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi. |
Linea 138: | Linea 138: |
== Accesso automatico in batch scripts == | = Evitare l'inserimento della password a ogni connessione = Se si ha frequentemente bisogno di copiare file attraverso ssh o di avere accesso agli altri computer della propria rete (che è una cosa comune per un amministratore) si sarà felici di sapere che '''OpenSSH''' offre un programma che ci evita di digitare la passphrase ogni volta: '''ssh-agent'''. Si necessita solo di digitare la propria passphrase dopo aver lanciato "ssh-add" e ogni volta che verra lanciato un sub-processo di ssh-agent la passphrase sarà ricordata. Troppa teoria?!? bhe, non ci deve preoccupare dell'agent. La tua X session sta già lavorando automaticamente in una sessione di ssh agent.... Tutto ciò che si deve fare è lanciare "ssh-add" e digitare la passphrase. La prossima volta che si userà ssh per aver accesso ad un altro computer non si dovrà ridigitare la passphrase. [[Immagine(Icone/Piccole/note.png,,left)]] Se ci si allontana dal proprio computer per un po' di tempo, altre persone potrebbero avere accesso ad altri computer dal proprio computer 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.[[BR]][[BR]] Se si vuole che venga chiesta la passphrase una volta dopo il login si può aggiungere una chiamata ad '''`ssh-agent`''' come in questo caso: * Selezionare ''`Sistema -> Preferenze -> Sessioni`'' * Selezionare la scheda «''Avvio programmi''» * Fare clic su «''Aggiungi''» * Inserire «''`ssh-add`''» come comando Al prossimo login sarà richiesta la passphrase. = Accesso automatico in batch scripts = |
Linea 141: | Linea 163: |
Creare un service account su un computer, creare un chiave (ssh-keygen -t dsa) e quando viene chiesta la passphrase premere INVIO. Questo lascerà la chiave privata sprotetta. Aggiungere la chiave pubblica ne file authorized_keys2 dell'altro computer (ssh-copy-id). Ora ci si può connetter con questa macchina senza che venga chiesta la passphrase. Aggiungere infine una chiamata ad ssh nel cronotab. | |
Linea 143: | Linea 164: |
http://www.ubuntulinux.org/wiki/IconWarning3.png | Creare un service account su un computer, creare un chiave (ssh-keygen -t dsa) e quando viene chiesta la passphrase premere INVIO. Questo lascerà la chiave privata sprotetta. Aggiungere la chiave pubblica nel file authorized_keys2 dell'altro computer (ssh-copy-id). Ora ci si può connettere con questa macchina senza che venga chiesta la passphrase. Aggiungere infine una chiamata ad ssh nel cronotab. |
Linea 145: | Linea 166: |
'''Attenzione!''' Avere una chiave privata non protetta può compromettere la sicurezza. Gli Hackers necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target. |
[[Immagine(Icone/Piccole/warning.png,,left)]] '''Avere una chiave privata non protetta può compromettere la sicurezza. Eventuali cracker necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.'''[[BR]][[BR]] |
Linea 148: | Linea 168: |
== Usare ssh-agent == | = Connettersi a un server ssh usando Microsoft Windows = |
Linea 150: | Linea 170: |
Se si ha frequentemente bisogno di copiare file attraverso ssh o di avere accesso agli altri computer della propria rete (che è una cosa comune per un amministratore) si sarà felici di sapere se esiste un metodo che semplifichi la digitazione della passphrase. Attualmente un modo esiste ed è chiamato ssh-agent Si necessità solo di digitare la propria passphrase dopo aver lanciato "ssh-add" e ogni volta che verra lanciato un sub-processo di ssh-agent la passphrase sarà ricordata. |
'''`ssh`''' si può utilizzare anche su sistemi Windows, basta scaricare un piccolo programma che si chiama [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty]. |
Linea 153: | Linea 172: |
Troppa teoria?!? bhe, non ci deve preoccupare dell'agent. La tua X session sta già lavorando automaticamente in una sessione di ssh agent.... Tutto ciò che si deve fare è lanciare "ssh-add" e digitare la passphrase. La prossima volta che si userà ssh per aver accesso ad un altro computer non si dovrà ridigitare la passphrase... Bello vero?!? :) | '''`Putty`''', inoltre, è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian]. |
Linea 155: | Linea 174: |
http://www.ubuntulinux.org/wiki/IconNote.png | ---- Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en} |
Linea 157: | Linea 177: |
'''Importante:''' quando si lascia il proprio desktop si deve bloccare lo schermo. Altro persone potrebbero avere accesso ad altri computer dal tuo computer senza conoscere la passphrase. Se si vuole che venga chiesta la passphrase una volta dopo il login si può aggiungere una chiamata ad “ssh-agent” come in questo caso: * Cliccare su *Computer* * Scegliere *Desktop Preferences* * Scegliere *Sessions* * Scegliere il tab *Startup Programs* * Cliccare *Add* * Digitare "ssh-add" come comando Dopo il prossimo login sarà chiesta la passphrase. {{{ Traduzione di Alessandro Albiero Documento Originale: SSHHowto }}} |
CategoryInternet |
IndiceBRTableOfContents |
Introduzione
OpenSSH è un insieme di programmi per connettersi a un computer remoto in tutta sicurezza:
- fornisce vari metodi di autenticazione
- cripta tutto il traffico fra i due computer (password compresa) per eliminare il rischio di ascolto passivo, di hijacking della connessione e altri attacchi a livello di rete
- fornisce una miriade di possibilità di tunneling sicuro.
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
Per copiare un file dal nostro computer locale a un computer remoto(e viceversa), 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 spostare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.BRBR
Usare il terminale di un computer remoto
Per accedere al terminale 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, cioè ogni comando dato verrà eseguito sul computer remoto e non su quello locale (per chiarire, se un comando è presente sul computer locale ma non su quello remoto, non verrà eseguito).
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, tramite l'autenticazione con chiave pubblica.
OpenSSH può usare chiavi di accesso private e pubbliche al posto della coppia utente/password.
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) 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) Potremmo anche scegliere di non creare la passphrase(basta non inserirla e premere invio), 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; invece, con una chiave privata criptata, 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, è stata 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; pertanto si deve o copiare ed incollare la linea di caratteri ASCII nel file authorized_keys2 oppure usare il comando ssh-copy-id come nell'esempio
ssh-copy-id root@fileserver01
Verrà chiesta la password di root di quel computer. Se l'autenticazione con password è disabilitata si deve copiare e incollare la chiave con un altro mezzo.
Successivamente all'aggiunta della chiave pubblica si sarà "affidabili". Digitare
ssh root@fileserver01
e successivamente sarà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente root remoto(salvata in /etc/password del computer remoto).
Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto a una semplice autenticazione con utente/password è che per avere un accesso si necessita di avere:
- la chiave privata (criptata mediante passphrase)
- la passphrase per decriptare la chiave privata
Immagine(Icone/Piccole/note.png,,left) Per aumentare la sicurezza si può disabilitare l'autenticazione tramite utente/password settando "PasswordAuthentication no" nel file /etc/ssh/sshd_config (è necessario riavviare il server ssh per rendere effettivo il cambiamento).BR
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.
Evitare l'inserimento della password a ogni connessione
Se si ha frequentemente bisogno di copiare file attraverso ssh o di avere accesso agli altri computer della propria rete (che è una cosa comune per un amministratore) si sarà felici di sapere che OpenSSH offre un programma che ci evita di digitare la passphrase ogni volta: ssh-agent.
Si necessita solo di digitare la propria passphrase dopo aver lanciato "ssh-add" e ogni volta che verra lanciato un sub-processo di ssh-agent la passphrase sarà ricordata.
Troppa teoria?!? bhe, non ci deve preoccupare dell'agent. La tua X session sta già lavorando automaticamente in una sessione di ssh agent.... Tutto ciò che si deve fare è lanciare "ssh-add" e digitare la passphrase. La prossima volta che si userà ssh per aver accesso ad un altro computer non si dovrà ridigitare la passphrase.
Immagine(Icone/Piccole/note.png,,left) Se ci si allontana dal proprio computer per un po' di tempo, altre persone potrebbero avere accesso ad altri computer dal proprio computer 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
Se si vuole che venga chiesta la passphrase una volta dopo il login si può aggiungere una chiamata ad ssh-agent come in questo caso:
Selezionare Sistema -> Preferenze -> Sessioni
Selezionare la scheda «Avvio programmi»
Fare clic su «Aggiungi»
Inserire «ssh-add» come comando
Al prossimo login sarà richiesta la passphrase.
Accesso automatico in batch scripts
L'autenticazione con chiave pubblica può anche essere usata per automatizzare procedure che richiedono in genere la digitazione della password. Si immagini di voler copiare un file da un computer remoto ogni giorno a mezzanotte. Tutto quello di cui si ha bisogno è di stabilire 'un rapporto di fiducia' tra questi due computer.
Creare un service account su un computer, creare un chiave (ssh-keygen -t dsa) e quando viene chiesta la passphrase premere INVIO. Questo lascerà la chiave privata sprotetta. Aggiungere la chiave pubblica nel file authorized_keys2 dell'altro computer (ssh-copy-id). Ora ci si può connettere con questa macchina senza che venga chiesta la passphrase. Aggiungere infine una chiamata ad ssh nel cronotab.
Immagine(Icone/Piccole/warning.png,,left) Avere una chiave privata non protetta può compromettere la sicurezza. Eventuali cracker necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.BRBR
Connettersi a un server ssh usando Microsoft Windows
ssh si può utilizzare anche su sistemi Windows, basta scaricare un piccolo programma che si chiama [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty].
Putty, inoltre, è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian].
Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en}