Difference between revisions of "SSH keys (Italiano)"

From ArchWiki
Jump to: navigation, search
(rm translation flag -- appears complete)
m
Line 8: Line 8:
 
Utilizzando le chiavi SSH (una chiave pubblica e privata per la precisione), si può facilmente connettersi a un server o più server, senza dover inserire la password per ogni sistema.
 
Utilizzando le chiavi SSH (una chiave pubblica e privata per la precisione), si può facilmente connettersi a un server o più server, senza dover inserire la password per ogni sistema.
  
'''Note''' È possibile impostare le chiavi senza password, tuttavia questo approccio non è raccomandabile, dato che se qualcuno scopre le chiavi le potrebbe utilizzare. Questa guida descrive come configurare un sistema in modo che le passphrase vengono ricordate in modo sicuro.
+
'''Note''' È possibile impostare le chiavi senza password, tuttavia questo approccio non è raccomandabile, dato che se qualcuno scopre le chiavi le potrebbe utilizzare. Questa guida descrive come configurare un sistema in modo che le passphrase vengano ricordate in modo sicuro.
  
 
== Generare la chiavi SSH ==
 
== Generare la chiavi SSH ==
  
Se OpenSSH non è già installato sul sistema, provvedere ora con:
+
Se OpenSSH non è già installato sul sistema, provvedere con:
  
 
  # pacman -S openssh
 
  # pacman -S openssh
Line 28: Line 28:
 
  x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 mith@middleearth
 
  x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 mith@middleearth
  
Verrà chiesto di specificare un percorso (che si dovrebbe lasciare come di default), comunque è la frase il bit importante! Tralasceremo, in questa guida, le regole per una buona passphrase, dando per scontato che le si sappiano.
+
Verrà chiesto di specificare un percorso (che si dovrebbe lasciare come di default), comunque l'importante è la passphrase. Verranno tralasciate in questa guida, le regole per una buona passphrase, dando per scontato che le si conoscano.
  
Allora, cosa si ha appena fatto? Si ha generato una coppia di chiavi a 1024 bit di lunghezza (<code>-b 1024</code>) dsa pubblica/privata (<code>-t dsa</code>) con il comando <code>ssh-keygen</code>.
+
Ciò che si è appena ottenuto è una coppia di chiavi a 1024 bit di lunghezza (<code>-b 1024</code>) dsa pubblica/privata (<code>-t dsa</code>) con il comando <code> ssh-keygen</code>.
  
 
Se si desidera creare una coppia di chiavi RSA invece di dsa, usare <code>-t rsa</code> (non specificare la lunghezza della chiave "-b" come lunghezza predefinita, per rsa il default equivale a 2048, ed è sufficiente).
 
Se si desidera creare una coppia di chiavi RSA invece di dsa, usare <code>-t rsa</code> (non specificare la lunghezza della chiave "-b" come lunghezza predefinita, per rsa il default equivale a 2048, ed è sufficiente).
Line 36: Line 36:
 
== Copiare le chiavi al server remoto ==  
 
== Copiare le chiavi al server remoto ==  
  
Ora che si sono generatoe le chiavi, bisogna copiarle al server remoto. Per impostazione predefinita di OpenSSH, la chiave pubblica deve essere concatenata in <code>~/.ssh/authorized_keys</code>.
+
Ora che si sono generate le chiavi, bisogna copiarle al server remoto. Per impostazione predefinita di OpenSSH, la chiave pubblica deve essere concatenata in <code>~/.ssh/authorized_keys</code>.
  
 
  $ scp ~/.ssh/id_dsa.pub mith@metawire.org:
 
  $ scp ~/.ssh/id_dsa.pub mith@metawire.org:
Line 42: Line 42:
 
Questa operazione copia la chiave pubblica (<code>id_dsa.pub</code>) al server remoto tramite scp (notare il '''<code>:</code>''' alla fine dell'indirizzo del server). Il file finisce nella cartella home, ma è comunque possibile specificare un altro percorso.
 
Questa operazione copia la chiave pubblica (<code>id_dsa.pub</code>) al server remoto tramite scp (notare il '''<code>:</code>''' alla fine dell'indirizzo del server). Il file finisce nella cartella home, ma è comunque possibile specificare un altro percorso.
  
A continuazione, sul server remoto, è necessario creare la cartella ~/.ssh se non esiste, e concatenare il file chiave authorized_keys:
+
A continuazione, sul server remoto, è necessario creare la cartella ~/.ssh se non esiste, e concatenare il file chiave <code>authorized_keys</code>:
  
 
  $ ssh mith@metawire.org
 
  $ ssh mith@metawire.org
Line 51: Line 51:
 
  $ chmod 600 ~/.ssh/authorized_keys
 
  $ chmod 600 ~/.ssh/authorized_keys
  
Gli ultimi due comandi rimuovonon la chiave pubblica dal server (non necessaria adesso), e ne definisce i permessi corretti sul file authorized_keys.
+
Gli ultimi due comandi rimuovono la chiave pubblica dal server (non necessaria adesso), e ne definisce i permessi corretti sul file <code>authorized_keys</code>.
  
Se ora ci si disconnette dal server, e si tenta di riconnettersi, dovrebbe venire richiesta la passphrase della chiave:
+
Se ora ci si sconnette dal server, e si prova a ricollegarsi, dovrebbe venire richiesta la passphrase della chiave:
  
 
  $ ssh mith@metawire.org
 
  $ ssh mith@metawire.org
Line 60: Line 60:
 
Se non è possibile effettuare il login con la chiave, controllare i permessi sul file  <code>authorized_keys</code>.
 
Se non è possibile effettuare il login con la chiave, controllare i permessi sul file  <code>authorized_keys</code>.
  
Controllate anche i permessi della cartella <code>~/.ssh</code>, che non dovrebbe avere permessi di scrittura per "group" e "other". Eseguire il seguente comando per disattivare i permessi di scrittura di "group" e "other" alla cartella <code>~/.ssh</code>:
+
Controllare anche i permessi della cartella <code>~/.ssh</code>, che non dovrebbe avere permessi di scrittura per "group" e "other". Eseguire il seguente comando per disattivare i permessi di scrittura di "group" e "other" alla cartella <code>~/.ssh</code>:
 
  $ chmod go-w ~/.ssh
 
  $ chmod go-w ~/.ssh
  
 
= Memorizzare le passphrase delle chiavi =
 
= Memorizzare le passphrase delle chiavi =
  
Ora si può accedere ai propri server utilizzando una chiave invece di una password, ma è realmente più facile, dal momento che c'è ancora bisogno di immettere la key passphrase? La risposta è quella di utilizzare un agente SSH, un programma che ricorda la passphrase delle vostre chiavi! C'è un certo numero di diversi strumenti a disposizione, quindi fare una ricerca e scegliere quella che sembra più adatto alle proprie esigenze.
+
Ora si può accedere ai propri server utilizzando una chiave invece di una password, ma è realmente più facile, dal momento che c'è ancora bisogno di immettere la key passphrase? La risposta è quella di utilizzare un agente SSH, un programma che ricorda la passphrase delle proprie chiavi! C'è un certo numero di strumenti a disposizione, quindi fare una ricerca e scegliere quello che sembra più adatto alle proprie esigenze.
  
 
== ssh-agent ==
 
== ssh-agent ==
Line 76: Line 76:
 
  echo Agent pid 2148;
 
  echo Agent pid 2148;
  
Quando si esegue <code>ssh-agent</code> verranno stampate quali variabili d'ambiente verranno usate... Per usufruire di queste variabili eseguire il comando tramite <code>eval</code>.
+
Quando si esegue <code>ssh-agent</code> verranno stampate le variabili d'ambiente che si stanno per utilizzare. Per usufruire di queste variabili eseguire il comando tramite <code>eval</code>.
  
 
  $ eval `ssh-agent`
 
  $ eval `ssh-agent`
Line 87: Line 87:
 
Notare le differenti virgolette, alcune sono apici, altre sono virgolette arricciate!
 
Notare le differenti virgolette, alcune sono apici, altre sono virgolette arricciate!
  
Ora che il <code>ssh-agent</code> è in esecuzione, bisognerà istruirlo sull'esistenza di una chiave privata e sulla sua ubicazione.
+
Ora che <code>ssh-agent</code> è in esecuzione, bisognerà istruirlo sull'esistenza di una chiave privata e relativa ubicazione.
  
 
  $ ssh-add ~/.ssh/id_dsa
 
  $ ssh-add ~/.ssh/id_dsa
Line 95: Line 95:
 
Viene richiesta la passphrase, la si immette, ed è finito. Ora si può accedere al server remoto senza dover inserire la password, mentre la chiave privata viene protetta da password.
 
Viene richiesta la passphrase, la si immette, ed è finito. Ora si può accedere al server remoto senza dover inserire la password, mentre la chiave privata viene protetta da password.
  
L'unico aspetto negativo è che una nuova istanza di <code>ssh-agent</code> deve essere creata per ogni nuova console (shell) che si apre, il che significa che è necessario eseguire <code>ssh-add</code> ogni volta su ogni console. C'è una soluzione a questo inconveniente con un programma, o meglio uno script chiamato [http://www.gentoo.org/proj/en/keychain/index.xml keychain] che è illustrato nella sezione successiva.
+
L'unico aspetto negativo è che una nuova istanza di <code>ssh-agent</code> deve essere creata per ogni nuova console (shell) aperta, il che significa che è necessario eseguire <code>ssh-add</code> ogni volta su ogni console. C'è una soluzione a questo inconveniente con un programma, o meglio uno script chiamato [http://www.gentoo.org/proj/en/keychain/index.xml keychain] che è illustrato nella sezione successiva.
  
 
=== Uso di GnuPG Agent ===
 
=== Uso di GnuPG Agent ===
Line 101: Line 101:
 
L'agente [[GnuPG]], distribuito con il pacchetto '''gnupg2''', ha un agente di emulazione OpenSSH. Se si utilizza GPG si potrebbe considerare l'utilizzo di questo agente per la salvaguardia delle proprie chiavi. Altrimenti si potrebbe gradire la voce di dialogo PIN che fornisce una propria gestione passphrase, e che è una cosa differente dal portachiavi.
 
L'agente [[GnuPG]], distribuito con il pacchetto '''gnupg2''', ha un agente di emulazione OpenSSH. Se si utilizza GPG si potrebbe considerare l'utilizzo di questo agente per la salvaguardia delle proprie chiavi. Altrimenti si potrebbe gradire la voce di dialogo PIN che fornisce una propria gestione passphrase, e che è una cosa differente dal portachiavi.
  
Per iniziare a utilizzare l'agente GPG per le proprie chiavi SSH si deve prima iniziare la gpg-agent con l'opzione ''--enable-ssh-support''. Lo si può fare dal proprio ''~/.xinitrc'' o dal file di profilo della shell per avviarlo con la sessione. Codice di esempio per iniziare gpg-agent:
+
Per iniziare a utilizzare l'agente GPG per le proprie chiavi SSH si deve prima iniziare la gpg-agent con l'opzione ''--enable-ssh-support''. Lo si può fare dal proprio ''~/.xinitrc'' o dal file di profilo della shell per avviarlo con la sessione. Un esempio di codice per iniziare gpg-agent:
  
 
   # Start the GnuPG agent and enable OpenSSH agent emulation
 
   # Start the GnuPG agent and enable OpenSSH agent emulation
Line 119: Line 119:
 
   default-cache-ttl-ssh 10800
 
   default-cache-ttl-ssh 10800
  
Altre impostazioni utili per questo file sono il programma di inserimento del PIN (GTK, QT o versione ncurses), keyboard grabbing, ed altri ancora...:
+
Altre impostazioni utili per questo file sono il programma di inserimento del PIN (GTK, QT o versione ncurses), keyboard grabbing, eccetera:
  
 
   # Environment file
 
   # Environment file
Line 133: Line 133:
  
 
=== Utilizzo di portachiavi ===
 
=== Utilizzo di portachiavi ===
[http://www.gentoo.org/proj/en/keychain/index.xml Keychain] gestisce una o più chiavi private specifiche. Quando inizializzato richiederà la passphrase per la chiave (o chiavi) privata e la memorizzerà. In questo modo la chiave privata sarà protetta dalla password, ma non si dovrà inserire ripetutamente la password.
+
[http://www.gentoo.org/proj/en/keychain/index.xml Keychain] gestisce una o più chiavi private specifiche. Quando avviato richiederà la passphrase per la chiave (o chiavi) privata e la memorizzerà. In questo modo la chiave privata sarà protetta dalla password, ma non la si dovrà inserire ripetutamente.
  
 
Installare keychain dal repository extra:
 
Installare keychain dal repository extra:
Line 148: Line 148:
 
  <nowiki>[[ -f $HOME/.keychain/$HOSTNAME-sh ]]</nowiki> && source $HOME/.keychain/$HOSTNAME-sh
 
  <nowiki>[[ -f $HOME/.keychain/$HOSTNAME-sh ]]</nowiki> && source $HOME/.keychain/$HOSTNAME-sh
  
{{Tip| Se si desidera una maggiore sicurezza sostituire -Q con --clear ma sarà meno conveniente.}}
+
{{Tip| Se si desidera una maggiore sicurezza sostituire -Q con --clear, anche se non sarà molto conveniente.}}
  
In caso, sostituire {{Filename|~/.ssh/id_dsa}} con {{Filename|~/.ssh/id_rsa}}.  Per coloro che usano una shell non-compatibile con bash, vedere {{Filename|keychain --help}} o {{Filename|man keychain}} per maggiori informazioni sulle altre shell.
+
In caso, sostituire {{Filename|~/.ssh/id_dsa}} con {{Filename|~/.ssh/id_rsa}}.  Per coloro che usano una shell non compatibile con bash, vedere {{Filename|keychain --help}} o {{Filename|man keychain}} per maggiori informazioni sulle altre shell.
  
 
Chiudere la shell ed avviarla di nuovo. Dovrebbe apparire il portachiavi e se è il primo avvio realizzato, verrà richiesta la passphrase della chiave privata specifica.
 
Chiudere la shell ed avviarla di nuovo. Dovrebbe apparire il portachiavi e se è il primo avvio realizzato, verrà richiesta la passphrase della chiave privata specifica.
Line 156: Line 156:
 
=== Utilizzo di ssh-agent e ssh-x11-askpass ===
 
=== Utilizzo di ssh-agent e ssh-x11-askpass ===
  
È necessario avviare ssh-agent ogni volta che si avvia una nuova sessione di X. Ssh-agent sarà chiuso quando termina la sessione X.
+
È necessario avviare ssh-agent ogni volta che si avvia una nuova sessione di X. Ssh-agent verrà spento al termine della sessione X.
  
 
Installare <code>x11-ssh-askpass</code>, che chiederà la password ogni volta che si apre un nuova sessione di X:
 
Installare <code>x11-ssh-askpass</code>, che chiederà la password ogni volta che si apre un nuova sessione di X:
Line 170: Line 170:
 
== GNOME Keyring ==
 
== GNOME Keyring ==
  
Se si utilizza il desktop [[GNOME]], lo strumento [http://live.gnome.org/GnomeKeyring GNOME Keyring] cpuò essere usato come agente SSH. La configurazione è semplice, per prima cosa installare:
+
Se si utilizza il desktop [[GNOME]], lo strumento [http://live.gnome.org/GnomeKeyring GNOME Keyring] può essere usato come agente SSH. La configurazione è semplice, per prima cosa installare:
  
 
  # pacman -S gnome-keyring
 
  # pacman -S gnome-keyring
Line 179: Line 179:
 
  Enter passphrase for /home/mith/.ssh/id_dsa:
 
  Enter passphrase for /home/mith/.ssh/id_dsa:
  
Ora, quando ci si connette ad un server, la chiave verrà rilevata e una finestra di dialogo richiederà la passphrase. C'è un'opzione per sbloccare la chiave automaticamente quando si effettua il login. Se si seleziona questa, non sarà necessario inserire la password di nuovo!
+
Quando ci si connette ad un server, la chiave verrà rilevata e una finestra di dialogo richiederà la passphrase. C'è un'opzione per sbloccare la chiave automaticamente quando si effettua il login. Se la si seleziona, non sarà necessario inserire la password di nuovo.
  
 
= PuTTY =
 
= PuTTY =
  
La procedura di cui sopra è un po più complicata quando si utilizza PuTTY su Windows, in quanto non è possibile utilizzare direttamente le chiavi generate da ssh-keygen. La chiave privata deve essere convertita utilizzando PuTTYgen, che si può trovare [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html qui]. La procedura è la seguente:
+
La procedura di cui sopra è un po' più complicata quando si utilizza PuTTY su Windows, in quanto non è possibile utilizzare direttamente le chiavi generate da ssh-keygen. La chiave privata deve essere convertita utilizzando PuTTYgen, che si può trovare [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html qui]. La procedura è la seguente:
  
 
# Generare un paio di chiavi criptate RSA a 1024 bit con ssh-keygen sul proprio computer con Linux (si può accedere con il proprio nome utente e password abituali usando PuTTY)
 
# Generare un paio di chiavi criptate RSA a 1024 bit con ssh-keygen sul proprio computer con Linux (si può accedere con il proprio nome utente e password abituali usando PuTTY)
Line 189: Line 189:
 
# Spostare la chiave privata sulla macchina con Windows
 
# Spostare la chiave privata sulla macchina con Windows
 
# Caricare la chiave privata con PuTTYgen e fare clic su ''Save private key''. Questo convertirà la chiave in modo che PuTTY la possa utilizzare.
 
# Caricare la chiave privata con PuTTYgen e fare clic su ''Save private key''. Questo convertirà la chiave in modo che PuTTY la possa utilizzare.
# Avviare PuTTY, spostarsi su ''SSH''->''Auth'' e trovare la chiave privata. Poi basta collegarsi alla macchina con Linux. Verrà richiesto di inserire il nome utente e password (se si è scelto di immetterne uno al momento di creazione delle chiavi).
+
# Avviare PuTTY, spostarsi su ''SSH''->''Auth'' e trovare la chiave privata. Poi basterà collegarsi alla macchina con Linux. Verrà richiesto di inserire il nome utente e password (se si è scelto di immetterne uno al momento di creazione delle chiavi).
  
 
Si noti che il procedimento inverso, cioè, generando la coppia di chiavi con PuTTYgen e convertendo la chiave pubblica con ssh-keygen, NON funziona.
 
Si noti che il procedimento inverso, cioè, generando la coppia di chiavi con PuTTYgen e convertendo la chiave pubblica con ssh-keygen, NON funziona.

Revision as of 22:39, 3 August 2010

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Cosa sono le chiavi SSH?

Utilizzando le chiavi SSH (una chiave pubblica e privata per la precisione), si può facilmente connettersi a un server o più server, senza dover inserire la password per ogni sistema.

Note È possibile impostare le chiavi senza password, tuttavia questo approccio non è raccomandabile, dato che se qualcuno scopre le chiavi le potrebbe utilizzare. Questa guida descrive come configurare un sistema in modo che le passphrase vengano ricordate in modo sicuro.

Generare la chiavi SSH

Se OpenSSH non è già installato sul sistema, provvedere con:

# pacman -S openssh

Le chiavi possono essere generate eseguendo il comando ssh-keygen come utente:

$ ssh-keygen -b 1024 -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mith/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mith/.ssh/id_dsa.
Your public key has been saved in /home/mith/.ssh/id_dsa.pub.
The key fingerprint is:
x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 mith@middleearth

Verrà chiesto di specificare un percorso (che si dovrebbe lasciare come di default), comunque l'importante è la passphrase. Verranno tralasciate in questa guida, le regole per una buona passphrase, dando per scontato che le si conoscano.

Ciò che si è appena ottenuto è una coppia di chiavi a 1024 bit di lunghezza (-b 1024) dsa pubblica/privata (-t dsa) con il comando ssh-keygen.

Se si desidera creare una coppia di chiavi RSA invece di dsa, usare -t rsa (non specificare la lunghezza della chiave "-b" come lunghezza predefinita, per rsa il default equivale a 2048, ed è sufficiente).

Copiare le chiavi al server remoto

Ora che si sono generate le chiavi, bisogna copiarle al server remoto. Per impostazione predefinita di OpenSSH, la chiave pubblica deve essere concatenata in ~/.ssh/authorized_keys.

$ scp ~/.ssh/id_dsa.pub mith@metawire.org:

Questa operazione copia la chiave pubblica (id_dsa.pub) al server remoto tramite scp (notare il : alla fine dell'indirizzo del server). Il file finisce nella cartella home, ma è comunque possibile specificare un altro percorso.

A continuazione, sul server remoto, è necessario creare la cartella ~/.ssh se non esiste, e concatenare il file chiave authorized_keys:

$ ssh mith@metawire.org
mith@metawire.org's password:
$ mkdir ~/.ssh
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_dsa.pub
$ chmod 600 ~/.ssh/authorized_keys

Gli ultimi due comandi rimuovono la chiave pubblica dal server (non necessaria adesso), e ne definisce i permessi corretti sul file authorized_keys.

Se ora ci si sconnette dal server, e si prova a ricollegarsi, dovrebbe venire richiesta la passphrase della chiave:

$ ssh mith@metawire.org
Enter passphrase for key '/home/mith/.ssh/id_dsa':

Se non è possibile effettuare il login con la chiave, controllare i permessi sul file authorized_keys.

Controllare anche i permessi della cartella ~/.ssh, che non dovrebbe avere permessi di scrittura per "group" e "other". Eseguire il seguente comando per disattivare i permessi di scrittura di "group" e "other" alla cartella ~/.ssh:

$ chmod go-w ~/.ssh

Memorizzare le passphrase delle chiavi

Ora si può accedere ai propri server utilizzando una chiave invece di una password, ma è realmente più facile, dal momento che c'è ancora bisogno di immettere la key passphrase? La risposta è quella di utilizzare un agente SSH, un programma che ricorda la passphrase delle proprie chiavi! C'è un certo numero di strumenti a disposizione, quindi fare una ricerca e scegliere quello che sembra più adatto alle proprie esigenze.

ssh-agent

ssh-agent è l'agente predefinito fornito da OpenSSH.

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2148; export SSH_AGENT_PID;
echo Agent pid 2148;

Quando si esegue ssh-agent verranno stampate le variabili d'ambiente che si stanno per utilizzare. Per usufruire di queste variabili eseguire il comando tramite eval.

$ eval `ssh-agent`
Agent pid 2157

È possibile aggiungere il seguente comando al proprio .bashrc in modo che venga eseguito ogni volta che si crea una nuova shell:

$ echo 'eval `ssh-agent`' >> ~/.bashrc

Notare le differenti virgolette, alcune sono apici, altre sono virgolette arricciate!

Ora che ssh-agent è in esecuzione, bisognerà istruirlo sull'esistenza di una chiave privata e relativa ubicazione.

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)

Viene richiesta la passphrase, la si immette, ed è finito. Ora si può accedere al server remoto senza dover inserire la password, mentre la chiave privata viene protetta da password.

L'unico aspetto negativo è che una nuova istanza di ssh-agent deve essere creata per ogni nuova console (shell) aperta, il che significa che è necessario eseguire ssh-add ogni volta su ogni console. C'è una soluzione a questo inconveniente con un programma, o meglio uno script chiamato keychain che è illustrato nella sezione successiva.

Uso di GnuPG Agent

L'agente GnuPG, distribuito con il pacchetto gnupg2, ha un agente di emulazione OpenSSH. Se si utilizza GPG si potrebbe considerare l'utilizzo di questo agente per la salvaguardia delle proprie chiavi. Altrimenti si potrebbe gradire la voce di dialogo PIN che fornisce una propria gestione passphrase, e che è una cosa differente dal portachiavi.

Per iniziare a utilizzare l'agente GPG per le proprie chiavi SSH si deve prima iniziare la gpg-agent con l'opzione --enable-ssh-support. Lo si può fare dal proprio ~/.xinitrc o dal file di profilo della shell per avviarlo con la sessione. Un esempio di codice per iniziare gpg-agent:

 # Start the GnuPG agent and enable OpenSSH agent emulation
 gnupginf="${HOME}/.gnupg/gpg-agent.info"
 
 if ( pgrep -u "${USER}" gpg-agent ); then
     eval `cat $gnupginf`
     eval `cut -d= -f1 $gnupginf | xargs echo export`
 else
     eval `gpg-agent --enable-ssh-support --daemon`
 fi

Una volta che gpg-agent è in esecuzione si può usare ssh-add per approvare le chiavi, proprio come con un ssh-agent semplice. L'elenco delle chiavi approvate è memorizzato nel file ~/.gnupg/sshcontrol. Una volta che la chiave è approvata, si aprirà una finestra di dialogo per l'immissione del PIN ogni volta che è necessaria la password. È possibile controllare le passphrase nel file ~/.gnupg/gpg-agent.conf. L'esempio seguente mantiene la cache delle chiavi di gpg-agent per 3 ore:

 # Cache settings
 default-cache-ttl 10800
 default-cache-ttl-ssh 10800

Altre impostazioni utili per questo file sono il programma di inserimento del PIN (GTK, QT o versione ncurses), keyboard grabbing, eccetera:

 # Environment file
 write-env-file /home/username/.gnupg/gpg-agent.info
 
 # Keyboard control
 #no-grab
   
 # PIN entry program
 #pinentry-program /usr/bin/pinentry-curses
 #pinentry-program /usr/bin/pinentry-qt4
 pinentry-program /usr/bin/pinentry-gtk-2

Utilizzo di portachiavi

Keychain gestisce una o più chiavi private specifiche. Quando avviato richiederà la passphrase per la chiave (o chiavi) privata e la memorizzerà. In questo modo la chiave privata sarà protetta dalla password, ma non la si dovrà inserire ripetutamente.

Installare keychain dal repository extra:

# pacman -S keychain

Aggiungere a Template:Filename o Template:Filename il seguente:

eval `keychain --eval --nogui -Q -q id_rsa`

Oppure

/usr/bin/keychain -Q -q --nogui ~/.ssh/id_dsa
[[ -f $HOME/.keychain/$HOSTNAME-sh ]] && source $HOME/.keychain/$HOSTNAME-sh
Tip: Se si desidera una maggiore sicurezza sostituire -Q con --clear, anche se non sarà molto conveniente.

In caso, sostituire Template:Filename con Template:Filename. Per coloro che usano una shell non compatibile con bash, vedere Template:Filename o Template:Filename per maggiori informazioni sulle altre shell.

Chiudere la shell ed avviarla di nuovo. Dovrebbe apparire il portachiavi e se è il primo avvio realizzato, verrà richiesta la passphrase della chiave privata specifica.

Utilizzo di ssh-agent e ssh-x11-askpass

È necessario avviare ssh-agent ogni volta che si avvia una nuova sessione di X. Ssh-agent verrà spento al termine della sessione X.

Installare x11-ssh-askpass, che chiederà la password ogni volta che si apre un nuova sessione di X:

# pacman -S x11-ssh-askpass

Aggiungere le seguenti righe a ~/.xsession:

eval `/usr/bin/ssh-agent`
SSH_ASKPASS=/usr/lib/openssh/x11-ssh-askpass ssh-add < /dev/null
# then the end of the file with for example "exec dwm"

GNOME Keyring

Se si utilizza il desktop GNOME, lo strumento GNOME Keyring può essere usato come agente SSH. La configurazione è semplice, per prima cosa installare:

# pacman -S gnome-keyring

Poi si devono aggiungere le proprie chiavi SSH, ed inserire la parola chiave.

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/mith/.ssh/id_dsa:

Quando ci si connette ad un server, la chiave verrà rilevata e una finestra di dialogo richiederà la passphrase. C'è un'opzione per sbloccare la chiave automaticamente quando si effettua il login. Se la si seleziona, non sarà necessario inserire la password di nuovo.

PuTTY

La procedura di cui sopra è un po' più complicata quando si utilizza PuTTY su Windows, in quanto non è possibile utilizzare direttamente le chiavi generate da ssh-keygen. La chiave privata deve essere convertita utilizzando PuTTYgen, che si può trovare qui. La procedura è la seguente:

  1. Generare un paio di chiavi criptate RSA a 1024 bit con ssh-keygen sul proprio computer con Linux (si può accedere con il proprio nome utente e password abituali usando PuTTY)
  2. Aggiungere la chiave pubblica al file ~/.ssh/authorized_keys
  3. Spostare la chiave privata sulla macchina con Windows
  4. Caricare la chiave privata con PuTTYgen e fare clic su Save private key. Questo convertirà la chiave in modo che PuTTY la possa utilizzare.
  5. Avviare PuTTY, spostarsi su SSH->Auth e trovare la chiave privata. Poi basterà collegarsi alla macchina con Linux. Verrà richiesto di inserire il nome utente e password (se si è scelto di immetterne uno al momento di creazione delle chiavi).

Si noti che il procedimento inverso, cioè, generando la coppia di chiavi con PuTTYgen e convertendo la chiave pubblica con ssh-keygen, NON funziona.

Link utili / Informazioni