{"id":380,"date":"2023-09-07T09:05:30","date_gmt":"2023-09-07T09:05:30","guid":{"rendered":"https:\/\/blog.nibelheim.fr\/?p=380"},"modified":"2023-09-07T11:49:58","modified_gmt":"2023-09-07T11:49:58","slug":"configurer-ssh-pour-se-connecter-via-une-cle-ssh-raspberry-pi","status":"publish","type":"post","link":"https:\/\/blog.nibelheim.fr\/?p=380","title":{"rendered":"Configurer SSH pour se connecter via une cl\u00e9 SSH (Raspberry Pi)"},"content":{"rendered":"\n<p>Parmi les bonnes pratiques permettant de se pr\u00e9munir des attaques ext\u00e9rieures, notamment celles de botnets qui tentent en boucle de se connecter \u00e0 vous, se trouve d\u00e9sactiver le login par nom d&#8217;utilisateur et mot de passe, pour seulement autoriser le login par cl\u00e9 SSH.<br>Nous allons mettre cela en place sur un Raspberry Pi, mais \u00e7a fonctionnera de la m\u00eame fa\u00e7on sur un PC Linux classique.<br>C&#8217;est certes lourdingue, mais bien plus s\u00e9curis\u00e9 que le login\/password classique. En avant.<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\">Note : il existe plusieurs mani\u00e8res de g\u00e9n\u00e9rer la paire de cl\u00e9s. La m\u00e9thode que j&#8217;utilise g\u00e9n\u00e8re la cl\u00e9 depuis le serveur, puis n\u00e9cessite le transfert de la cl\u00e9 <em><strong>priv\u00e9e <\/strong><\/em>vers le PC. La m\u00e9thode la plus r\u00e9pandue est d&#8217;utiliser la g\u00e9n\u00e9ration de cl\u00e9 depuis votre client, puis de propager la cl\u00e9 <em><strong>publique <\/strong><\/em>vers le serveur. Ayant eu quelques soucis notamment \u00e0 cause du formalisme de PuTTYGen, j&#8217;ai opt\u00e9 pour le transfert de la cl\u00e9 priv\u00e9e. Comme \u00e7a vous savez!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1- G\u00e9n\u00e9rer la cl\u00e9<\/h4>\n\n\n\n<p>Connectez-vous sur votre Pi en SSH classiquement, puis g\u00e9n\u00e9rez votre paire de cl\u00e9s (une publique et une priv\u00e9e) :<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>cd ~<br>mkdir ~\/.ssh &amp;&amp; chmod 700 ~\/.ssh -R<br>ssh-keygen -f .\/my-key -t ecdsa -b 521<br><\/code><\/pre>\n\n\n\n<p>Il est demand\u00e9 une passphrase : c&#8217;est le mot de passe pour ouvrir la cl\u00e9 priv\u00e9e <em>(celle avec laquelle vous vous authentifierez pour vous connecter au serveur)<\/em> : m\u00eame si le mot de passe est facultatif, je vous recommande chaudement d&#8217;en indiquer un.<br>Ceci fait, nous avons donc deux fichiers qui ont \u00e9t\u00e9 cr\u00e9\u00e9s : <em><strong>\/home\/utilisateur\/my-key<\/strong><\/em> et <strong><em>\/home\/utilisateur\/my-key.pub<\/em><\/strong>.<\/p>\n\n\n\n<p>Nous allons maintenant faire en sorte que la cl\u00e9 publique<em> (my-key.pub)<\/em> soit reconnue par notre Raspberry Pi.<br>Ceci se passe via le fichier<strong><em> \/home\/utilisateur\/.ssh\/authorized_keys<\/em><\/strong>, que nous allons cr\u00e9er \u00e0 partir de notre cl\u00e9 publique avec les bonnes autorisations.<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>cp ~\/my-key.pub ~\/.ssh\/authorized_keys<br>chmod 600 ~\/.ssh\/authorized_keys<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2- Activer l&#8217;authentification par cl\u00e9<\/h4>\n\n\n\n<p>Maintenant, nous allons autoriser la connexion via paire de cl\u00e9s.<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n\n\n\n<p>Puis cherchez la ligne AllowUsers, \u00e0 laquelle vous ajoutez apr\u00e8s un espace votre nom d&#8217;utilisateur courant. Normalement, vous ne devriez avoir qu&#8217;un seul nom : le v\u00f4tre.<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>AllowUsers Utilisateur<\/code><\/pre>\n\n\n\n<p>4 lignes plus bas, vous devriez pouvoir trouver :<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>PubkeyAuthentication <strong>yes<\/strong><\/code><\/pre>\n\n\n\n<p>Assurez-vous du yes!<br>Ceci fait :<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>sudo service ssh restart<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3- Exporter la cl\u00e9 priv\u00e9e<\/h4>\n\n\n\n<p>Maintenant, copiez votre cl\u00e9 <strong>my-key<\/strong> <em>(et pas my-key.pub, sauf pour votre sauvegarde)<\/em> via WinSCP ou n&#8217;importe quelle commande permettant de transf\u00e9rer des fichiers depuis votre Pi vers votre PC.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4- Se connecter via Windows (avec PuTTY)<\/h4>\n\n\n\n<p>Commen\u00e7ons par <a href=\"https:\/\/the.earth.li\/~sgtatham\/putty\/latest\/w64\/putty.exe\"><strong>t\u00e9l\u00e9charger PuTTY<\/strong><\/a> ainsi que <a href=\"https:\/\/the.earth.li\/~sgtatham\/putty\/latest\/w64\/puttygen.exe\"><strong>PuTTYGen<\/strong><\/a>; le premier nous servira \u00e0 la connexion et le second \u00e0 proc\u00e9der \u00e0 une adaptation de notre cl\u00e9 priv\u00e9e.<\/p>\n\n\n\n<p>Lan\u00e7ons d&#8217;ailleurs PuTTYGen et cliquez sur <strong>Conversions <\/strong><em>(menu en haut)<\/em><strong> puis Import key&#8230;<\/strong> et s\u00e9lectionnez <strong><em>my-key<\/em><\/strong>.<br>Puis, cliquez sur le bouton Save private key<br>Lan\u00e7ons d&#8217;ailleurs PuTTYGen et cliquez sur <strong>Conversions <\/strong><em>(menu en haut)<\/em><strong> puis Import key&#8230;<\/strong> et s\u00e9lectionnez <strong><em>my-key<\/em><\/strong>.<br>Puis, cliquez sur le bouton <strong>Save private key<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"170\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2023\/09\/image-2.png\" alt=\"\" class=\"wp-image-458\"\/><\/figure>\n\n\n\n<p>Si vous n&#8217;avez pas mis de mot de passe pour votre cl\u00e9 priv\u00e9e <em>(la passphrase)<\/em>, PuTTYGen vous le fera remarquer <em>(et vous pourrez en rajouter un avec les champs au-dessus)<\/em>.<\/p>\n\n\n\n<p>Notez que votre nouvelle cl\u00e9 s&#8217;appelle maintenant <strong>my-key.ppk<\/strong>.<\/p>\n\n\n\n<p>Ouvrez maintenant PuTTY.<br>Selon les versions, la cl\u00e9 en .ppk est \u00e0 indiquer soit dans <strong>Connection &gt; SSH &gt; Auth<\/strong> directement, soit <strong>Connection &gt; SSH &gt; Auth &gt; Credentials<\/strong>.<br>Il vous suffit ensuite de renseigner le chemin via le bouton <strong>Browse&#8230; <\/strong>vers votre cl\u00e9 priv\u00e9e.<\/p>\n\n\n\n<p>Vous pouvez maintenant tester votre login comme d&#8217;habitude <em>(m\u00eame nom d&#8217;utilisateur)<\/em> via PuTTY, et vous devriez maintenant avoir l&#8217;indication que l&#8217;authentification passe par votre cl\u00e9, et non plus par la paire classique login\/mot de passe :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"37\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2023\/09\/image-3.png\" alt=\"\" class=\"wp-image-459\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">5- Le mot de la fin<\/h4>\n\n\n\n<p>Globalement, il s&#8217;agira peu importe le logiciel que vous utilisez pour vous connecter \u00e0 votre serveur de lui fournir la cl\u00e9 priv\u00e9e dans les r\u00e9glages de site.<br>Parfois, la cl\u00e9 PPK sera trop r\u00e9cente, il faudra donc bien conserver la cl\u00e9 <strong>my-key<\/strong> originale&#8230; Des fois que !<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6- Conseil de pro (ou pas)<\/h4>\n\n\n\n<p>J&#8217;ai eu beaucoup (BEAUCOUP) d&#8217;attaques de bots via SSH. Genre, <strong>\/var\/log\/auth.log<\/strong> \u00e9tait absolument boursoufl\u00e9 de plus de 1000 tentatives par jour&#8230; C&#8217;est une chose courante et, si votre paire classique login\/mot de passe est assez costaude, vous ne risquez pas grand-chose.<br>Cependant, j&#8217;ai lu et appliqu\u00e9 qu&#8217;il \u00e9tait chaudement recommand\u00e9 de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d\u00e9sactiver le login en root \u00e0 distance : dans <em><strong>\/etc\/ssh\/sshd_config<\/strong><\/em> :<br><strong>PermitRootLogin no<\/strong><\/li>\n\n\n\n<li>d\u00e9sactiver l&#8217;identification par login et mot de passe, ainsi que les mots de passe vides <em>(\u00e7a inhibe un peu le spam des bots)<\/em> :<br><strong>PasswordAuthentication no<br>PermitEmptyPasswords no<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Evidemment, cela pr\u00e9suppose que tout fonctionne comme il se doit avec la cl\u00e9 SSH&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parmi les bonnes pratiques permettant de se pr\u00e9munir des attaques ext\u00e9rieures, notamment celles de botnets qui tentent en boucle de se connecter \u00e0 vous, se trouve d\u00e9sactiver le login par nom d&#8217;utilisateur et mot de passe, pour seulement autoriser le login par cl\u00e9 SSH.Nous allons mettre cela en place sur [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,8],"tags":[],"class_list":["post-380","post","type-post","status-publish","format-standard","hentry","category-linux","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=380"}],"version-history":[{"count":5,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/380\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/380\/revisions\/467"}],"wp:attachment":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}