Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
en:documentation:tutorials:ssh:clef_agent_ssh [2018/05/28 13:57] – [Étape 1 : Démarrer la génération d'un jeu de clefs] cpetiten:documentation:tutorials:ssh:clef_agent_ssh [2023/12/12 12:59] (Version actuelle) – supprimée ltaulell
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> 
- 
-==== Étape 2 : Choisir une bonne passphrase ==== 
- 
-La passphrase est importante, c'est elle qui verrouille votre clef privée. Une bonne passphrase doit comprendre **au moins 15 caractères** 
- 
-Ceci est une **mauvaise passphrase** : 
-<code> 
-toto 
-</code> 
- 
-Si la passphrase est trop courte, ou trop mauvaise, le programme va répondre : 
-<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...** 
- 
-Ceci est une **bonne passphrase** : 
-<code> 
-V0ici 1 ex3mple de passphrase c0mpl1quée, v0ire, alambiquée. 
-</code> 
- 
-Ceci est aussi une **bonne passphrase** : 
-<code> 
-Une bouteille de "Glenfîddich Rare Collection 1937" vaut 15 000 euros TTC. Minimum... 
-</code> 
- 
-==== Étape 3 : Finir la génération du jeu de clefs ==== 
- 
-Et ''ssh-keygen'' de répondre, pour finir : 
-<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> 
- 
-Une empreinte de vérification (fingerprint) est également générée (voir ci-dessous) : 
- 
-<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 .   . . | 
-|      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/  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/  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.1527515846.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)