|
Dimensione: 9883
Commento: Finito l'"ammodernamento" della pagina
|
Dimensione: 11343
Commento:
|
| 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 è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni: * controllare un computer remoto(tramite terminale) |
'''OpenSSH''' è un insieme di programmi che permettono, in tutta sicurezza, di svolgere diverse operazioni: * controllare un computer remoto (tramite terminale) |
| Linea 9: | Linea 18: |
| * 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) |
|
| Linea 12: | Linea 19: |
| = Preparazione dei computer = | * cifrare qualunque traffico di dati tra computer locale e computer remoto tramite tunneling |
| Linea 14: | Linea 21: |
| È 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. | '''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). |
| Linea 16: | Linea 23: |
| 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: | [[Anchor(installazione)]] = Installazione del server = |
| Linea 18: | Linea 26: |
| {{{ | È 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 installare il pacchetto ''openssh-server'' tramite [:SynapticHowto:Synaptic], [:AdeptHowTo:Adept] o [:Apt:apt-get]. Per installare il sopra citato pacchetto da terminale è sufficiente digitare il seguente comando: {{{ |
| Linea 22: | Linea 32: |
| Il client ssh (contenuto nel pacchetto ''openssh-client'') è installato in ubuntu in modo predefinito. | Il client '''ssh''' (contenuto nel pacchetto ''openssh-client'') è installato in Ubuntu in modo predefinito. |
| Linea 24: | Linea 34: |
| = Usare Nautilus con computer remoti in maniera sicura = | = Usare Nautilus con computer remoti = |
| Linea 26: | Linea 36: |
| '''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> |
'''Nautilus''' può 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>` |
| Linea 32: | Linea 40: |
| per vedere il filesystem di un computer remoto come se fosse locale(ricordarsi di sostituire <nomeutente> e <indirizzoIP> in maniera adeguata). | Il secondo metodo permette di avere un'icona persistente in Nautilus ed evitare così di inserire ogni volta gli stessi <nomeutenteRemoto> e <indirizzoIP>. Scegliere '''''Risorse -> Connetti al server...''''', quindi inserire: |
| Linea 34: | Linea 42: |
| 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). | ||<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: || <nomeAPiacere> || |
| Linea 36: | Linea 48: |
| = Copiare file da un computer a un altro tramite terminale locale = | = Utilizzo da terminale = |
| Linea 38: | Linea 50: |
| Per copiare un file dal nostro computer locale a un computer remoto(e viceversa) attraverso il terminale, '''OpenSSH''' mette a disposizione il comando ''scp''. | == Copia di file == |
| Linea 40: | Linea 52: |
| Nel primo caso, il comando dovrebbe seguire questo schema: | 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, la sintassi del comando dovrebbe essere simile alla seguente: |
| Linea 46: | Linea 60: |
| Linea 51: | Linea 64: |
| 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). | Il precedente comando 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 53: | Linea 66: |
| Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso: {{{ |
Per copiare un file da un computer remoto al computer locale, basta seguire lo schema inverso: {{{ |
| Linea 58: | Linea 70: |
| Per esempio: {{{ |
Per esempio: {{{ |
| Linea 65: | Linea 76: |
| [[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.[[BR]][[BR]] | ||<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 67: | Linea 78: |
| == Terminale di un computer remoto == | |
| Linea 68: | Linea 80: |
| = 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: {{{ |
Per accedere alla linea di comando di un computer remoto, '''OpenSSH''' fornisce il comando '''ssh'''. È sufficiente digitare il comando: {{{ |
| Linea 76: | Linea 84: |
| Per esempio: {{{ |
Per esempio: {{{ |
| Linea 84: | Linea 90: |
| [[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. | 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, [:Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto. |
| Linea 86: | Linea 92: |
| = Autenticazione a chiave pubblica = | = Aumentare la sicurezza = |
| Linea 88: | Linea 94: |
| 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. | == Autenticazione a chiave pubblica == Per impostazione predefinita, OpenSSH su ubuntu permette il log-in tramite autenticazione con username 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 e a nostra insaputa, compromettendo la sicurezza del computer remoto. Da tempo '''OpenSSH''' è in grado di prevenire il problema, grazie all'autenticazione con chiave pubblica. |
| Linea 92: | Linea 100: |
| La prima cosa da fare è creare(se non se ne ha già una) la propria chiave privata sul computer locale. | La prima cosa da fare è creare(se non se ne ha già una) la propria coppia di chiavi (privata e pubblica) sul computer locale. |
| Linea 94: | Linea 102: |
| Da terminale inserire: {{{ |
Da terminale inserire: {{{ |
| Linea 99: | Linea 106: |
| 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). | 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 cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decifrare la chiave privata). |
| Linea 101: | Linea 108: |
| [[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).[[BR]][[BR]] | ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non cifrare 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 cifrata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla).'' || |
| Linea 103: | Linea 110: |
| 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. | Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), che è quella distribuibile liberamente; 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 105: | Linea 112: |
| 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> |
L'utente che usiamo sul computer remoto deve avere la nostra 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 nell'esempio: {{{ ssh-copy-id -i <percorsoLocaleChiavePubblica> <nomeUtenteRemoto>@<indirizzoIP> |
| Linea 110: | Linea 116: |
| Per esempio: {{{ ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42 }}} |
|
| Linea 111: | Linea 120: |
| [[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.[[BR]][[BR]][[BR]] | ||<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 113: | Linea 122: |
| Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando {{{ |
Grazie all'aggiunta della chiave pubblica sul computer remoto si diventerà "affidabili". Adesso, digitando {{{ |
| Linea 118: | Linea 126: |
| verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto(salvata in `/etc/password` del computer remoto). | verrà chiesta la nostra "passphrase" conservata in locale e non la password dell'utente remoto (salvata in `/etc/password` del computer remoto). |
| Linea 120: | Linea 128: |
| [[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 "Password``Authentication no" nel file `/etc/ssh/sshd_config` (è necessario riavviare il server ssh per rendere effettivo il cambiamento).[[BR]] | Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente impostando: {{{ Password``Authentication no }}} nel file `/etc/ssh/sshd_config` (è necessario riavviare il server SSH per rendere effettivo il cambiamento). |
| Linea 122: | Linea 132: |
| = Evitare l'inserimento della password a ogni connessione = | === Memorizzazione della passphrase === |
| Linea 126: | Linea 136: |
| Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add''', usato semplicemente con: {{{ |
Il comando per aggiungere la propria passphrase al gestore delle identità è '''ssh-add''', usato semplicemente con: {{{ |
| Linea 130: | Linea 139: |
| verrà chiesta la passphrase, dopodiché la nostra chiave privata sarà disponibile senza ulteriori richieste. | verrà chiesta la passphrase, dopodiché la chiave privata sarà disponibile senza ulteriori richieste. |
| Linea 132: | Linea 141: |
| [[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.[[BR]][[BR]] | ||<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.'' || |
| Linea 134: | Linea 143: |
| = Permettere solo l'esecuzione di specifici comandi = | == Permessi sui comandi == |
| Linea 136: | Linea 145: |
| 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 {{{ |
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_keys` la seguente riga {{{ |
| Linea 143: | Linea 151: |
| = Connettersi a un server ssh usando Microsoft Windows = | = Il protocollo SSH su altri sistemi operativi = |
| Linea 145: | Linea 153: |
| == Microsoft Windows == | |
| Linea 146: | Linea 155: |
| 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]. | 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 148: | Linea 157: |
| = Connettersi a un server ssh usando un cellulare Symbian = | == Cellulare Symbian == |
| Linea 150: | Linea 159: |
| '''`Putty`''' è disponibile anche in una [http://s2putty.sourceforge.net/ versione per i cellulari Symbian]. | Il client SSH '''`Putty`''' è disponibile anche in una versione per cellulari [http://s2putty.sourceforge.net/ Symbian]. |
| Linea 152: | Linea 161: |
| = Ulteriori risorse = * [wiki:Ubuntu/SSHHowto Pagina sul wiki inglese] * [http://www.openssh.org/ Sito ufficiale del progetto] |
|
| Linea 153: | Linea 167: |
| Documento originale: [wiki:Ubuntu/SSHHowto SSHHowto] {en} CategoryInternet |
CategoryInternet CategorySicurezza CategoryServer CategoryDaRevisionare |
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 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 del 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, su entrambi dovranno essere installati sia il server che il client.
Per avere il server ssh su Ubuntu, è sufficiente installare il pacchetto openssh-server tramite [:SynapticHowto:Synaptic], [:AdeptHowTo:Adept] o [:Apt:apt-get]. Per installare il sopra citato pacchetto da terminale è sufficiente digitare 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
Nautilus può 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 secondo metodo permette di avere un'icona persistente in Nautilus ed evitare così di inserire ogni volta gli stessi <nomeutenteRemoto> e <indirizzoIP>. Scegliere Risorse -> Connetti al server..., quindi inserire:
Campo |
Valore |
Tipo di servizio: |
SSH |
Server: |
<indirizzoIP> |
Nome utente: |
<nomeutenteRemoto> |
Nome da usare per la connessione: |
<nomeAPiacere> |
Utilizzo da terminale
Copia di file
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, la sintassi del comando dovrebbe essere simile alla seguente:
scp <percorsoFileLocale> <nomeUtenteRemoto>@<indirizzoIP>:<PercorsoDestinazioneRemota>
Per esempio:
scp fileDaCopiare.txt mario@192.168.1.1:/home/mario/fileCopiato.txt
Il precedente comando 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.
Con scp non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali. |
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>
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).
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, [:Sudo#abilitare_login_root:abilitare l'utente root] sul computer remoto.
Aumentare la sicurezza
Autenticazione a chiave pubblica
Per impostazione predefinita, OpenSSH su ubuntu permette il log-in tramite autenticazione con username 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 e a nostra insaputa, 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(se non se ne ha già una) la propria coppia di chiavi (privata e pubblica) 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 cifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase(per decifrare la chiave privata).
Si può anche scegliere di non creare la passphrase(basta non inserirla e premere invio) e quindi non cifrare 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 cifrata mediante passphrase, l'eventuale cracker si ritroverebbe in mano un inutile ammasso di caratteri senza senso(gli serve la passphrase per decifrarla). |
Insieme alla chiave privata viene creata anche la chiave pubblica (localizzata in ~/.ssh/id_dsa.pub sul computer locale), che è quella distribuibile liberamente; 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_keys del computer remoto; per lo scopo, OpenSSH mette a disposizione il comando ssh-copy-id, da usare sul computer locale come nell'esempio:
ssh-copy-id -i <percorsoLocaleChiavePubblica> <nomeUtenteRemoto>@<indirizzoIP>
Per 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. |
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).
Se si sceglie di usare solo l'autenticazione tramite chiave pubblica, per aumentare ulteriormente la sicurezza si può disabilitare l'autenticazione tramite password utente impostando:
Password``Authentication no
nel file /etc/ssh/sshd_config (è necessario riavviare il server SSH per rendere effettivo il cambiamento).
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 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 chiave privata sarà disponibile senza ulteriori richieste.
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
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_keys 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.
Il protocollo SSH su altri sistemi operativi
Microsoft 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].
Cellulare Symbian
Il client SSH Putty è disponibile anche in una versione per cellulari [http://s2putty.sourceforge.net/ Symbian].
Ulteriori risorse
- [wiki:Ubuntu/SSHHowto Pagina sul wiki inglese]
[http://www.openssh.org/ Sito ufficiale del progetto]
CategoryInternet CategorySicurezza CategoryServer CategoryDaRevisionare
