| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
- <head>
- <meta charset="utf-8" />
- <meta name="generator" content="pandoc" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <title>Configuration SSH</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- a.sourceLine { display: inline-block; line-height: 1.25; }
- a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
- a.sourceLine:empty { height: 1.2em; position: absolute; }
- .sourceCode { overflow: visible; }
- code.sourceCode { white-space: pre; position: relative; }
- div.sourceCode { margin: 1em 0; }
- pre.sourceCode { margin: 0; }
- @media screen {
- div.sourceCode { overflow: auto; }
- }
- @media print {
- code.sourceCode { white-space: pre-wrap; }
- a.sourceLine { text-indent: -1em; padding-left: 1em; }
- }
- pre.numberSource a.sourceLine
- { position: relative; }
- pre.numberSource a.sourceLine:empty
- { position: absolute; }
- pre.numberSource a.sourceLine::before
- { content: attr(data-line-number);
- position: absolute; left: -5em; text-align: right; vertical-align: baseline;
- border: none; pointer-events: all;
- -webkit-touch-callout: none; -webkit-user-select: none;
- -khtml-user-select: none; -moz-user-select: none;
- -ms-user-select: none; user-select: none;
- padding: 0 4px; width: 4em;
- color: #aaaaaa;
- }
- pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
- div.sourceCode
- { }
- @media screen {
- a.sourceLine::before { text-decoration: underline; }
- }
- code span.al { color: #ff0000; font-weight: bold; } /* Alert */
- code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
- code span.at { color: #7d9029; } /* Attribute */
- code span.bn { color: #40a070; } /* BaseN */
- code span.bu { } /* BuiltIn */
- code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
- code span.ch { color: #4070a0; } /* Char */
- code span.cn { color: #880000; } /* Constant */
- code span.co { color: #60a0b0; font-style: italic; } /* Comment */
- code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
- code span.do { color: #ba2121; font-style: italic; } /* Documentation */
- code span.dt { color: #902000; } /* DataType */
- code span.dv { color: #40a070; } /* DecVal */
- code span.er { color: #ff0000; font-weight: bold; } /* Error */
- code span.ex { } /* Extension */
- code span.fl { color: #40a070; } /* Float */
- code span.fu { color: #06287e; } /* Function */
- code span.im { } /* Import */
- code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
- code span.kw { color: #007020; font-weight: bold; } /* Keyword */
- code span.op { color: #666666; } /* Operator */
- code span.ot { color: #007020; } /* Other */
- code span.pp { color: #bc7a00; } /* Preprocessor */
- code span.sc { color: #4070a0; } /* SpecialChar */
- code span.ss { color: #bb6688; } /* SpecialString */
- code span.st { color: #4070a0; } /* String */
- code span.va { color: #19177c; } /* Variable */
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
- <link rel="stylesheet" href="pandoc.css">
- <!--[if lt IE 9]>
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
- <![endif]-->
- </head>
- <body>
- <div class="doctitle">Configuration SSH</div>
- <nav id="TOC">
- <ul>
- <li><a href="#configuration-de-connexion-ssh">Configuration de connexion ssh</a><ul>
- <li><a href="#introduction">Introduction</a></li>
- <li><a href="#création-dune-clef">Création d’une clef</a><ul>
- <li><a href="#git-bash">Git-bash</a></li>
- <li><a href="#putty">Putty</a></li>
- </ul></li>
- <li><a href="#installation-de-la-clef-publique">Installation de la clef publique</a></li>
- <li><a href="#connexion-au-serveur">Connexion au serveur</a><ul>
- <li><a href="#en-utilisant-putty">En utilisant Putty</a></li>
- <li><a href="#avec-git-bash">Avec git-bash</a></li>
- </ul></li>
- <li><a href="#configuration-de-lagent">Configuration de l’agent</a><ul>
- <li><a href="#avec-putty">Avec Putty</a></li>
- <li><a href="#avec-git-bash-1">Avec git-bash</a></li>
- </ul></li>
- </ul></li>
- </ul>
- </nav>
- <h1 id="configuration-de-connexion-ssh">Configuration de connexion ssh</h1>
- <h2 id="introduction">Introduction</h2>
- <p>La première partie de ce document montre comment créer des paires de clefs publiques/privées.</p>
- <p>La méthode recommandée est celle utilisant <code>git-bash</code></p>
- <h2 id="création-dune-clef">Création d’une clef</h2>
- <h3 id="git-bash">Git-bash</h3>
- <h4 id="installation-de-git-bash">Installation de git-bash</h4>
- <p>Deux possibilités pour installer <code>git-bash</code></p>
- <p>La première: télécharger <code>git-bash</code> à l’adresse: http://gitforwindows.org/</p>
- <p>La seconde : <a href="https://chocolatey.org/install">installer <code>chocolatey</code></a> et installer le paquet <code>git</code></p>
- <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>
- <h4 id="création-de-la-clef">Création de la clef</h4>
- <p>Sur le client <code>git-bash</code> la commande à utiliser est la suivante:</p>
- <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>
- <p>La commande affiche:</p>
- <pre><code>Generating public/private rsa key pair.
- Enter file in which to save the key (/Users/lauhub/.ssh/id_rsa):</code></pre>
- <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>
- <p>Ensuite, choisir une passphrase:</p>
- <pre><code>Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /Users/lauhub/.ssh/id_bla.
- Your public key has been saved in /Users/lauhub/.ssh/id_bla.pub.
- The key fingerprint is:
- SHA256:qnMr1UW+zi3msGd/2UWfkqfq/ZkIi6mZzqeDLGFghh8 lauhub@MacBookAir-2-Laurent.local
- The key's randomart image is:
- +---[RSA 2048]----+
- | |
- | . |
- |. o |
- |.+E o .|
- |o. .. .S. . ..o|
- | .o ... . oo o|
- | . o.o oo o +o.|
- | .o+o.o+X =.+ +|
- | o+oO*Bo*O+.+ |
- +----[SHA256]-----+</code></pre>
- <p>Vous obtenez deux fichiers:</p>
- <ul>
- <li><code>~/.ssh/id_rsa</code></li>
- <li><code>~/.ssh/id_rsa.pub</code></li>
- </ul>
- <p>Récupérez le contenu de la clef publique et copiez le:</p>
- <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>
- <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>
- <p>Copiez ce contenu (y compris <code>ssh-rsa</code> et <code>commentaire</code>).</p>
- <p>Suivez les instructions du paragraphe <em>Installation d’une clef publique</em></p>
- <h3 id="putty">Putty</h3>
- <p>En utilisant PuttyGen, vous pouvez générer une clef SSH</p>
- <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>
- <p>Une fois cela fait:</p>
- <ol type="1">
- <li>Entrez une <em>passphrase</em> (une phrase assez longue qui va protéger votre clef)</li>
- <li>Confirmez la <em>passphrase</em></li>
- <li>Sauvez la clé privée avec le bouton <code>Save private key</code> dans un emplacement de votre disque</li>
- <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>
- <li>Suivez les instructions du paragraphe <em>Installation d’une clef publique</em></li>
- </ol>
- <h2 id="installation-de-la-clef-publique">Installation de la clef publique</h2>
- <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>
- <p>Pour l’installer:</p>
- <ol type="1">
- <li>Ouvrez une session ssh sur la machine avec votre compte</li>
- <li>Créez un répertoire .ssh s’il n’existe pas (dans le répertoire utilisateur) : <code>mkdir -p ~/.ssh</code></li>
- <li>Allez dans le répertoire .ssh: <code>cd ~/.ssh</code></li>
- <li>Créez un nouveau fichier nommé <code>authorized_keys</code> : <code>nano authorized_keys</code></li>
- <li>Collez le contenu de la clef publique que vous avez copié précédemment</li>
- <li>Déconnectez-vous</li>
- <li>Testez l’installation en suivant les instructions du paragraphe <code>Connexion au serveur</code></li>
- </ol>
- <h2 id="connexion-au-serveur">Connexion au serveur</h2>
- <h3 id="en-utilisant-putty">En utilisant Putty</h3>
- <p>Dans le menu connexion, il faut définir la clef à utiliser:</p>
- <ol type="1">
- <li>Connection > SSH > Auth</li>
- <li>Choisir la clef privée créée précédemment dans le champ <code>Private key file for authentication</code></li>
- <li>Connectez-vous au serveur en cliquant sur le bouton Open</li>
- </ol>
- <h3 id="avec-git-bash">Avec git-bash</h3>
- <p>Connectez-vous directement:</p>
- <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>
- <p>La passphrase vous est demandée. Entrez-la.</p>
- <p>Vous pouvez maintenant configurer l’agent (voir le paragraphe correspondant ci-dessous)</p>
- <h2 id="configuration-de-lagent">Configuration de l’agent</h2>
- <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>
- <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>
- <h3 id="avec-putty">Avec Putty</h3>
- <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>
- <h3 id="avec-git-bash-1">Avec git-bash</h3>
- <p>Sur le client, créer le fichier <code>.bash_profile</code> :</p>
- <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>
- <p>Éditer le fichier <code>.bash_profile</code>. Ajoutez les lignes suivantes à la fin du fichier :</p>
- <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">"</span><span class="va">$HOME</span><span class="st">/.ssh/environment"</span></a>
- <a class="sourceLine" id="cb7-2" data-line-number="2"></a>
- <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>
- <a class="sourceLine" id="cb7-4" data-line-number="4"> <span class="bu">echo</span> <span class="st">"Initialising new SSH agent..."</span></a>
- <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">'s/^echo/#echo/'</span> <span class="op">></span> <span class="st">"</span><span class="va">${SSH_ENV}</span><span class="st">"</span></a>
- <a class="sourceLine" id="cb7-6" data-line-number="6"> <span class="bu">echo</span> succeeded</a>
- <a class="sourceLine" id="cb7-7" data-line-number="7"> <span class="fu">chmod</span> 600 <span class="st">"</span><span class="va">${SSH_ENV}</span><span class="st">"</span></a>
- <a class="sourceLine" id="cb7-8" data-line-number="8"> <span class="bu">.</span> <span class="st">"</span><span class="va">${SSH_ENV}</span><span class="st">"</span> <span class="op">></span> <span class="ex">/dev/null</span></a>
- <a class="sourceLine" id="cb7-9" data-line-number="9"> <span class="ex">/usr/bin/ssh-add</span>;</a>
- <a class="sourceLine" id="cb7-10" data-line-number="10"><span class="kw">}</span></a>
- <a class="sourceLine" id="cb7-11" data-line-number="11"></a>
- <a class="sourceLine" id="cb7-12" data-line-number="12"><span class="co"># Source SSH settings, if applicable</span></a>
- <a class="sourceLine" id="cb7-13" data-line-number="13"></a>
- <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">"</span><span class="va">${SSH_ENV}</span><span class="st">"</span><span class="bu"> ]</span>; <span class="kw">then</span></a>
- <a class="sourceLine" id="cb7-15" data-line-number="15"> <span class="bu">.</span> <span class="st">"</span><span class="va">${SSH_ENV}</span><span class="st">"</span> <span class="op">></span> <span class="ex">/dev/null</span></a>
- <a class="sourceLine" id="cb7-16" data-line-number="16"> <span class="co">#ps ${SSH_AGENT_PID} doesn't work under cywgin</span></a>
- <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">></span> /dev/null <span class="kw">||</span> <span class="kw">{</span></a>
- <a class="sourceLine" id="cb7-18" data-line-number="18"> <span class="ex">start_agent</span><span class="kw">;</span></a>
- <a class="sourceLine" id="cb7-19" data-line-number="19"> <span class="kw">}</span></a>
- <a class="sourceLine" id="cb7-20" data-line-number="20"><span class="kw">else</span></a>
- <a class="sourceLine" id="cb7-21" data-line-number="21"> <span class="ex">start_agent</span><span class="kw">;</span></a>
- <a class="sourceLine" id="cb7-22" data-line-number="22"><span class="kw">fi</span></a></code></pre></div>
- <p>En cas de non fonctionnement de l’agent ssh, voir:</p>
- <ul>
- <li>https://github.com/gnhuy91/til/issues/26</li>
- <li>https://stackoverflow.com/questions/3669001/getting-ssh-agent-to-work-with-git-run-from-windows-command-shell</li>
- </ul>
- </body>
- </html>
|