Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

en:documentation:tutorials:ssh:clef_agent_ssh [2018/05/28 16:07]
cpetit [Étape 3 : Finir la génération du jeu de clefs]
en:documentation:tutorials:ssh:clef_agent_ssh [2020/08/25 17:58]
Ligne 1: Ligne 1:
-<WRAP center round todo 60%> 
-Translation in progress... 
-</​WRAP>​ 
  
-====== Use SSK keys and SSH agent ====== 
- 
-Most oftenly, the SSH client is used with a pair ''​[user + password]''​ to connect to a remote machine.ne dis­tante. ​ 
- 
-However, it is possible to use keys  
-(authentication via  private/​public key pair, \\ see [[https://​en.wikipedia.org/​wiki/​Public-key_cryptography|here]]) ​ 
-to connect to a remote server. \\ Moreover, using an SSH agent, you can avoid typing passwords. 
- 
-===== Generate a set of key ===== 
- 
-To generate your personal key set, use the same commands as the one to generate the [[en:​documentation:​tutorials:​ssh:​first_connection|PSMN internal key ]]  .  
- 
-<note important>​**IMPORTANT STEP ADDED** : define a passphrase to lock your private key.</​note>​ 
- 
-For Windows users, [[documentation:​tutorials:​ssh:​putty|relate to the PuTTY documentation]]. 
- 
-For Linux, BSD et MacOS X, here are the main steps to follow: 
- 
-==== Step 1 : Start generating a set of keys ==== 
- 
-In a ''​Terminal''​ type the following commands: 
- 
-<code bash> 
-user@host:​~$ ssh-keygen 
-Generating public/​private rsa key pair. 
-Enter file in which to save the key (/​home/​user/​.ssh/​id_rsa):​ 
-            <Appuyer la touche Enter> 
-Created directory '/​home/​user/​.ssh'​. 
-Enter passphrase (empty for no passphrase):​ 
-</​code>​ 
- 
-==== Step 2 : Choose a good/strong passphrase ==== 
- 
-The passphrase is important, it locks your private key. A good passphrase must include ** at least 15 characters **. 
- 
-This is a  **bad passphrase** : 
-<​code>​ 
-toto 
-</​code>​ 
- 
-If the  passphrase is too short or too poor, the program will answer: 
-<code bash> 
-Enter same passphrase again: ​ 
-passphrase too short: have 4 bytes, need > 4 
-Saving the key failed: /​home/​user/​.ssh/​id_rsa. 
-</​code>​ 
- 
-**failed...** 
- 
-This is  a **good passphrase** : 
-<​code>​ 
-V0ici 1 ex3mple de passphrase c0mpl1quée,​ v0ire, alambiquée. 
-</​code>​ 
- 
-This is also an example of a **good passphrase** : 
-<​code>​ 
-A bottle of "​Glenfîddich Rare Collection 1937" cost 15 000 euros VAT. Minimum... 
-</​code>​ 
- 
-==== Step 3:  Finish the keyset generation ==== 
- 
-Finally ''​ssh-keygen''​ says: 
-<code bash> 
-Enter same passphrase again: ​ 
-Your identification has been saved in /​home/​user/​.ssh/​id_rsa. 
-Your public key has been saved in /​home/​user/​.ssh/​id_rsa.pub. 
-</​code>​ 
- 
-A fingerprint is also generated (see below): 
- 
-<code bash> 
-The key fingerprint is: 
-7a:​ec:​b2:​1c:​90:​f5:​2f:​77:​c5:​bc:​36:​8b:​0f:​23:​2e:​76 user@host 
-The key's randomart image is: 
-+--[ RSA 2048]----+ 
-|                 | 
-|                 | 
-|      .          | 
-|     o .     ​o ​  | 
-|    o   ​S ​    ​+ ​ | 
-|     . o .   . . | 
-|      o + + + +  | 
-|     ​..+o+Eo = o | 
-|      o+.o. ..o  | 
-+-----------------+ 
-</​code>​ 
- 
-==== Étape 4 : Sauvegarder le jeu de clefs ==== 
- 
-Vous pouvez copier/​coller l'​empreinte de vérification (fingerprint + image) dans un fichier ''​~/​.ssh/​fingerprint''​. ​ 
- 
-**Sauvegardez** votre clef privée (''​id_rsa''​),​ le fichier d'​empreinte (''​fingerprint''​) et la clef publique (''​id_rsa.pub''​),​ dans un endroit sûr et personnel (une clef USB, par exemple). 
- 
-===== Charger l'​agent-ssh ===== 
- 
-==== Linux / BSD ==== 
- 
-Il existe tout un tas de méthodes : 
- 
-  * Utiliser les programmes ''​ssh-askpass''​ ou ''​ssh-askpass-gnome''​ de votre distribution favorite... 
-  * charger l'​agent dans un script : 
- 
-<code bash> 
-eval `ssh-agent` 
-ssh-add 
-</​code>​ 
- 
-  * Installer et utiliser [[http://​www.funtoo.org/​wiki/​Keychain|keychain]] (outil CLI, prendre l'​archive Release). 
- 
-Vous pouvez utiliser un script (dans votre ''​~/​.bashrc''​) pour le démarrer, et l'​utiliser automatiquement dans vos terminaux : 
-<code bash> 
-# add key(s) to agent 
-eval `keychain --eval --agents ssh id_rsa` 
-</​code>​ 
- 
-==== MacOS X ==== 
- 
-Sur MacOS X, il existe aussi différentes méthodes : 
- 
-  * Installer et utiliser [[http://​www.funtoo.org/​wiki/​Keychain|keychain]] (outil CLI, prendre le package pour MacOS X). 
- 
-Vous pouvez utiliser un script (dans votre ''​~/​.bashrc''​) pour le démarrer, et l'​utiliser automatiquement dans Terminal : 
-<code bash> 
-# add key(s) to agent 
-eval `keychain --eval --agents ssh id_rsa` 
-</​code>​ 
- 
-  * Si vous utilisez MacOSX Keychain, ajoutez l'​option ''​--inherit any''​ : 
-<code bash> 
-# add key(s) to agent 
-eval `keychain --eval --agents ssh --inherit any id_rsa` 
-</​code>​ 
- 
-<note important>​Si,​ à chaque ouverture de Terminal, keychain demande votre passphrase, enlevez l'​option ''​--inherit any''</​note>​ 
- 
-  * Installer et utiliser [[http://​sshkeychain.sourceforge.net/​|SSHKeyChain]] (outil graphique) 
- 
- 
-<note tip>Pour bénéficier de "​l'​export X", il faut aussi démarrer le serveur X sur le Mac, voir [[documentation:​tutorials:​ssh:​clef_agent_ssh#​export_x_pour_macos_x|X11 et MacOS X]]</​note>​ 
- 
- 
- 
-==== Windows ==== 
- 
-Sur Windows, il faut utiliser le logiciel PuTTY, dont l'​usage est expliqué [[documentation:​tutorials:​ssh:​putty|sur cette page]]. 
- 
-===== Diffuser la clef publique ===== 
- 
-Pour que le login automatique (ie: sans mot de passe, **mais avec passphrase**) fonctionne, votre clef publique (id_rsa.pub) doit se trouver sur tous les serveurs cibles, dans le fichier ''​~/​.ssh/​authorized_keys''​. 
- 
-  * Pour le PSMN, on peut simplement faire comme ceci (le ''/​home''​ est partagé entre tous les serveurs et noeuds de calculs) : 
- 
-<code bash> 
-scp ~/​.ssh/​id_rsa.pub votrelogin@allo-psmn:​~/​.ssh/​authorized_keys 
- 
-  votrelogin@allo-psmn'​s password: 
-  id_rsa.pub ​                   100%  9KB 9.3KB/​s ​  00:00 
-</​code>​ 
- 
-<note important>​Cela **écrase** le fichier ''​~/​.ssh/​authorized_keys''​ existant. Pour **ajouter** votre clef publique au fichier ''​~/​.ssh/​authorized_keys''​ existant, utilisez les commandes suivantes :</​note>​ 
- 
-<code bash> 
-scp ~/​.ssh/​id_rsa.pub votrelogin@allo-psmn:​~/​.ssh/​id_rsa.pub 
-  votrelogin@allo-psmn'​s password: 
-  id_rsa.pub ​                   100%  9KB 9.3KB/​s ​  00:00 
-</​code>​ 
- 
-<code bash> 
-ssh votrelogin@allo-psmn 
-  votrelogin@allo-psmn'​s password: 
- 
-> cat .ssh/​id_rsa.pub >> .ssh/​authorized_keys 
-> exit 
-</​code>​ 
- 
-Si vous avez bien chargé votre agent-ssh, vous pouvez maintenant vous connecter sur ''​allo-psmn'',​ sans fournir votre mot de passe : 
- 
-<code bash> 
-user@host:​~$ ssh votrelogin@allo-psmn.ens-lyon.fr 
-</​code>​ 
-(votrelogin correspond à votre login au PSMN) 
- 
-===== Exemples et Cas particuliers ===== 
- 
-==== Exemple de configuration pour Linux et BSD==== 
- 
-On peut automatiser les étapes de la connexion en utilisant le fichier ''​config''​ de SSH sur votre poste de travail. En voici un exemple : 
- 
-  * ''​~/​.ssh/​config''​ **pour Linux ou BSD** 
- 
-<code bash config> 
-Host * 
-  ServerAliveInterval 60 
-  ForwardX11Timeout 1d 
-  TCPKeepAlive yes 
-  ForwardAgent yes 
-  ForwardX11 yes         # pour Linux 
-#  ForwardX11Trusted yes # pour MacOSX 
-  Compression yes 
-  StrictHostKeyChecking no 
-  HashKnownHosts no 
- 
-### 
-# passerelle interne 
-Host allo-psmn 
-  User <login PSMN> 
-  HostName allo-psmn.psmn.ens-lyon.fr 
- 
-# connexion à x5650comp1 depuis l'​interieur de l'ENS 
-Host comp1 
-  User <login PSMN> 
-  Hostname x5650comp1 
-  ProxyCommand ssh <login PSMN>​@allo-psmn netcat -w1 %h %p 
- 
-# connexion à e5-2670comp2 depuis l'​interieur de l'ENS 
-Host comp2 
-  User <login PSMN> 
-  Hostname e5-2670comp2 
-  ProxyCommand ssh <login PSMN>​@allo-psmn netcat -w1 %h %p 
- 
-### 
-# passerelle externe 
-Host allo-externe 
-  User <login PSMN> 
-  ProxyCommand ssh <login PSMN>​@ssh.psmn.ens-lyon.fr tcpconnect allo-psmn %p 
-#  User <login ENS> 
-#  ProxyCommand ssh <login ENS>​@ssh.ens-lyon.fr tcpconnect allo-psmn %p 
- 
-# connexion à x5650comp1 depuis l'​exterieur de l'ENS 
-Host comp1-ext 
-  User <login PSMN> 
-  HostName x5650comp1 
-  ProxyCommand ssh <login PSMN>​@allo-externe netcat -w1 %h %p 
- 
-# connexion à e5-2670comp2 depuis l'​exterieur de l'ENS 
-Host comp2-ext 
-  User <login PSMN> 
-  Hostname e5-2670comp2 
-  ProxyCommand ssh <login PSMN>​@allo-externe netcat -w1 %h %p 
- 
-</​code>​ 
- 
-Bien évidemment,​ il faut remplacer ''<​login PSMN>''​ par votre login du PSMN, et ''<​login ENS>''​ par votre login de l'ENS. ''​netcat -w1''​ peut être remplacé par ''​tcpconnect''​. 
- 
-La liste des serveurs de connexion du PSMN est disponible [[documentation:​clusters:​services#​serveurs_de_compilation|sur cette page]]. 
- 
-Ce fichier contient déjà des rebonds. Pour plus d'​explication,​ la documentation sur les rebonds et leur automatisation est disponible [[documentation:​tutorials:​ssh:​multihop_ssh|sur cette page]]. 
- 
-==== Exemple de configuration pour MacOS X ==== 
- 
-Sur MacOS X, il vaut mieux utiliser l'​option ''​-Y''​ au lieu de ''​-X''​ (ou ''​ForwardX11Trusted yes''​ au lieu de ''​ForwardX11 yes''​ dans votre fichier ''​~/​.ssh/​config''​). En voici un exemple : 
- 
-  * ''​~/​.ssh/​config''​ **pour MacOS X** 
- 
-<code bash config> 
-Host * 
-  ServerAliveInterval 60 
-  ForwardX11Timeout 1d 
-  TCPKeepAlive yes 
-  ForwardAgent yes 
-#  ForwardX11 yes       # pour Linux 
-  ForwardX11Trusted yes # pour MacOSX 
-  Compression yes 
-  StrictHostKeyChecking no 
-  HashKnownHosts no 
- 
-### 
-# passerelle interne 
-Host allo-psmn 
-  User <login PSMN> 
-  HostName allo-psmn.psmn.ens-lyon.fr 
- 
-# connexion à x5650comp1 depuis l'​interieur de l'ENS 
-Host comp1 
-  User <login PSMN> 
-  Hostname x5650comp1 
-  ProxyCommand ssh <login PSMN>​@allo-psmn netcat -w1 %h %p 
- 
-# connexion à e5-2670comp2 depuis l'​interieur de l'ENS 
-Host comp2 
-  User <login PSMN> 
-  Hostname e5-2670comp2 
-  ProxyCommand ssh <login PSMN>​@allo-psmn netcat -w1 %h %p 
- 
-### 
-# passerelle externe 
-Host allo-externe 
-  User <login PSMN> 
-  #HostName allo-psmn 
-  ProxyCommand ssh <login PSMN>​@ssh.psmn.ens-lyon.fr tcpconnect allo-psmn %p 
- 
-# connexion à x5650comp1 depuis l'​exterieur de l'ENS 
-Host comp1-ext 
-  User <login PSMN> 
-  HostName x5650comp1 
-  ProxyCommand ssh <login PSMN>​@allo-externe netcat -w1 %h %p 
- 
-# connexion à e5-2670comp2 depuis l'​exterieur de l'ENS 
-Host comp2-ext 
-  User <login PSMN> 
-  Hostname e5-2670comp2 
-  ProxyCommand ssh <login PSMN>​@allo-externe netcat -w1 %h %p 
- 
-</​code>​ 
- 
-Bien évidemment,​ il faut remplacer ''<​login PSMN>''​ par votre login au PSMN. ''​netcat -w1''​ peut être remplacé par ''​tcpconnect''​. 
- 
-La liste des serveurs de connexion du PSMN est disponible [[documentation:​clusters:​services#​serveurs_de_compilation|sur cette page]] 
- 
-Ce fichier contient déjà des rebonds. Pour plus d'​explication,​ la documentation sur les rebonds et leur automatisation est disponible [[documentation:​tutorials:​ssh:​multihop_ssh|sur cette page]]. 
- 
-==== export X pour MacOS X ==== 
- 
-Pour pouvoir utiliser "​l'​export X" sur un Mac, il faut démarrer le logiciel X11 (dans Applications/​Utilitaires,​ comme Terminal) avant d'​initier une connexion SSH. 
- 
-==== Rebonds et multiples rebonds ==== 
- 
-Pour plus d'​explication,​ la documentation sur les rebonds et leur automatisation est disponible [[documentation:​tutorials:​ssh:​multihop_ssh|sur cette page]]. 
en/documentation/tutorials/ssh/clef_agent_ssh.txt · Dernière modification: 2020/08/25 17:58 (modification externe)