B-annexe-configuration-ssh.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="generator" content="pandoc" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  7. <title>Configuration SSH</title>
  8. <style type="text/css">
  9. code{white-space: pre-wrap;}
  10. span.smallcaps{font-variant: small-caps;}
  11. span.underline{text-decoration: underline;}
  12. div.column{display: inline-block; vertical-align: top; width: 50%;}
  13. </style>
  14. <style type="text/css">
  15. a.sourceLine { display: inline-block; line-height: 1.25; }
  16. a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
  17. a.sourceLine:empty { height: 1.2em; position: absolute; }
  18. .sourceCode { overflow: visible; }
  19. code.sourceCode { white-space: pre; position: relative; }
  20. div.sourceCode { margin: 1em 0; }
  21. pre.sourceCode { margin: 0; }
  22. @media screen {
  23. div.sourceCode { overflow: auto; }
  24. }
  25. @media print {
  26. code.sourceCode { white-space: pre-wrap; }
  27. a.sourceLine { text-indent: -1em; padding-left: 1em; }
  28. }
  29. pre.numberSource a.sourceLine
  30. { position: relative; }
  31. pre.numberSource a.sourceLine:empty
  32. { position: absolute; }
  33. pre.numberSource a.sourceLine::before
  34. { content: attr(data-line-number);
  35. position: absolute; left: -5em; text-align: right; vertical-align: baseline;
  36. border: none; pointer-events: all;
  37. -webkit-touch-callout: none; -webkit-user-select: none;
  38. -khtml-user-select: none; -moz-user-select: none;
  39. -ms-user-select: none; user-select: none;
  40. padding: 0 4px; width: 4em;
  41. color: #aaaaaa;
  42. }
  43. pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
  44. div.sourceCode
  45. { }
  46. @media screen {
  47. a.sourceLine::before { text-decoration: underline; }
  48. }
  49. code span.al { color: #ff0000; font-weight: bold; } /* Alert */
  50. code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
  51. code span.at { color: #7d9029; } /* Attribute */
  52. code span.bn { color: #40a070; } /* BaseN */
  53. code span.bu { } /* BuiltIn */
  54. code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
  55. code span.ch { color: #4070a0; } /* Char */
  56. code span.cn { color: #880000; } /* Constant */
  57. code span.co { color: #60a0b0; font-style: italic; } /* Comment */
  58. code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
  59. code span.do { color: #ba2121; font-style: italic; } /* Documentation */
  60. code span.dt { color: #902000; } /* DataType */
  61. code span.dv { color: #40a070; } /* DecVal */
  62. code span.er { color: #ff0000; font-weight: bold; } /* Error */
  63. code span.ex { } /* Extension */
  64. code span.fl { color: #40a070; } /* Float */
  65. code span.fu { color: #06287e; } /* Function */
  66. code span.im { } /* Import */
  67. code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
  68. code span.kw { color: #007020; font-weight: bold; } /* Keyword */
  69. code span.op { color: #666666; } /* Operator */
  70. code span.ot { color: #007020; } /* Other */
  71. code span.pp { color: #bc7a00; } /* Preprocessor */
  72. code span.sc { color: #4070a0; } /* SpecialChar */
  73. code span.ss { color: #bb6688; } /* SpecialString */
  74. code span.st { color: #4070a0; } /* String */
  75. code span.va { color: #19177c; } /* Variable */
  76. code span.vs { color: #4070a0; } /* VerbatimString */
  77. code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
  78. </style>
  79. <link rel="stylesheet" href="pandoc.css">
  80. <!--[if lt IE 9]>
  81. <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  82. <![endif]-->
  83. </head>
  84. <body>
  85. <div class="doctitle">Configuration SSH</div>
  86. <nav id="TOC">
  87. <ul>
  88. <li><a href="#configuration-de-connexion-ssh">Configuration de connexion ssh</a><ul>
  89. <li><a href="#introduction">Introduction</a></li>
  90. <li><a href="#création-dune-clef">Création d’une clef</a><ul>
  91. <li><a href="#git-bash">Git-bash</a></li>
  92. <li><a href="#putty">Putty</a></li>
  93. </ul></li>
  94. <li><a href="#installation-de-la-clef-publique">Installation de la clef publique</a></li>
  95. <li><a href="#connexion-au-serveur">Connexion au serveur</a><ul>
  96. <li><a href="#en-utilisant-putty">En utilisant Putty</a></li>
  97. <li><a href="#avec-git-bash">Avec git-bash</a></li>
  98. </ul></li>
  99. <li><a href="#configuration-de-lagent">Configuration de l’agent</a><ul>
  100. <li><a href="#avec-putty">Avec Putty</a></li>
  101. <li><a href="#avec-git-bash-1">Avec git-bash</a></li>
  102. </ul></li>
  103. </ul></li>
  104. </ul>
  105. </nav>
  106. <h1 id="configuration-de-connexion-ssh">Configuration de connexion ssh</h1>
  107. <h2 id="introduction">Introduction</h2>
  108. <p>La première partie de ce document montre comment créer des paires de clefs publiques/privées.</p>
  109. <p>La méthode recommandée est celle utilisant <code>git-bash</code></p>
  110. <h2 id="création-dune-clef">Création d’une clef</h2>
  111. <h3 id="git-bash">Git-bash</h3>
  112. <h4 id="installation-de-git-bash">Installation de git-bash</h4>
  113. <p>Deux possibilités pour installer <code>git-bash</code></p>
  114. <p>La première: télécharger <code>git-bash</code> à l’adresse: http://gitforwindows.org/</p>
  115. <p>La seconde : <a href="https://chocolatey.org/install">installer <code>chocolatey</code></a> et installer le paquet <code>git</code></p>
  116. <p>L’avantage de <code>chocolatey</code> est qu’il permet d’installer des programmes supplémentaires sous Windows qui permettent d’augmenter les fonctionnalités du shell.</p>
  117. <h4 id="création-de-la-clef">Création de la clef</h4>
  118. <p>Sur le client <code>git-bash</code> la commande à utiliser est la suivante:</p>
  119. <div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" data-line-number="1">$ <span class="fu">ssh-keygen</span></a></code></pre></div>
  120. <p>La commande affiche:</p>
  121. <pre><code>Generating public/private rsa key pair.
  122. Enter file in which to save the key (/Users/lauhub/.ssh/id_rsa):</code></pre>
  123. <p>Ne rien saisir (laisser la valeur par défaut) pour la question <code>Enter file in which to save the key</code> et appuyez sur la touche <code>Entrée</code>.</p>
  124. <p>Ensuite, choisir une passphrase:</p>
  125. <pre><code>Enter passphrase (empty for no passphrase):
  126. Enter same passphrase again:
  127. Your identification has been saved in /Users/lauhub/.ssh/id_bla.
  128. Your public key has been saved in /Users/lauhub/.ssh/id_bla.pub.
  129. The key fingerprint is:
  130. SHA256:qnMr1UW+zi3msGd/2UWfkqfq/ZkIi6mZzqeDLGFghh8 lauhub@MacBookAir-2-Laurent.local
  131. The key&#39;s randomart image is:
  132. +---[RSA 2048]----+
  133. | |
  134. | . |
  135. |. o |
  136. |.+E o .|
  137. |o. .. .S. . ..o|
  138. | .o ... . oo o|
  139. | . o.o oo o +o.|
  140. | .o+o.o+X =.+ +|
  141. | o+oO*Bo*O+.+ |
  142. +----[SHA256]-----+</code></pre>
  143. <p>Vous obtenez deux fichiers:</p>
  144. <ul>
  145. <li><code>~/.ssh/id_rsa</code></li>
  146. <li><code>~/.ssh/id_rsa.pub</code></li>
  147. </ul>
  148. <p>Récupérez le contenu de la clef publique et copiez le:</p>
  149. <div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb4-1" data-line-number="1">$ <span class="fu">cat</span> ~/.ssh/id_rsa.pub</a>
  150. <a class="sourceLine" id="cb4-2" data-line-number="2"><span class="ex">ssh-rsa</span> AAAAB3NzaC1yc2EAAAADAQABAAABAQC/tAFES1cFMs7O4mVJql7C4aLW/67F6gDyXiE2JOcQIk8+WeqSyMAegOHw0OsdhnAQdf5iDPI19UQgD+kES6gHG7ZBLg+sw3v0yloAf4W1HBdHVj75HTvx0i84d7WH0Q1RuBTgq52ni7IfmvZfhHaMaRHkRcY45cfX+BY2vh4y6BwYF0bmQWOlJUJgpMaJx9lZ2ByedCBlbnYRcdcKBASSHrL7TWR7twJyF321+B6W03BIlvwF8RupROVMBSn+56BIQ27HR4DKe/VL4FOpGAF4LM9vLEoG/9J3kuMWhwk44B3ZW7GTKAvFgmFTT7YH/gXwK4+lppJuGhPMqYLQSyzV commentaire</a></code></pre></div>
  151. <p>Copiez ce contenu (y compris <code>ssh-rsa</code> et <code>commentaire</code>).</p>
  152. <p>Suivez les instructions du paragraphe <em>Installation d’une clef publique</em></p>
  153. <h3 id="putty">Putty</h3>
  154. <p>En utilisant PuttyGen, vous pouvez générer une clef SSH</p>
  155. <p>Pour cela, cliquer sur le bouton <code>Generate</code> puis déplacer la souris pendant quelques secondes jusqu’à ce que la barre de progression soit complétée.</p>
  156. <p>Une fois cela fait:</p>
  157. <ol type="1">
  158. <li>Entrez une <em>passphrase</em> (une phrase assez longue qui va protéger votre clef)</li>
  159. <li>Confirmez la <em>passphrase</em></li>
  160. <li>Sauvez la clé privée avec le bouton <code>Save private key</code> dans un emplacement de votre disque</li>
  161. <li>Copiez le texte complet (y compris <code>ssh-rsa</code> et jusqu’en bas de la zone de sélection qui peut dépasser la zone visible)</li>
  162. <li>Suivez les instructions du paragraphe <em>Installation d’une clef publique</em></li>
  163. </ol>
  164. <h2 id="installation-de-la-clef-publique">Installation de la clef publique</h2>
  165. <p>La clef publique est la <em>serrure</em> qui permettra de se connecter à une machine en utilisant la clef privée qui lui est associée.</p>
  166. <p>Pour l’installer:</p>
  167. <ol type="1">
  168. <li>Ouvrez une session ssh sur la machine avec votre compte</li>
  169. <li>Créez un répertoire .ssh s’il n’existe pas (dans le répertoire utilisateur) : <code>mkdir -p ~/.ssh</code></li>
  170. <li>Allez dans le répertoire .ssh: <code>cd ~/.ssh</code></li>
  171. <li>Créez un nouveau fichier nommé <code>authorized_keys</code> : <code>nano authorized_keys</code></li>
  172. <li>Collez le contenu de la clef publique que vous avez copié précédemment</li>
  173. <li>Déconnectez-vous</li>
  174. <li>Testez l’installation en suivant les instructions du paragraphe <code>Connexion au serveur</code></li>
  175. </ol>
  176. <h2 id="connexion-au-serveur">Connexion au serveur</h2>
  177. <h3 id="en-utilisant-putty">En utilisant Putty</h3>
  178. <p>Dans le menu connexion, il faut définir la clef à utiliser:</p>
  179. <ol type="1">
  180. <li>Connection &gt; SSH &gt; Auth</li>
  181. <li>Choisir la clef privée créée précédemment dans le champ <code>Private key file for authentication</code></li>
  182. <li>Connectez-vous au serveur en cliquant sur le bouton Open</li>
  183. </ol>
  184. <h3 id="avec-git-bash">Avec git-bash</h3>
  185. <p>Connectez-vous directement:</p>
  186. <div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb5-1" data-line-number="1">$ <span class="fu">ssh</span> user@nom_ou_adresse_serveur</a></code></pre></div>
  187. <p>La passphrase vous est demandée. Entrez-la.</p>
  188. <p>Vous pouvez maintenant configurer l’agent (voir le paragraphe correspondant ci-dessous)</p>
  189. <h2 id="configuration-de-lagent">Configuration de l’agent</h2>
  190. <p>L’agent ssh démarre une première fois, demande la passphrase qui déverrouille la clef privée, et évite ainsi d’avoir à rentre cette passphrase à chaque fois.</p>
  191. <p>La passphrase étant stockée en mémoire vive, l’accès à la clef redevient verrouillé (et sécurisée) au redémarrage de la machine (ou en cas de vol de celle-ci).</p>
  192. <h3 id="avec-putty">Avec Putty</h3>
  193. <p>Ce tutoriel indique comment configurer <code>Pageant</code> (l’agent Putty de gestion des passphrases): https://www.siteground.com/tutorials/ssh/putty.htm</p>
  194. <h3 id="avec-git-bash-1">Avec git-bash</h3>
  195. <p>Sur le client, créer le fichier <code>.bash_profile</code> :</p>
  196. <div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="fu">touch</span> .bash_profile</a></code></pre></div>
  197. <p>Éditer le fichier <code>.bash_profile</code>. Ajoutez les lignes suivantes à la fin du fichier :</p>
  198. <div class="sourceCode" id="cb7"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="va">SSH_ENV=</span><span class="st">&quot;</span><span class="va">$HOME</span><span class="st">/.ssh/environment&quot;</span></a>
  199. <a class="sourceLine" id="cb7-2" data-line-number="2"></a>
  200. <a class="sourceLine" id="cb7-3" data-line-number="3"><span class="kw">function</span><span class="fu"> start_agent</span> <span class="kw">{</span></a>
  201. <a class="sourceLine" id="cb7-4" data-line-number="4"> <span class="bu">echo</span> <span class="st">&quot;Initialising new SSH agent...&quot;</span></a>
  202. <a class="sourceLine" id="cb7-5" data-line-number="5"> <span class="ex">/usr/bin/ssh-agent</span> <span class="kw">|</span> <span class="fu">sed</span> <span class="st">&#39;s/^echo/#echo/&#39;</span> <span class="op">&gt;</span> <span class="st">&quot;</span><span class="va">${SSH_ENV}</span><span class="st">&quot;</span></a>
  203. <a class="sourceLine" id="cb7-6" data-line-number="6"> <span class="bu">echo</span> succeeded</a>
  204. <a class="sourceLine" id="cb7-7" data-line-number="7"> <span class="fu">chmod</span> 600 <span class="st">&quot;</span><span class="va">${SSH_ENV}</span><span class="st">&quot;</span></a>
  205. <a class="sourceLine" id="cb7-8" data-line-number="8"> <span class="bu">.</span> <span class="st">&quot;</span><span class="va">${SSH_ENV}</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="ex">/dev/null</span></a>
  206. <a class="sourceLine" id="cb7-9" data-line-number="9"> <span class="ex">/usr/bin/ssh-add</span>;</a>
  207. <a class="sourceLine" id="cb7-10" data-line-number="10"><span class="kw">}</span></a>
  208. <a class="sourceLine" id="cb7-11" data-line-number="11"></a>
  209. <a class="sourceLine" id="cb7-12" data-line-number="12"><span class="co"># Source SSH settings, if applicable</span></a>
  210. <a class="sourceLine" id="cb7-13" data-line-number="13"></a>
  211. <a class="sourceLine" id="cb7-14" data-line-number="14"><span class="kw">if</span><span class="bu"> [</span> <span class="ot">-f</span> <span class="st">&quot;</span><span class="va">${SSH_ENV}</span><span class="st">&quot;</span><span class="bu"> ]</span>; <span class="kw">then</span></a>
  212. <a class="sourceLine" id="cb7-15" data-line-number="15"> <span class="bu">.</span> <span class="st">&quot;</span><span class="va">${SSH_ENV}</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="ex">/dev/null</span></a>
  213. <a class="sourceLine" id="cb7-16" data-line-number="16"> <span class="co">#ps ${SSH_AGENT_PID} doesn&#39;t work under cywgin</span></a>
  214. <a class="sourceLine" id="cb7-17" data-line-number="17"> <span class="fu">ps</span> -ef <span class="kw">|</span> <span class="fu">grep</span> <span class="va">${SSH_AGENT_PID}</span> <span class="kw">|</span> <span class="fu">grep</span> ssh-agent$ <span class="op">&gt;</span> /dev/null <span class="kw">||</span> <span class="kw">{</span></a>
  215. <a class="sourceLine" id="cb7-18" data-line-number="18"> <span class="ex">start_agent</span><span class="kw">;</span></a>
  216. <a class="sourceLine" id="cb7-19" data-line-number="19"> <span class="kw">}</span></a>
  217. <a class="sourceLine" id="cb7-20" data-line-number="20"><span class="kw">else</span></a>
  218. <a class="sourceLine" id="cb7-21" data-line-number="21"> <span class="ex">start_agent</span><span class="kw">;</span></a>
  219. <a class="sourceLine" id="cb7-22" data-line-number="22"><span class="kw">fi</span></a></code></pre></div>
  220. <p>En cas de non fonctionnement de l’agent ssh, voir:</p>
  221. <ul>
  222. <li>https://github.com/gnhuy91/til/issues/26</li>
  223. <li>https://stackoverflow.com/questions/3669001/getting-ssh-agent-to-work-with-git-run-from-windows-command-shell</li>
  224. </ul>
  225. </body>
  226. </html>