{"id":2215,"date":"2021-03-13T12:37:20","date_gmt":"2021-03-13T11:37:20","guid":{"rendered":"http:\/\/blogperso.union31.fr\/?p=2215"},"modified":"2021-03-14T15:30:43","modified_gmt":"2021-03-14T14:30:43","slug":"linux-ssh-serveur-et-client","status":"publish","type":"post","link":"https:\/\/blogperso.union31.fr\/?p=2215","title":{"rendered":"Linux : SSH (serveur)"},"content":{"rendered":"\n<p>Quelques notes sur l&rsquo;installation d&rsquo;un serveur OpenSSH et comment g\u00e9n\u00e9rer ses clefs&#8230;<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sommaire<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#I_Generation_de_clefs_et_emplacement\" >I G\u00e9n\u00e9ration de clefs et emplacement<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#I1_Introduction\" >I.1 Introduction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#I2_Generation_dune_paire_de_clefs\" >I.2 G\u00e9n\u00e9ration d&rsquo;une paire de clefs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#I3_Pour_aller_plus_loin\" >I.3 Pour aller plus loin<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II_Serveur_SSH\" >II Serveur SSH<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II1_Installation_dun_serveur_SSH\" >II.1  Installation d&rsquo;un serveur SSH<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II2_Quelques_elements_de_configuration\" >II.2 Quelques \u00e9l\u00e9ments de configuration<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II21_le_banner_message_daccueil\" >II.2.1 le banner (message d&rsquo;accueil)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II22_Authentification_par_clef\" >II.2.2 Authentification par clef<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II23_Enlever_le_mode_dauthentification_par_mot_de_passe\" >II.2.3 Enlever le mode d&rsquo;authentification par mot de passe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blogperso.union31.fr\/?p=2215\/#II24_Nauthoriser_que_certains_types_de_clefs\" >II.2.4 N&rsquo;authoriser que certains types de clefs<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I_Generation_de_clefs_et_emplacement\"><\/span>I G\u00e9n\u00e9ration de clefs et emplacement<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I1_Introduction\"><\/span>I.1 Introduction<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>L&rsquo;authentification par clef n\u00e9cessite d&rsquo;avoir une clef priv\u00e9e et une clef publique.<\/p>\n\n\n\n<p>La clef priv\u00e9e est \u00e0 garder pr\u00e9cieusement. En revanche la clef publique peut \u00eatre communiqu\u00e9e sans restriction. Lors de l\u2019authentification sur un serveur, c&rsquo;est la clef publique qui sera donn\u00e9e auparavant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I2_Generation_dune_paire_de_clefs\"><\/span>I.2 G\u00e9n\u00e9ration d&rsquo;une paire de clefs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Pour g\u00e9n\u00e9rer une paire de clefs il faut taper la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>ssh-keygen<\/strong> -t rsa -b 4096 -C \"test@example.mail\"\n<\/code><\/pre>\n\n\n\n<p>Ce qui donne le r\u00e9sultat suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generating public\/private rsa key pair.\nEnter file in which to save the key (\/home\/xavior\/.ssh\/id_rsa): \nEnter passphrase (empty for no passphrase): \nEnter same passphrase again: \n<span class=\"has-inline-color has-vivid-red-color\">Your identification has been saved in \/home\/xavior\/.ssh\/id_rsa\n<\/span><span class=\"has-inline-color has-vivid-green-cyan-color\">Your public key has been saved in \/home\/xavior\/.ssh\/id_rsa.pub<\/span>\nThe key fingerprint is:\nSHA256:lIvzPa0+b0Lz+R+GG5QxCsXNEoKY4WKJk5+qk7KKE+Q test@example.mail\nThe key's randomart image is:\n+---&#91;RSA 4096]----+\n|     .+ ...o+    |\n|  o oo . .oo o   |\n| + + .  o.  .o   |\n| .+ o  o .. . +  |\n|o  o  o S  . o   |\n|.E.    o .o.. .  |\n| +      ..oo.+ o |\n|B         oo+ + .|\n|B+       .o=.o...|\n+----&#91;SHA256]-----+<\/code><\/pre>\n\n\n\n<p>Avant de g\u00e9n\u00e9rer la paire de clefs, la commande demande un \u00ab\u00a0passphrase\u00a0\u00bb, c&rsquo;est \u00e0 dire un mot de passe li\u00e9 \u00e0 cette clef. Il est possible de ne pas en donner<\/p>\n\n\n\n<p>Ensuite la commande g\u00e9n\u00e8re 2 clefs :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>une clef priv\u00e9e  nomm\u00e9e id_rsa dans le r\u00e9pertoire ~\/.ssh\/<\/li><li>une clef publique nomm\u00e9e id_rsa.pub dans le m\u00eame r\u00e9pertoire. <\/li><\/ul>\n\n\n\n<p>Liste des clefs dans le r\u00e9pertoire ~\/.ssh :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>4 drwx------  2 xavior xavior 4096 mars  13 17:06 .\n4 drwxr-xr-x 38 xavior xavior 4096 mars  13 12:20 ..\n4 -rw-------  1 xavior xavior 3434 mars  13 17:06 id_rsa\n4 -rw-r--r--  1 xavior xavior  743 mars  13 17:06 id_rsa.pub\n<\/code><\/pre>\n\n\n\n<p>On voit bien que la clef priv\u00e9e g\u00e9n\u00e9r\u00e9e n&rsquo;est visible que par l&rsquo;utilisateur. En revanche la clef publique est visible par tous les autres.<\/p>\n\n\n\n<p>Et le contenu d&rsquo;une clef publique ressemble \u00e0 ceci :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDO50+\/UB1+YL98\/8in+\/+DQv2kacw1NThgygTwbQakwTiMNHBpz4gWwpUyr287GSvsNz62ofccMqpji1+YAlBiU5Y4KhMToRdmeJdyCEZJGO3B2WX6kDMpOf52aIILxG8N8CUQk8zdAjYw0S4gql1A8NN7MLOmcTmNEgAtnTGg9eT1nIkilOWm4+iJ7PP\/ig+3FHStsskDoBw2T7Fmjkp3AoEMTmIk7xCHqpls2DbVpM+WhwGQmjIB0latuifIgkzflHUc1vv6DvMZGJkhDzQrAttbx5sY++AAr6ygG8aAFRc4cAKCmqTGO+wVmOW3EzYkjOq00Od\/lIWc819MImXn50MTWLc+2AD4nz3VmPVdf3OvLRW91\/5mDSQGmX0kRUIpEKqsfN8R1frQdA8zZa8C8sebdZCTRLqn05ILEWzea8cYzz\/vzA5PZJquHthSsxoOTkUm3c92mW\/X97ME5cY78LkByJ22QlK5d7NsXmG2q3yp0gybylmxTxPiwdxlqRetIVr8XYeA9UQgH\/khvTiULmQA+7Y3tau3MopUwYzNxzfDd+YULyw4HJW0fC86xQ7raNeca43SeHjhgELBhKU7FG5K8XVWtf6W8QVmOX6pqoH2GoKZ8pUL9gY5yVIAL+2VV2FLBx5wzuI68WXpDBKk6PfBxQs1sxBRq9H\/zK4S7w== test@example.mail<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I3_Pour_aller_plus_loin\"><\/span>I.3 Pour aller plus loin<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Dans l&rsquo;exemple pr\u00e9c\u00e9dent il a \u00e9t\u00e9 cr\u00e9\u00e9 une paire de clefs de type RSA (option -t) et de longueur \u00ab\u00a04096\u00a0\u00bb (option -b). Une longueur de 2048 bits aurait pu \u00eatre suffisant. Attention avec cette longueur de clef car elle est, suivant les pays, peut \u00eatre limit\u00e9e.<\/p>\n\n\n\n<p>Mais il existe d&rsquo;autres algorithmes de chiffrement et qui sont :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>le DSA<\/li><li>le RSA<\/li><li>l&rsquo; ECC ou Elliptic curve cryptography : clefs dont le chiffrement est bas\u00e9e sur les courbes elliptiques. Elles ont de deux types :<ul><li>l&rsquo;ECDSA ;<\/li><li>l&rsquo;ECDSA-SK ;<\/li><li>l&rsquo;ED25519 ;<\/li><li>l&rsquo;ED25519-SK.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>Les clefs ECC sont plus petites en taille et permet un niveau de chiffrement \u00e9quivalent et de s\u00e9curit\u00e9 \u00e0 une clef RSA beaucoup plus grande. Pour exemple une clef RCC de taille de 256 bits \u00e9quivaut une clef RSA de taille de 3072 bits. Moins longues elles permettent donc des d\u00e9lais de chiffrement et d\u00e9chiffrement plus rapides \u00e9galement. Le revers de la m\u00e9daille est que les anciennes syst\u00e8mes ne savent pas g\u00e9rer ce type de clef.<\/p>\n\n\n\n<p>Ci-dessous quelque exemple de commandes pour g\u00e9n\u00e9rer les 4 types de clefs :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-keygen -t rsa -b 4096\nssh-keygen -t dsa\nssh-keygen -t ecdsa -b 521\nssh-keygen -t ed25519<\/code><\/pre>\n\n\n\n<p>A ce jour (2020) il est recommand\u00e9 d&rsquo;utiliser un chiffrement de type \u00ab\u00a0ed25519\u00a0\u00bb.<\/p>\n\n\n\n<p>Pour aller plus dans l&rsquo;utilisation de la commande ssh-keygen : <a rel=\"noreferrer noopener\" href=\"https:\/\/man.openbsd.org\/ssh-keygen.1\" data-type=\"URL\" data-id=\"https:\/\/man.openbsd.org\/ssh-keygen.1\" target=\"_blank\">lien<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II_Serveur_SSH\"><\/span>II Serveur SSH<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>On consid\u00e8re que les comptes devront acc\u00e9der au serveur sont d\u00e9j\u00e0 cr\u00e9\u00e9s. Dans notre cas, l&rsquo;utilisateur test a \u00e9t\u00e9 cr\u00e9\u00e9 dans ce sens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II1_Installation_dun_serveur_SSH\"><\/span>II.1  Installation d&rsquo;un serveur SSH<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Nous allons voir  comment installer un serveur ssh. Sous Ubuntu :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y openssh-server<\/code><\/pre>\n\n\n\n<p>R\u00e9pondez aux questions (continent et ville) puis attendre la fin de l&rsquo;installation.<\/p>\n\n\n\n<p>les fichiers de configurations se trouvent dans \/etc\/ssh :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\n|-- moduli\n|-- ssh_config\n|-- ssh_config.d\n|-- ssh_host_ecdsa_key\n|-- ssh_host_ecdsa_key.pub\n|-- ssh_host_ed25519_key\n|-- ssh_host_ed25519_key.pub\n|-- ssh_host_rsa_key\n|-- ssh_host_rsa_key.pub\n|-- ssh_import_id\n|-- <span class=\"has-inline-color has-vivid-green-cyan-color\"><strong>sshd_config<\/strong><\/span>\n`-- <span class=\"has-inline-color has-vivid-green-cyan-color\"><strong>sshd_config.d<\/strong><\/span>\n<\/code><\/pre>\n\n\n\n<p>Le fichier de configuration du serveur SHH est \u00ab\u00a0sshd_config\u00a0\u00bb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II2_Quelques_elements_de_configuration\"><\/span>II.2 Quelques \u00e9l\u00e9ments de configuration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II21_le_banner_message_daccueil\"><\/span>II.2.1 le banner (message d&rsquo;accueil)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Le banner est le message qui s&rsquo;affiche au moment de la connexion lorsque l&rsquo;on demande de s&rsquo;identifier.<\/p>\n\n\n\n<p>Par d\u00e9faut il n&rsquo;y pas de message. Pour en ajouter un il faut cr\u00e9er un fichier (dans notre cas \/etc\/ssh\/banner.txt) contenant le message et d\u00e9clarer l&rsquo;option dans le fichier ssshd_config comme suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Banner  \/etc\/ssh\/banner.txt<\/code><\/pre>\n\n\n\n<p>Le r\u00e9sultat sera le suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh test@127.0.0.1\nBienvenue sur le serveur via SSH.\nL'acc\u00e8s au serveur est r\u00e9serv\u00e9 aux ayants droits !\n\ntest@127.0.0.1's password: <\/code><\/pre>\n\n\n\n<p>Une fois le bon mot de passe renseign\u00e9,  le message suivant appara\u00eet :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Welcome to Ubuntu 20.04.2 LTS (GNU\/Linux 5.8.0-44-generic x86_64)\n\n * Documentation:  https:\/\/help.ubuntu.com\n * Management:     https:\/\/landscape.canonical.com\n * Support:        https:\/\/ubuntu.com\/advantage\n\nThis system has been minimized by removing packages and content that are\nnot required on a system that users do not log into.\n\nTo restore this content, you can run the 'unminimize' command.\nLast login: Sun Mar 14 08:04:11 2021 from 192.168.80.1\n<\/code><\/pre>\n\n\n\n<p>OpenSSH-server utilise le message du jour de la distribution. Pour pouvoir le changer, il faut modifier les scripts situ\u00e9 dans \/etc\/update-motd.d :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\n|-- 00-header\n|-- 10-help-text\n|-- 50-motd-news\n`-- 60-unminimize<\/code><\/pre>\n\n\n\n<p>En en enlevant l\u2019ex\u00e9cution sur les scripts  puis en ajoutant le sien comme suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8 drwxr-xr-x 1 root root 4096 Mar 14 08:16 .\n8 drwxr-xr-x 1 root root 4096 Mar 14 06:53 ..\n4 -rw-r--r-- 1 root root 1220 Dec  5  2019 00-header\n4 -rw-r--r-- 1 root root 1157 Dec  5  2019 10-help-text\n8 -rw-r--r-- 1 root root 5023 Aug 17  2020 50-motd-news\n4 -rw-r--r-- 1 root root  356 Feb 17 01:18 60-unminimize\n4 -rwxr-xr-x 1 root root  122 Mar 14 08:16 99-personalisation<\/code><\/pre>\n\n\n\n<p>le fichier contenant le texte suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n\necho \"----------------------------------------\"\necho \"-  Acc\u00e8s au serveur : soyez prudent !!!-\"  \necho \"----------------------------------------\"<\/code><\/pre>\n\n\n\n<p>Il est possible d&rsquo;avoir ce type de r\u00e9sultat :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test@127.0.0.1's password: \n----------------------------------------\n-  Acc\u00e8s au serveur : soyez prudent !!!-\n----------------------------------------\nLast login: Sun Mar 14 08:26:33 2021 from 192.168.80.1\n<\/code><\/pre>\n\n\n\n<p>Pour aller plus loin sur le mot du jour : <a href=\"https:\/\/doc.ubuntu-fr.org\/motd\" target=\"_blank\" rel=\"noreferrer noopener\">lien<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II22_Authentification_par_clef\"><\/span>II.2.2 Authentification par clef<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Nous allons maintenant voir l&rsquo;authentification par clef et non plus par mot de passe.<\/p>\n\n\n\n<p>Par d\u00e9faut l&rsquo;authentification par clef est activ\u00e9e. Dans le fichier de configuration la cl\u00e9 est la suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#PubkeyAuthentication yes<\/code><\/pre>\n\n\n\n<p>Openssh va v\u00e9rifier la pr\u00e9sence ou non d&rsquo;une clef autoris\u00e9e dans le r\u00e9pertoire  <strong>~\/.ssh\/authorized_keys<\/strong><\/p>\n\n\n\n<p>Il faut donc connaitre sur le serveur l&#8217;emplacement HOME de l&rsquo;utilisateur \u00ab\u00a0test\u00a0\u00bb :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/etc\/passwd | grep test\ntest:x:1000:0::\/home\/ubuntu:\/bin\/bash<\/code><\/pre>\n\n\n\n<p>Ainsi nous allons cr\u00e9er le r\u00e9pertoire .ssh ainsi que le fichier de cet utilisateur (test):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/home\/ubuntu\/.ssh\ntouch \/home\/ubuntu\/.ssh\/authorized_keys\nchmod 700 \/home\/ubuntu\/.ssh\nchmod 600 \/home\/ubuntu\/.ssh\/authorized_keys\nchown test:root \/home\/ubuntu\/.ssh\/authorized_keys\nchown test:root \/home\/ubuntu\/.ssh<\/code><\/pre>\n\n\n\n<p>Le respect du positionnement de ces droits est impos\u00e9 par la directive \u00ab\u00a0<strong>StrictModes yes<\/strong>\u00a0\u00bb dans le fichier de configuration. Il n&rsquo;est pas du tout conseiller de mettre cette directive \u00e0 no (sauf pour debugger par ex.)<\/p>\n\n\n\n<p>Il faut maintenant copier la clef pulique sur le serveur. Nous allons la mettre dans le r\u00e9pertoire ~\/.ssh.<\/p>\n\n\n\n<p>Puis nous allons ajouter cette clef dans le fichier \u00ab\u00a0authorized_keys\u00a0\u00bb :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat id_rsa.pub >> authorized_keys\nrm id_rsa.pub<\/code><\/pre>\n\n\n\n<p>Ainsi une connexion ressemblera \u00e0 celle-ci :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>ssh test@127.0.0.1<\/strong>\nBienvenue sur le serveur via SSH.\nL'acc\u00e8s au serveur est r\u00e9serv\u00e9 aux ayants droits !\n\n----------------------------------------\n-  Acc\u00e8s au serveur : soyez prudent !!!-\n----------------------------------------\nLast login: Sun Mar 14 11:05:34 2021 from 192.168.80.1\ntest@5c4aae25376b:~$ \n<\/code><\/pre>\n\n\n\n<p>Comme aucune passphrase n&rsquo;a \u00e9t\u00e9 renseign\u00e9e dans la clef, pas d&rsquo;identification suppl\u00e9mentaire a \u00e9t\u00e9 demand\u00e9e. N\u00e9anmoins il faut une passphrase pour plus de s\u00e9curit\u00e9 notemment en cas de vol de la clef priv\u00e9e&#8230;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II23_Enlever_le_mode_dauthentification_par_mot_de_passe\"><\/span>II.2.3 Enlever le mode d&rsquo;authentification par mot de passe<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Maintenant que nous avons vu l&rsquo;authentification par clef, il est maintenant de s\u00e9curiser l&rsquo;acc\u00e8s SSH en supprimant la possibilit\u00e9 de se connecter par mot de passe.<\/p>\n\n\n\n<p>Pour cela, dans le fichier de configuration \/etc\/ssh\/sshd_config, indiquer cette directive :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># To disable tunneled clear text passwords, change to no here!\n<span class=\"has-inline-color has-vivid-green-cyan-color\">PasswordAuthentication <strong>no<\/strong><\/span><\/code><\/pre>\n\n\n\n<p>Ce qui donne ce r\u00e9sultat si aucune clef est \u00e0 fourni :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh test@127.0.0.1\nBienvenue sur le serveur via SSH.\nL'acc\u00e8s au serveur est r\u00e9serv\u00e9 aux ayants droits !\n\ntest@127.0.0.1: Permission denied (publickey).\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II24_Nauthoriser_que_certains_types_de_clefs\"><\/span>II.2.4 N&rsquo;authoriser que certains types de clefs<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Nous allons voir comment n&rsquo;accepter que certains types de clefs. <\/p>\n\n\n\n<p>A ce jour et par d\u00e9faut un serveur SSH accepte que ces types de clefs :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>                ecdsa-sha2-nistp256-cert-v01@openssh.com,\n                ecdsa-sha2-nistp384-cert-v01@openssh.com,\n                ecdsa-sha2-nistp521-cert-v01@openssh.com,\n                sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,\n                ssh-ed25519-cert-v01@openssh.com,\n                sk-ssh-ed25519-cert-v01@openssh.com,\n                rsa-sha2-512-cert-v01@openssh.com,\n                rsa-sha2-256-cert-v01@openssh.com,\n                ssh-rsa-cert-v01@openssh.com,\n                ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,\n                sk-ecdsa-sha2-nistp256@openssh.com,\n                ssh-ed25519,sk-ssh-ed25519@openssh.com,\n                rsa-sha2-512,rsa-sha2-256,ssh-rsa<\/code><\/pre>\n\n\n\n<p>Nous allons voir comment r\u00e9duire l&rsquo;utilisation de clef que de type \u00ab\u00a0ed25519\u00a0\u00bb par exemple.<\/p>\n\n\n\n<p>Pour cela il faut modifier le fichier \/etc\/ssh\/sshd_config et ajouter les directives suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>PubkeyAcceptedKeyTypes<\/strong> ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,sk-ssh-ed25519@openssh.com<\/code><\/pre>\n\n\n\n<p>Ce qui a pour effet imm\u00e9diat avec une clef RSA :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh test@127.0.0.1\nBienvenue sur le serveur via SSH.\nL'acc\u00e8s au serveur est r\u00e9serv\u00e9 aux ayants droits !\n\ntest@127.0.0.1: Permission denied (publickey).<\/code><\/pre>\n\n\n\n<p>Ce qui se comprend dans les fichiers log par les lignes suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mar 14 11:46:06 5c4aae25376b sshd&#91;467]: userauth_pubkey: key type ssh-rsa <strong><span class=\"has-inline-color has-vivid-green-cyan-color\">not in<\/span><\/strong> PubkeyAcceptedKeyTypes &#91;preauth]\nMar 14 11:46:06 5c4aae25376b sshd&#91;467]: Connection closed by authenticating user test 192.168.80.1 port 56042 &#91;preauth]<\/code><\/pre>\n\n\n\n<p>En revanche avec une clef  ed25519 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh test@127.0.0.1\nBienvenue sur le serveur via SSH.\nL'acc\u00e8s au serveur est r\u00e9serv\u00e9 aux ayants droits !\n\n----------------------------------------\n-  Acc\u00e8s au serveur : soyez prudent !!!-\n----------------------------------------<\/code><\/pre>\n\n\n\n<p>Et on analysant les log, on voit bien que c&rsquo;est une clef ed25519 qui a \u00e9t\u00e9 utilis\u00e9e, bien que le client et sur le serveur la clef RSA soit aussi pr\u00e9sente pour l&rsquo;utilisateur test.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quelques notes sur l&rsquo;installation d&rsquo;un serveur OpenSSH et comment g\u00e9n\u00e9rer ses clefs&#8230; I G\u00e9n\u00e9ration de clefs et emplacement I.1 Introduction L&rsquo;authentification par clef n\u00e9cessite d&rsquo;avoir une clef priv\u00e9e et une clef publique. La clef priv\u00e9e est \u00e0 garder pr\u00e9cieusement. En<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2215","post","type-post","status-publish","format-standard","hentry","category-_systeme"],"_links":{"self":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/2215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2215"}],"version-history":[{"count":41,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/2215\/revisions"}],"predecessor-version":[{"id":2284,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/2215\/revisions\/2284"}],"wp:attachment":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}