|
Dimensione: 9862
Commento: modificati i link alle immagini, due errori
|
Dimensione: 10756
Commento: corretto link
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## 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]]|| |
## page was renamed from SSHHowto #format wiki #LANGUAGE it ##TODO: ##--usare risorse -> connessione al server... per avere disponibile un filesystem remoto in nautilus ##--criptare una connessione tramite tunneling ##--usare X11Forwarding per vedere in locale una applicazione grafica che gira in remoto [[BR]] ||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents(1)]]|| |
| Linea 6: | Linea 13: |
| ''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] | '''OpenSSH''' è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni: |
| Linea 8: | Linea 15: |
| = Installazione di ssh-server = | * controllare un computer remoto tramite terminale; |
| Linea 10: | Linea 17: |
| Se volete usufriure di una connessione sicura tra le vostre macchine, anche una macchina con MS Windows utilizzante '''`Putty`''', è necessario installare un server per collegarsi. Ubuntu utilizza il server openssh-server. Per installarlo, in un terminale inserire: | * copiare file da un computer remoto al computer locale e viceversa; |
| Linea 12: | Linea 19: |
| * cifrare qualunque traffico di dati tra computer locale e computer remoto tramite il ''tunneling''. '''OpenSSH''' sostituisce i vecchi programmi '''telnet''', '''rlogin''' e '''ftp''', considerati poco sicuri poichè trasmettono in chiaro i dati relativi all'autenticazione (nome utente, password etc). [[Anchor(installazione)]] = Installazione = È 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, su entrambi dovranno essere installati sia il server che il client. Per avere il server '''ssh''' su Ubuntu, è sufficiente [:InstallareProgrammi:installare] il pacchetto ''openssh-server''. Il client '''ssh''' (contenuto nel pacchetto ''openssh-client'') è installato in Ubuntu in modo predefinito. [[Anchor(accessoremoto)]] = Usare nautilus con computer remoti = '''Nautilus''' consente di visualizzare, modificare, eliminare o copiare file presenti su un computer remoto (con server '''ssh''' installato) in tutta sicurezza, grazie a '''OpenSSH'''. Il metodo più semplice per ottenere ciò è aprire '''nautilus''' e inserire l'indirizzo desiderato (verrà chiesta la password dell'utente remoto), come da esempio: |
|
| Linea 13: | Linea 37: |
| sudo apt-get install openssh-server | ssh://nomeutenteRemoto@indirizzoIP |
| Linea 16: | Linea 40: |
| Questo installerà il server ssh-server. | Il metodo successivo permette di avere un'icona persistente in '''nautilus''', evitando dunque di inserire ogni volta gli stessi «nomeutenteRemoto» e «indirizzoIP». Scegliere '''''Risorse -> Connetti al server...''''', quindi inserire i seguenti dati: |
| Linea 18: | Linea 42: |
| = Copiare file con ssh = | ||<style="background-color:#FEB76D;":>'''Campo'''||<style="background-color:#FEB76D;":>'''Valore'''|| || Tipo di servizio: || SSH || || Server: || «indirizzoIP» || || Nome utente: || «nomeutenteRemoto» || || Nome da usare per la connessione: || a scelta dell'utente || |
| Linea 20: | Linea 48: |
| 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. | = Utilizzo da terminale = == Copia di file == Per copiare un file dal proprio computer locale a un computer remoto (e viceversa) attraverso il terminale, '''OpenSSH''' mette a disposizione il comando '''scp'''. Nel primo caso, la sintassi del comando dovrebbe essere simile alla seguente: |
| Linea 22: | Linea 56: |
| scp <file> <nomeutente>@<indirizzoIP>:<DirectoryDestinazione> | scp percorsoFileLocale nomeUtenteRemoto@indirizzoIP:PercorsoDestinazioneRemota |
| Linea 25: | Linea 59: |
| oppure, in termini più pratici, se si stà copiando un file da un computer a un altro: |
Quello che segue è un esempio: |
| Linea 28: | Linea 61: |
| scp file.txt mario@192.168.1.1:/home/mario | scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt |
| Linea 31: | Linea 64: |
| (In questo caso sarà copiato il file `file.txt` da un computer locale verso il computer remoto «`mario@192.168.1.1`» nella directory `/home/mario`). Ci si deve perciò assicurare di aver incluso il <file>, il <nomeutente> del computer a cui ci si stà connettendo , l ' <indirizzo IP> e la <Directory di destinazione> dove il file sarà copiato. | Il precedente comando copierà il file `fileDaCopiare.txt` dalla cartella corrente del computer locale alla posizione `/home/mario/fileCopiato.txt` (non è necessario cambiare il nome del file) del computer remoto identificato dall'indirizzo ip `192.168.1.1` , usando l'utente `mario` sul computer remoto. |
| Linea 33: | Linea 66: |
| È possibile anche copiare un file da un computer remoto verso il disco fisso locale: | Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso, digitando un comando simile al seguente: |
| Linea 35: | Linea 68: |
| scp mario@192.168.1.1:/home/mario/file.txt . | scp nomeUtenteRemoto@indirizzoIP:PercorsoFileRemoto PercorsoDestinazioneLocale |
| Linea 38: | Linea 71: |
| Il '.' finale (l'ultimo punto) significa che il file sarà copiato nella directory corrente. Il file naturalmente potrà essere anche rinominato e questo sarà fatto durante il trasferimento. [[Immagine(Icone/Piccole/note.png,,left)]] Non si possono spostare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.[[BR]][[BR]] = Navigare con Nautilus attraverso ssh = Usando '''`nautilus`''' si può avere comunque accesso a computer remoti per navigare, editare e copiare. Aprire '''`nautilus`''' (per esempio selezionando ''`Risorse -> Cartella Home`'') e successivamente premere «`CTRL+L`», quindi inserire il seguente indirizzo: |
Quello che segue è un esempio: |
| Linea 47: | Linea 73: |
| ssh://<nomeutente>@<nomeHost> | scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt . |
| Linea 50: | Linea 76: |
| (sostituire <nomeutente> e <nomeHost> in maniera adeguata) | Tale comando copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella cartella corrente (identificata dal punto `.`), senza rinominarlo. |
| Linea 52: | Linea 78: |
| 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-system locale. | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Con'' '''scp''' ''non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.'' || |
| Linea 54: | Linea 80: |
| = Collegarsi a un computer remoto con ssh = | == Accedere al terminale di un computer remoto == |
| Linea 56: | Linea 82: |
| Per colelgarsi a un computer remoto lanciando ssh si deve digitare qualcosa del tipo: |
Per accedere alla linea di comando di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando: |
| Linea 59: | Linea 84: |
| ssh <nomeutente>@<indirizzoIP> | ssh nomeutente@indirizzoIP |
| Linea 62: | Linea 87: |
| Per esempio: |
Quello che segue è un esempio: |
| Linea 68: | Linea 92: |
| [[Immagine(Icone/Piccole/note.png,,left)]] È possibile utilizzare l'hostname (se conosciuto dal sistema in `/etc/hosts`) al posto dell'indirizzo IP.[[BR]][[BR]] | Se il computer remoto utilizza Ubuntu come sistema operativo, risulterà impossibile connettersi a 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, [:AmministrazioneSistema/Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto. |
| Linea 70: | Linea 94: |
| = Autenticazione a chiave pubblica = | = Aumentare la sicurezza = |
| Linea 72: | Linea 96: |
| Precedentemente è stata utilizzata l'autenticazione tipica con username e password. Tuttavia se qualcuno ha "indovinato" o è venuto in possesso della vostra password, la sicurezza può essere compromessa. Da tempo '''`ssh`''' offre un'autenticazione con chiave pubblica. | == Autenticazione a chiave pubblica == |
| Linea 74: | Linea 98: |
| '''`Ssh`''' usa chiavi di accesso private e pubbliche al posto di una semplice password. | Per impostazione predefinita, '''OpenSSH''' consente di effettuare l'accesso tramite autenticazione con nome utente e password dell'utente remoto. Tuttavia se qualcuno è venuto in possesso di nome e password dell'utente del computer remoto, vi si potrà connettere dall'esterno, compromettendo la sicurezza del computer remoto. Da tempo '''OpenSSH''' è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica. |
| Linea 76: | Linea 100: |
| A meno che non si abbia già una chiave privata, la prima cosa da fare è crearne una. Da terminale inserire: |
'''OpenSSH''' può usare chiavi di accesso private e pubbliche al posto della password utente remoto. La prima cosa da fare è creare la propria coppia di chiavi, privata e pubblica, sul computer locale. Aprire una finestra di terminale e digitare: |
| Linea 83: | Linea 105: |
| Sarà chiesto dove salvare la chiave privata (si può accettare la posizione predefinita) 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. | Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita `~/.ssh/id_dsa`) e di scegliere una '''passphrase''' adeguata. La passphrase è una nuova password, usata per cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase. |
| Linea 85: | Linea 107: |
| Ora per avere accesso ad altri computer, questi devono "fidarsi" della vostra chiave pubblica. La chiave pubblica è stata creata assieme alla chiave privata ed è generalmente localizzata in {{{~/.ssh/id_dsa.pub}}}. | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Grandi/info.png,,center)]] ||<style="padding:0.5em; border:none;">Si può anche scegliere di non creare la passphrase e quindi di non cifrare la chiave privata, ma sarebbe una pessima scelta, in quanto chiunque venisse in possesso della nostra chiave privata in chiaro avrebbe facilmente accesso a tutti i servizi. || |
| Linea 87: | Linea 109: |
| L'utente target (verso cui ci si connette) deve avere questa chiave (è una linea dei caratteri 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 | Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), liberamente distribuibile. L'account utente sul computer remoto usato per l'accesso deve avere memorizzata la chiave pubblica nel relativo file di autorizzazione, cioè il file `~/.ssh/authorized_keys` del computer remoto; per lo scopo, '''OpenSSH''' mette a disposizione il comando `ssh-copy-id`, da usare sul computer locale come nel seguente esempio: |
| Linea 89: | Linea 113: |
| ssh-copy-id root@fileserver01 | ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIP |
| Linea 92: | Linea 116: |
| 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 |
Quello che segue è un esempio: |
| Linea 96: | Linea 118: |
| ssh root@fileserver01 | ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42 |
| Linea 99: | Linea 121: |
| 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 vostra chiave privata sul vostro computer. | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo.'' || |
| Linea 101: | Linea 123: |
| Ricapitolando: l'attuale sicurezza di una autenticazione con chiave pubblica rispetto a una autenticazione con password è che per avere un accesso si necessita di avere: | Una volta aggiunta la chiave pubblica sul computer remoto sarà possibile effetuare l'accesso. Aprire una finestra di terminale e digitare il seguente comando: {{{ ssh nomeutente@indirizzoIP }}} |
| Linea 103: | Linea 128: |
| * la chiave privata (criptata) | Verrà chiesta la passphrase conservata in locale e non la password dell'utente remoto (salvata in `/etc/password` del computer remoto). |
| Linea 105: | Linea 130: |
| * la passphrase per decriptare la chiave privata | Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente. Aprire il file `/etc/ssh/sshd_config` con un [:EditorDiTesto:Editor di testo] con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] e aggiungere la seguente riga: {{{ Password``Authentication no }}} |
| Linea 107: | Linea 135: |
| Così se non si scegliesse affatto la passphrase (il che è possibile -vedi dopo) si avrebbe meno sicurezza che usare solo una password. | Terminate le modifiche sarà necessario riavviare il server '''ssh'''. |
| Linea 109: | Linea 137: |
| == Memorizzazione della passphrase == | |
| Linea 110: | Linea 139: |
| [[Immagine(Icone/Piccole/note.png,,left)]] Per ragioni di sicurezza si può disabilitare l'autenticazione tramite password settando "Password``Authentication no" nel file `/etc/ssh/sshd_config`. Non si deve però poi dimenticare di riavviare '''`ssh-server`''' dopo il cambio di configurazione.[[BR]] | 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. |
| Linea 112: | Linea 141: |
| = Limitare l'accesso a ssh = | Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add'''. Digitare il seguente comando: {{{ ssh-add }}} |
| Linea 114: | Linea 146: |
| 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 | Verrà chiesta la passphrase, dopodiché la chiave privata sarà sempre disponibile. ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''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.'' || == Permessi sui comandi == Sul computer remoto si può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un repository [:Cvs:CVS], si può aggiungere nel file `authorized_keys` la seguente riga: |
| Linea 119: | Linea 157: |
| 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. |
| Linea 121: | Linea 159: |
| = Accesso automatico in batch scripts = | = Il protocollo SSH su altri sistemi operativi = |
| Linea 123: | Linea 161: |
| 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. | == Supporto per Windows == |
| Linea 125: | 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. | Microsoft Windows dispone di [http://www.openssh.com/windows.html diverse alternative] più o meno valide per usare il protocollo SSH e fare anche da server. Il più diffuso client SSH per Windows è [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty]. |
| Linea 127: | Linea 165: |
| [[Immagine(Icone/Piccole/warning.png,,left)]] '''Avere una chiave privata non protetta può compromettere la sicurezza. Gli hacker necessiterebbero solo di venire in possesso della chiave pubblica per connettersi liberamente al computer target.'''[[BR]][[BR]] | == Supporto per cellulari Symbian == |
| Linea 129: | Linea 167: |
| = Usare ssh-agent = | Il client SSH '''Putty''' è disponibile anche in una versione per cellulari Symbian a [http://s2putty.sourceforge.net/ questo indirizzo]. |
| Linea 131: | Linea 169: |
| 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 | = Ulteriori risorse = |
| Linea 133: | Linea 171: |
| 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. 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?!? :) [[Immagine(Icone/Piccole/note.png,,left)]] Quando si lascia il proprio desktop per un po' di tempo si deve bloccare lo schermo. Altre persone potrebbero avere accesso ad altri computer dal tuo computer senza conoscere la passphrase.[[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 Dopo il prossimo login sarà richiesta la passphrase. = Ssh non da Linux = Per chi non lo sapesse '''`ssh`''' si può utilizzare anche su sistemi Windows, basta scaricare un piccolo programma che si chiama '''`Putty`''' [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html da qui]. '''`Putty`''', inoltre, è disponibile anche in una versione per i cellulari [http://s2putty.sourceforge.net/ Symbian]. |
* [http://www.openssh.org/ Sito ufficiale del progetto] * [wiki:Ubuntu/SSHHowto Pagina sul wiki internazionale] |
| Linea 158: | Linea 174: |
| Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en} | CategoryInternet CategorySicurezza CategoryServer |
IndiceBRTableOfContents(1) |
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;
cifrare qualunque traffico di dati tra computer locale e computer remoto tramite il tunneling.
OpenSSH sostituisce i vecchi programmi telnet, rlogin e ftp, considerati poco sicuri poichè trasmettono in chiaro i dati relativi all'autenticazione (nome utente, password etc).
Installazione
È 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, su entrambi dovranno essere installati sia il server che il client.
Per avere il server ssh su Ubuntu, è sufficiente [:InstallareProgrammi:installare] il pacchetto openssh-server.
Il client ssh (contenuto nel pacchetto openssh-client) è installato in Ubuntu in modo predefinito.
Usare nautilus con computer remoti
Nautilus consente di visualizzare, modificare, eliminare o copiare file presenti su un computer remoto (con server ssh installato) in tutta sicurezza, grazie a OpenSSH. Il metodo più semplice per ottenere ciò è aprire nautilus e inserire l'indirizzo desiderato (verrà chiesta la password dell'utente remoto), come da esempio:
ssh://nomeutenteRemoto@indirizzoIP
Il metodo successivo permette di avere un'icona persistente in nautilus, evitando dunque di inserire ogni volta gli stessi «nomeutenteRemoto» e «indirizzoIP». Scegliere Risorse -> Connetti al server..., quindi inserire i seguenti dati:
Campo |
Valore |
Tipo di servizio: |
SSH |
Server: |
«indirizzoIP» |
Nome utente: |
«nomeutenteRemoto» |
Nome da usare per la connessione: |
a scelta dell'utente |
Utilizzo da terminale
Copia di file
Per copiare un file dal proprio computer locale a un computer remoto (e viceversa) attraverso il terminale, OpenSSH mette a disposizione il comando scp.
Nel primo caso, la sintassi del comando dovrebbe essere simile alla seguente:
scp percorsoFileLocale nomeUtenteRemoto@indirizzoIP:PercorsoDestinazioneRemota
Quello che segue è un esempio:
scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt
Il precedente comando copierà il file fileDaCopiare.txt dalla cartella corrente del computer locale alla posizione /home/mario/fileCopiato.txt (non è necessario cambiare il nome del file) del computer remoto identificato dall'indirizzo ip 192.168.1.1 , usando l'utente mario sul computer remoto.
Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso, digitando un comando simile al seguente:
scp nomeUtenteRemoto@indirizzoIP:PercorsoFileRemoto PercorsoDestinazioneLocale
Quello che segue è un esempio:
scp mario@192.168.1.1:/home/mario/fileDaCopiare.txt .
Tale comando copierà il file remoto identificato dal percorso /home/mario/fileDaCopiare.txt nella cartella corrente (identificata dal punto .), senza rinominarlo.
Con scp non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali. |
Accedere al terminale di un computer remoto
Per accedere alla linea di comando di un computer remoto, OpenSSH fornisce il comando ssh. È sufficiente digitare il comando:
ssh nomeutente@indirizzoIP
Quello che segue è un esempio:
ssh mario@192.168.23.42
Se il computer remoto utilizza Ubuntu come sistema operativo, risulterà impossibile connettersi a 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, [:AmministrazioneSistema/Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.
Aumentare la sicurezza
Autenticazione a chiave pubblica
Per impostazione predefinita, OpenSSH consente di effettuare l'accesso tramite autenticazione con nome utente e password dell'utente remoto. Tuttavia se qualcuno è venuto in possesso di nome e password dell'utente del computer remoto, vi si potrà connettere dall'esterno, compromettendo la sicurezza del computer remoto. 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 la propria coppia di chiavi, privata e pubblica, sul computer locale. Aprire una finestra di terminale e digitare:
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 adeguata. La passphrase è una nuova password, usata per cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase.
Si può anche scegliere di non creare la passphrase e quindi di non cifrare la chiave privata, ma sarebbe una pessima scelta, in quanto chiunque venisse in possesso della nostra chiave privata in chiaro avrebbe facilmente accesso a tutti i servizi. |
Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in ~/.ssh/id_dsa.pub sul computer locale), liberamente distribuibile.
L'account utente sul computer remoto usato per l'accesso deve avere memorizzata la chiave pubblica nel relativo file di autorizzazione, cioè il file ~/.ssh/authorized_keys del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare sul computer locale come nel seguente esempio:
ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIP
Quello che segue è un esempio:
ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42
Se l'autenticazione con password utente remoto è disabilitata, si deve copiare e incollare la chiave con un altro mezzo. |
Una volta aggiunta la chiave pubblica sul computer remoto sarà possibile effetuare l'accesso. Aprire una finestra di terminale e digitare il seguente comando:
ssh nomeutente@indirizzoIP
Verrà chiesta la passphrase conservata in locale e non la password dell'utente remoto (salvata in /etc/password del computer remoto).
Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente. Aprire il file /etc/ssh/sshd_config con un [:EditorDiTesto:Editor di testo] con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] e aggiungere la seguente riga:
Password``Authentication no
Terminate le modifiche sarà necessario riavviare il server ssh.
Memorizzazione della passphrase
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.
Il comando per aggiungere la propria passphrase al gestore delle identità è ssh-add. Digitare il seguente comando:
ssh-add
Verrà chiesta la passphrase, dopodiché la chiave privata sarà sempre disponibile.
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. |
Permessi sui comandi
Sul computer remoto si può scegliere di far eseguire solo alcuni comandi a chi vi si connette tramite autenticazione a chiave pubblica. Se per esempio si gestisce un repository [:Cvs:CVS], si può aggiungere nel file authorized_keys la seguente riga:
command="/usr/bin/cvs server" ssh-dss AAAAB3N....
In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS.
Il protocollo SSH su altri sistemi operativi
Supporto per Windows
Microsoft Windows dispone di [http://www.openssh.com/windows.html diverse alternative] più o meno valide per usare il protocollo SSH e fare anche da server. Il più diffuso client SSH per Windows è [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty].
Supporto per cellulari Symbian
Il client SSH Putty è disponibile anche in una versione per cellulari Symbian a [http://s2putty.sourceforge.net/ questo indirizzo].
Ulteriori risorse
[http://www.openssh.org/ Sito ufficiale del progetto]
- [wiki:Ubuntu/SSHHowto Pagina sul wiki internazionale]
