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 42 e 86 (in 44 versioni)
Versione 42 del 02/05/2007 13.24.43
Dimensione: 11514
Autore: DavideLuigi
Commento: ssh è solo uno dei tanti metodi di connessione, conviene sottolinearlo :)
Versione 86 del 23/11/2023 16.44.04
Dimensione: 12607
Autore: jeremie2
Commento: Tabelle: rimozione vecchi colori standard
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from InternetRete/ConfigurazioneRete/OpenSsh
## page was renamed from SSHHowto
Linea 3: Linea 5:
## page was renamed from SshHowTo
Linea 7: Linea 8:
##--usare X11Forwarding per vedere in locale una applicazione grafica che gira in remoto
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents(1)]]||
##--revisionare il paragrafo relativo all'X11 Forwarding
<<BR>>
<<Indice(depth=1)>>
<<Informazioni(rilasci="8.04")>>
Linea 13: Linea 15:
'''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 e insicuri programmi '''telnet''', '''rlogin''' e '''ftp''', considerati poco sicuri poiché trasmettono in chiaro tutti i dati (compresi nome utente, password, passphrase etc).
'''OpenSSH''' è un insieme di programmi in grado di svolgere diverse operazioni mantenendo un elevato grado di sicurezza:
 * 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).

<<Anchor(installazione)>>
Linea 25: Linea 25:
È 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, 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>. Dal menu '''''Risorse''''' scegliere '''Connetti al server...''' quindi inserire:
||<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> ||
È 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 [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto ''openssh-server''.

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

Inoltre si dovranno conoscere il nome e la password di una utenza presente nel computer remoto.

<<Anchor(accessoremoto)>>
= Esplorare i file di un computer remoto =

Per esplorare i file di un computer remoto (con '''server ssh''' attivo) come se si trovassero nel proprio computer locale, scegliere '''''Risorse -> Connetti al server...''''', quindi inserire i seguenti dati:

||<:>'''Campo'''||<:>'''Valore'''||
|| Tipo di servizio: || SSH ||
|| Server: || «indirizzoIPRemoto» ||
|| Nome utente: || «nomeutenteRemoto» ||
|| Nome da usare per la connessione: || a scelta dell'utente ||

È possibile anche creare un segnalibro in modo da non dover ripetere questa procedura ad ogni sessione, ma è utile farlo solo quando l'indirizzo IP del computer remoto non cambia mai (per esempio un sito Internet o un computer nella propria rete locale).

Un modo alternativo è inserire direttamente l'indirizzo in una finestra di ''''Esplorazione file'''', secondo il seguente modello:
{{{
ssh://nomeutenteRemoto@indirizzoIP
}}}

= Utilizzo di altre applicazioni con interfaccia grafica =

I seguenti programmi, scaricabili tramite il gestore dei pacchetti, utilizzano un'interfaccia grafica per gestire più facilmente tutti i vari comandi SSH più comunemente usati.

 * '''Putty'''; gestore grafico del login, che restituisce una finestra terminale dell'utente remoto da cui operare solo tramite riga di comando.
 * [[/SecPanel|SecPanel]]; gestore completamente grafico sia del login, della gestione dei file e delle cartelle locali e remote; gestisce singolarmente sia le chiavi che l'agente SSH.
Linea 52: Linea 62:
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: {{{
Per copiare un file dal proprio computer locale a un computer remoto, usare il comando '''scp''' secondo il modello seguente:
{{{
scp percorsoFileLocale nomeUtenteRemoto@indirizzoIP:PercorsoDestinazioneRemota
}}}

Quello che segue è un esempio:
{{{
Linea 62: Linea 72:
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: {{{
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:
{{{
Linea 72: Linea 84:
Copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella directory corrente (identificata dal punto `.` ), senza rinominarlo.

||<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.'' ||

== 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:
Tale comando copierà il file remoto identificato dal percorso `/home/mario/fileDaCopiare.txt` nella cartella corrente (identificata dal punto `.`), senza rinominarlo.

{{{#!wiki note
Con '''scp''' non si possono copiare file tra due computer remoti. La sorgente o la destinazione devono essere file locali.
}}}

== Eseguire un comando su un computer remoto ==

Per eseguire un singolo comando su un computer remoto, usare il comando '''ssh''' secondo il seguente modello:
{{{
ssh nomeutenteRemoto@indirizzoIPRemoto comando
}}}

== Accedere al terminale di un computer remoto ==

Per accedere alla linea di comando di un computer remoto, usare il comando '''ssh''' secondo il seguente modello:
{{{
ssh nomeutente@indirizzoIP
}}}

Quello che segue è un esempio:
Linea 90: Linea 109:
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).

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''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.'' ||
{{{#!wiki note
Se il computer remoto utilizza Ubuntu come sistema operativo, risulterà impossibile connettersi a esso come utente '''root''', perché in Ubuntu l'accesso come utente '''root''' è disabilitato. 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'accesso come utente root]] sul computer remoto.
}}}

= Usare un programma grafico sul computer remoto =

== Prerequisiti ==

È possibile avviare un'applicazione grafica sul computer remoto e visualizzarla sul computer locale, grazie a una tecnica chiamata X11 Forwarding. Gli unici requisiti del computer locale sono una connessione abbastanza veloce con il computer remoto (una ADSL standard dovrebbe andare bene) e l'installazione di base del server X11, mentre non ci sono requisiti particolari per il computer remoto.
Potrebbe inoltre essere necessaria l'installazione del pacchetto '''xauth''' sul computer locale.

== Sintassi ==

Prima di tutto è necessario autorizzare il server grafico del computer remoto (con server ssh attivo) ad accettare connessioni in entrata dal computer locale, quindi sul computer remoto aprire una finestra di terminale e digitare:

{{{
xhost +
}}}

{{{#!wiki note
Se l'esecuzione di questo comando dovesse fallire sarà necessario installare il pacchetto xauth.
}}}

Successivamente per collegarsi al computer remoto digitare:

{{{
ssh -X utenteremoto@computerremoto
}}}

== Note per Windows ==

La maggior parte dei software SSH per Windows non supporta nativamente il Forwarding X11. In questo caso si può utilizzare Cyg``Win, che contiene il port di numerosi software linux, tra quali SSH (sia client che server) e server X11.

<<Anchor(sicurezza)>>
Linea 98: Linea 147:
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 inseri
re:
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, compromettendone la sicurezza. Con l'autenticazione a chiave pubblica/privata, invece, solo il computer in possesso della chiave privata (usato dalla persona che conosce la passphrase per usarla) può accedere al computer remoto su cui risiede la corrispondente chiave pubblica.

Per creare la propria coppia di chiavi (privata e pubblica) sul computer locale, aprire una finestra di terminale e digitare:
Linea 109: Linea 154:
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).

||<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).'' ||

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: {{{
Verrà chiesto dove salvare la chiave privata (si consiglia di accettare la posizione predefinita `~/.ssh/id_dsa`) e di scegliere una '''passphrase''' (una nuova password) che verrà usata per cifrare e decifrare la chiave privata. Ogni qualvolta servirà la nostra chiave privata, bisognerà prima fornire la passphrase.

{{{#!wiki tip
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 facile accesso a tutti i servizi.
}}}

Insieme alla chiave privata viene creata anche la corrispondente chiave pubblica (localizzata in `~/.ssh/id_dsa.pub` sul computer locale), liberamente distribuibile; in particolare la chiave pubblica la si deve inserire nei computer remoti (ai quali si vuole avere accesso) usando il comando `ssh-copy-id` dal computer locale (su cui risiede la chiave privata) secondo il modello seguente:
{{{
ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIPRemoto
}}}
Quello che segue è un esempio:
{{{
Linea 124: Linea 169:
||<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.'' ||

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).

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5% ^>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''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).'' ||

=== 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:
Se per qualche motivo non si riuscisse a usare il precedente comando, sarà necessario copiare manualmente l'intero contenuto del file `~/.ssh/id_dsa.pub` dal computer locale e aggiungerlo in coda al file `~/.ssh/authorized_keys` (senza sovrascrivere eventuali contenuti preesistenti) nella cartella utente sul computer remoto.

Una volta aggiunta la chiave pubblica sul computer remoto, non verrà più chiesta la password dell'utente del computer remoto (salvata in `/etc/password` del computer remoto), ma verrà chiesta la passphrase conservata in locale.

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 [[Ufficio/EditorDiTesto|Editor di testo]] con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] e aggiungere la seguente riga:
{{{
PasswordAuthentication 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:
Linea 142: Linea 188:
verrà chiesta la passphrase, dopodiché la nostra chiave privata sarà disponibile senza ulteriori richieste.

||<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.'' ||

V
errà chiesta la passphrase, dopodiché la chiave privata sarà sempre disponibile.

{{{#!wiki note
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 148: Linea 197:
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 {{{ 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 [[Programmazione/Cvs|CVS]], si può aggiungere nel file `authorized_keys` la seguente riga:
{{{
Linea 152: Linea 202:
In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS e non di altri comandi. In questo modo è permessa l'esecuzione esclusivamente dei comandi per il CVS.

== Cambiare la porta di default ==

Aprire il file `/etc/ssh/sshd_config` con un editor di testo:
{{{
sudo gedit /etc/ssh/sshd_config
}}}
Modificare la stringa '''Port''' con un valore non occupato, dopo di che riavviare il demone:
{{{
/etc/init.d/ssh restart
}}}
Linea 156: Linea 217:
== 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].
== 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 grafico SSH, realizzato anche 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]].
Linea 166: Linea 227:
 * [wiki:Ubuntu/SSHHowto Documento originale]
 *
[http://www.openssh.org/ Sito ufficiale del progetto]
 
 * [[http://www.openssh.org/|Sito ufficiale del progetto]]
 * [[Ubuntu:SSHHowto|Pagina sul wiki internazionale]]
Linea 170: Linea 231:
CategoryInternet CategoryInternet CategorySicurezza CategoryServer CategoryDaRevisionare


Introduzione

OpenSSH è un insieme di programmi in grado di svolgere diverse operazioni mantenendo un elevato grado di sicurezza:

  • 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).

Preparativi

È 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.

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

Inoltre si dovranno conoscere il nome e la password di una utenza presente nel computer remoto.

Esplorare i file di un computer remoto

Per esplorare i file di un computer remoto (con server ssh attivo) come se si trovassero nel proprio computer locale, scegliere Risorse -> Connetti al server..., quindi inserire i seguenti dati:

Campo

Valore

Tipo di servizio:

SSH

Server:

«indirizzoIPRemoto»

Nome utente:

«nomeutenteRemoto»

Nome da usare per la connessione:

a scelta dell'utente

È possibile anche creare un segnalibro in modo da non dover ripetere questa procedura ad ogni sessione, ma è utile farlo solo quando l'indirizzo IP del computer remoto non cambia mai (per esempio un sito Internet o un computer nella propria rete locale).

Un modo alternativo è inserire direttamente l'indirizzo in una finestra di 'Esplorazione file', secondo il seguente modello:

ssh://nomeutenteRemoto@indirizzoIP

Utilizzo di altre applicazioni con interfaccia grafica

I seguenti programmi, scaricabili tramite il gestore dei pacchetti, utilizzano un'interfaccia grafica per gestire più facilmente tutti i vari comandi SSH più comunemente usati.

  • Putty; gestore grafico del login, che restituisce una finestra terminale dell'utente remoto da cui operare solo tramite riga di comando.

  • SecPanel; gestore completamente grafico sia del login, della gestione dei file e delle cartelle locali e remote; gestisce singolarmente sia le chiavi che l'agente SSH.

Utilizzo da terminale

Copia di file

Per copiare un file dal proprio computer locale a un computer remoto, usare il comando scp secondo il modello 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.

Eseguire un comando su un computer remoto

Per eseguire un singolo comando su un computer remoto, usare il comando ssh secondo il seguente modello:

ssh nomeutenteRemoto@indirizzoIPRemoto comando

Accedere al terminale di un computer remoto

Per accedere alla linea di comando di un computer remoto, usare il comando ssh secondo il seguente modello:

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'accesso come utente root è disabilitato. 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'accesso come utente root sul computer remoto.

Usare un programma grafico sul computer remoto

Prerequisiti

È possibile avviare un'applicazione grafica sul computer remoto e visualizzarla sul computer locale, grazie a una tecnica chiamata X11 Forwarding. Gli unici requisiti del computer locale sono una connessione abbastanza veloce con il computer remoto (una ADSL standard dovrebbe andare bene) e l'installazione di base del server X11, mentre non ci sono requisiti particolari per il computer remoto. Potrebbe inoltre essere necessaria l'installazione del pacchetto xauth sul computer locale.

Sintassi

Prima di tutto è necessario autorizzare il server grafico del computer remoto (con server ssh attivo) ad accettare connessioni in entrata dal computer locale, quindi sul computer remoto aprire una finestra di terminale e digitare:

xhost +

Se l'esecuzione di questo comando dovesse fallire sarà necessario installare il pacchetto xauth.

Successivamente per collegarsi al computer remoto digitare:

ssh -X utenteremoto@computerremoto

Note per Windows

La maggior parte dei software SSH per Windows non supporta nativamente il Forwarding X11. In questo caso si può utilizzare CygWin, che contiene il port di numerosi software linux, tra quali SSH (sia client che server) e server X11.

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, compromettendone la sicurezza. Con l'autenticazione a chiave pubblica/privata, invece, solo il computer in possesso della chiave privata (usato dalla persona che conosce la passphrase per usarla) può accedere al computer remoto su cui risiede la corrispondente chiave pubblica.

Per 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 (una nuova password) che verrà usata per cifrare e decifrare 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 facile accesso a tutti i servizi.

Insieme alla chiave privata viene creata anche la corrispondente chiave pubblica (localizzata in ~/.ssh/id_dsa.pub sul computer locale), liberamente distribuibile; in particolare la chiave pubblica la si deve inserire nei computer remoti (ai quali si vuole avere accesso) usando il comando ssh-copy-id dal computer locale (su cui risiede la chiave privata) secondo il modello seguente:

ssh-copy-id -i percorsoLocaleChiavePubblica nomeUtenteRemoto@indirizzoIPRemoto

Quello che segue è un esempio:

ssh-copy-id -i ~/.ssh/id_dsa.pub mario@192.168.23.42

Se per qualche motivo non si riuscisse a usare il precedente comando, sarà necessario copiare manualmente l'intero contenuto del file ~/.ssh/id_dsa.pub dal computer locale e aggiungerlo in coda al file ~/.ssh/authorized_keys (senza sovrascrivere eventuali contenuti preesistenti) nella cartella utente sul computer remoto.

Una volta aggiunta la chiave pubblica sul computer remoto, non verrà più chiesta la password dell'utente del computer remoto (salvata in /etc/password del computer remoto), ma verrà chiesta la passphrase conservata in locale.

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 Editor di testo con i privilegi di amministrazione e aggiungere la seguente riga:

PasswordAuthentication 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, 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.

Cambiare la porta di default

Aprire il file /etc/ssh/sshd_config con un editor di testo:

sudo gedit /etc/ssh/sshd_config

Modificare la stringa Port con un valore non occupato, dopo di che riavviare il demone:

/etc/init.d/ssh restart

Il protocollo SSH su altri sistemi operativi

Supporto per Windows

Microsoft Windows dispone di diverse alternative più o meno valide per usare il protocollo SSH e fare anche da server. Il più diffuso client grafico SSH, realizzato anche per Windows, è Putty.

Supporto per cellulari Symbian

Il client SSH Putty è disponibile anche in una versione per cellulari Symbian a questo indirizzo.

Ulteriori risorse


CategoryInternet CategorySicurezza CategoryServer CategoryDaRevisionare