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
ssh [Le 22/04/2026, 19:43] – [Configuration du serveur] note sécurité krodelabestiolessh [Le 07/05/2026, 17:43] (Version actuelle) – [Configuration du serveur] warning désactiver //toutes// les autres méthodes krodelabestiole
Ligne 36: Ligne 36:
  
 **OpenSSH** se compose de deux outils principaux : **OpenSSH** se compose de deux outils principaux :
-  * Le **[[#serveur]]** doit être installé sur la machine -- distante -- //à laquelle// on souhaite se connecter, pour la contrôler, accéder à des fichiers, utiliser comme //[[:ssh_avance#tunneliser_sa_connexion_internet_par_ssh_sans_squid|proxy]]//, etc. (le terme //serveur// détermine aussi bien le service qui tourne sur l'ordinateur que l'ordinateur lui-même (pour plus d'information à ce sujet, voir la page //[[:Serveur]]//). Il est fourni par le paquet ''[[pu>openssh-server]]'', qui n'est généralement pas [[#Installation|installé]] par défaut.+  * Le **[[#serveur]]** doit être installé sur la machine -- distante -- //à laquelle// on souhaite se connecter, pour la contrôler, accéder à des fichiers, l'utiliser comme //[[:ssh_avance#tunneliser_sa_connexion_internet_par_ssh_sans_squid|proxy]]//, etc. (le terme //serveur// détermine aussi bien le service qui tourne sur l'ordinateur que l'ordinateur lui-même (pour plus d'information à ce sujet, voir la page //[[:Serveur]]//). Il est fourni par le paquet ''[[pu>openssh-server]]'', qui n'est généralement pas [[#Installation|installé]] par défaut.
   * Le **[[#client]]** est l'interface locale, avec laquelle on interagit directement, et qui permet de réaliser différentes tâches à distance. Pour **OpenSSH** il s'agit d'une application en ligne de commande fournie par le paquet ''[[pu>openssh-client]]'', installé par défaut sur Ubuntu. Celui-ci donne accès à la [[:console]] distante comme si elle était locale, via le [[:terminal]]. Mais il existe d'autres types de clients (voir l'introduction du chapitre //[[#Client]]//).   * Le **[[#client]]** est l'interface locale, avec laquelle on interagit directement, et qui permet de réaliser différentes tâches à distance. Pour **OpenSSH** il s'agit d'une application en ligne de commande fournie par le paquet ''[[pu>openssh-client]]'', installé par défaut sur Ubuntu. Celui-ci donne accès à la [[:console]] distante comme si elle était locale, via le [[:terminal]]. Mais il existe d'autres types de clients (voir l'introduction du chapitre //[[#Client]]//).
  
Ligne 44: Ligne 44:
  
 Pour accéder à une machine à distance (ordinateur personnel, serveur distant qu'on administre, //box//, etc.), [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>openssh-server]]'' sur cette machine. Elle sera le //[[:serveur]]// SSH. Pour accéder à une machine à distance (ordinateur personnel, serveur distant qu'on administre, //box//, etc.), [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>openssh-server]]'' sur cette machine. Elle sera le //[[:serveur]]// SSH.
- 
-On peut vérifier ce qui est déjà installé avec la commande : 
-<code bash>ssh -V</code> 
-qui devrait retourner une ligne du type ''OpenSSH_8.2p1 Ubuntu-4ubuntu0.12, OpenSSL 1.1.1f  31 Mar 2020''. 
  
 La commande suivante permet de connaître la version de la bibliothèque [[wpfr>Transport_Layer_Security|TLS]] (anciennement SSL, le nom est resté) : La commande suivante permet de connaître la version de la bibliothèque [[wpfr>Transport_Layer_Security|TLS]] (anciennement SSL, le nom est resté) :
Ligne 57: Ligne 53:
  
 Il est notamment possible de : Il est notamment possible de :
-  * l'[[#activer]] ou l'[[#arrêter]] : pour par exemple désactiver momentanément le service+  * le [[#démarrer]] ou l'[[#arrêter]] : pour par exemple désactiver momentanément le service
   * le [[#relancer]] : utile entre autre après une modification de la configuration.   * le [[#relancer]] : utile entre autre après une modification de la configuration.
  
Ligne 66: Ligne 62:
 <code bash>sudo systemctl status ssh</code> <code bash>sudo systemctl status ssh</code>
  
-=== Activer ===+=== Démarrer ===
 Saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante : Saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
 <code bash>sudo systemctl start ssh</code> <code bash>sudo systemctl start ssh</code>
Ligne 81: Ligne 77:
 La configuration par défaut du serveur SSH sous Ubuntu est fonctionnelle, mais n'apporte pas un niveau de sécurité suffisant pour l'exposer sur Internet ! La configuration par défaut du serveur SSH sous Ubuntu est fonctionnelle, mais n'apporte pas un niveau de sécurité suffisant pour l'exposer sur Internet !
  
-Pour cela il faut désactiver l'[[#authentification par mot de passe]] et forcer l'[[#authentification_par_un_systeme_de_cles_publiqueprivee|utilisation de clés]].+Pour cela il faut forcer l'[[#authentification_par_un_systeme_de_cles_publiqueprivee|utilisation de clés]] et [[#désactiver toutes les autres méthodes d'authentification]].
 </note> </note>
  
 Le fichier de configuration à [[:tutoriel:comment_editer_un_fichier|éditer avec les droits d'administration]] est ''/etc/ssh/sshd_config''. Le fichier de configuration à [[:tutoriel:comment_editer_un_fichier|éditer avec les droits d'administration]] est ''/etc/ssh/sshd_config''.
 +
 +<note tip>
 +Bien que ce soit rarement documenté, il peut être plus fiable de créer et éditer les directives de configuration dans un fichier ''/etc/ssh/sshd_config.d/custom.conf'' plutôt que directement dans ''/etc/ssh/sshd_config''.
 +
 +Ce fichier surchargera les valeurs déclarées dans ''/etc/ssh/sshd_config'' sans risquer d'être écrasé par une [[:upgrade|mise à niveau majeure]].
 +</note>
  
 === Édition === === Édition ===
  
-Pour éditer le fichier ''/etc/ssh/sshd_config'' avec les [[:permissions administrateur]] (requiert le mot de passe), il existe deux possibilités :+Pour éditer le fichier ''/etc/ssh/sshd_config'' (ou plutôt ''/etc/ssh/sshd_config.d/custom.conf'', voir note ci-dessus) avec les [[:permissions administrateur]] (requiert le mot de passe), il existe deux possibilités :
   * utiliser un éditeur de texte "graphique" qui propose un [[:elevation_privileges#gnome_fichiers_et_gedit|mode administrateur]], par exemple :   * utiliser un éditeur de texte "graphique" qui propose un [[:elevation_privileges#gnome_fichiers_et_gedit|mode administrateur]], par exemple :
     * avec l'éditeur de texte par défaut depuis la version [[:kinetic|Kinetic 22.10]] de Ubuntu ([[:GNOME]]) :<code>gted admin:///etc/ssh/sshd_config</code>     * avec l'éditeur de texte par défaut depuis la version [[:kinetic|Kinetic 22.10]] de Ubuntu ([[:GNOME]]) :<code>gted admin:///etc/ssh/sshd_config</code>
     * ou (pour les versions d'Ubuntu antérieures) :<code>gedit admin:///etc/ssh/sshd_config</code>     * ou (pour les versions d'Ubuntu antérieures) :<code>gedit admin:///etc/ssh/sshd_config</code>
   * ou avec un éditeur de texte en mode [[:terminal|console]] :<code>sudoedit /etc/ssh/sshd_config</code>qui sous ×buntu équivaut à :<code>sudo nano /etc/ssh/sshd_config</code>   * ou avec un éditeur de texte en mode [[:terminal|console]] :<code>sudoedit /etc/ssh/sshd_config</code>qui sous ×buntu équivaut à :<code>sudo nano /etc/ssh/sshd_config</code>
- 
-<note tip> 
-Bien que ce soit rarement documenté, il peut être plus fiable de créer et éditer les directives de configuration dans un fichier ''/etc/ssh/sshd_config.d/custom.conf'' plutôt que directement dans ''/etc/ssh/sshd_config''. 
- 
-Ce fichier surchargera les valeurs déclarées dans ''/etc/ssh/sshd_config'' sans risquer d'être écrasé par une [[:upgrade|mise à niveau majeure]]. 
-</note> 
  
 === Directives === === Directives ===
Ligne 104: Ligne 100:
 Tableau des principales directives à modifier si besoin : Tableau des principales directives à modifier si besoin :
  
 +<mobiletable 1>
 ^Directive du fichier^Valeur par défaut sous Ubuntu^Valeur possible^Effet de la valeur choisie^ ^Directive du fichier^Valeur par défaut sous Ubuntu^Valeur possible^Effet de la valeur choisie^
 |''Port''|''22''| Tous les ports qui ne sont pas utilisés par un autre service  | Le changement du port par défaut , souvent conseillé, n'augmentera pas la sécurité. C'est même l'inverse si vous choisissez un port non privilégié, c'est à dire supérieur à 1024  | |''Port''|''22''| Tous les ports qui ne sont pas utilisés par un autre service  | Le changement du port par défaut , souvent conseillé, n'augmentera pas la sécurité. C'est même l'inverse si vous choisissez un port non privilégié, c'est à dire supérieur à 1024  |
-|''PermitRootLogin''|''without-password'' / ''prohibit-password''|''yes'' ''no'' ''without-password'' ''forced-commands-only'' ''prohibit-password''cf [[http://manpages.ubuntu.com/manpages/lucid/man5/sshd_config.5.html| le man]] |+|''PermitRootLogin''|''without-password'' / ''prohibit-password''|''yes'' ''no'' ''without-password'' ''forced-commands-only'' ''prohibit-password''Permet la connexion directe de l'utilisateur ''[[:root]]''À éviter pour des raisons de [[:sécurité]] (en particulier sur un serveur Ubuntu, sur lequel l'utilisateur ''root'' n'esiste pas par défaut). |
 |''PubkeyAuthentication''|''yes''|''no''|Laisser ''yes'' si vous voulez établir l'authentification par clé comme expliqué plus haut| |''PubkeyAuthentication''|''yes''|''no''|Laisser ''yes'' si vous voulez établir l'authentification par clé comme expliqué plus haut|
 |''PasswordAuthentication''|''yes''|''no''|On peut parfaitement conserver l'authentification par clé pour certains utilisateurs avec celle par mot de passe pour d'autres utilisateurs. Conserver cette valeur à yes tant que l'authentification par clé n'est pas pleinement fonctionnelle, sinon vous perdrez toute connexion en SSH| |''PasswordAuthentication''|''yes''|''no''|On peut parfaitement conserver l'authentification par clé pour certains utilisateurs avec celle par mot de passe pour d'autres utilisateurs. Conserver cette valeur à yes tant que l'authentification par clé n'est pas pleinement fonctionnelle, sinon vous perdrez toute connexion en SSH|
Ligne 112: Ligne 109:
 |''#MaxStartups 10:30:60''|ligne commentée donc inactive|décommenter (enlever symbole ''#'')|Le ''10'' représente le nombre de connexions acceptées sans qu'un utilisateur ait réussi à s'identifier, si cela passe au dessus de ''10'', il y a 30% de probalités que les suivantes soient bloquées, et ce pourcentage augmente linéairement jusqu'à 100 % lorsque le //full// est atteint, à ''60'' connexions. Très utile pour éviter [[http://linuxfr.org/~dark_star/18379.html|ce genre]] de désagrément.| |''#MaxStartups 10:30:60''|ligne commentée donc inactive|décommenter (enlever symbole ''#'')|Le ''10'' représente le nombre de connexions acceptées sans qu'un utilisateur ait réussi à s'identifier, si cela passe au dessus de ''10'', il y a 30% de probalités que les suivantes soient bloquées, et ce pourcentage augmente linéairement jusqu'à 100 % lorsque le //full// est atteint, à ''60'' connexions. Très utile pour éviter [[http://linuxfr.org/~dark_star/18379.html|ce genre]] de désagrément.|
 |''#Banner /etc/issue.net''|Ligne commentée donc inactive|Décommenter|Lorsque vous essayez de vous connecter à votre serveur par SSH, le fichier ''/etc/issue.net'' est affiché (à vous de le personnaliser pour dire bonjour ou mettre un avertissement, un guide, etc.)| |''#Banner /etc/issue.net''|Ligne commentée donc inactive|Décommenter|Lorsque vous essayez de vous connecter à votre serveur par SSH, le fichier ''/etc/issue.net'' est affiché (à vous de le personnaliser pour dire bonjour ou mettre un avertissement, un guide, etc.)|
-|UsePAM|yes|no|Attention, bien lire la page de ''[[man>sshd_config|man sshd_config]]'', ce paramètre interagit avec ''ChallengeResponseAuthentication'' et ''PasswordAuthentication'' |+|UsePAM|yes|no|Ce paramètre permet l'authentification par mot de passe avec ''KbdInteractiveAuthentication''((anciennement ''ChallengeResponseAuthentication'')) et ''PasswordAuthentication''. Il faut absolument le [[#Désactiver toutes les autres méthodes d'authentification|désactiver]] dans le cadre d'une authentification par clé ! |
 |''AllowUsers''|Ligne absente (autorisé à tous)|ajouter la ligne avec valeur(s) : ''AllowUsers Alice Bob'' |Spécifie les //logins// des seuls utilisateurs autorisés à se connecter. //Idéal pour ouvrir un compte FTP à un ami tout en restreignant l'accès au shell via SSH//.| |''AllowUsers''|Ligne absente (autorisé à tous)|ajouter la ligne avec valeur(s) : ''AllowUsers Alice Bob'' |Spécifie les //logins// des seuls utilisateurs autorisés à se connecter. //Idéal pour ouvrir un compte FTP à un ami tout en restreignant l'accès au shell via SSH//.|
 |''DenyUsers''|Ligne absente (interdit à personne)|Ajouter la ligne avec valeur(s)|Interdit l'accès à SSH aux utilisateurs listés| |''DenyUsers''|Ligne absente (interdit à personne)|Ajouter la ligne avec valeur(s)|Interdit l'accès à SSH aux utilisateurs listés|
Ligne 118: Ligne 115:
 |''DenyGroups''|Ligne absente (interdit à aucun groupe)|Ajouter la ligne avec valeur(s)|Interdit l'accès à SSH aux utilisateurs des groupes listés| |''DenyGroups''|Ligne absente (interdit à aucun groupe)|Ajouter la ligne avec valeur(s)|Interdit l'accès à SSH aux utilisateurs des groupes listés|
 |''ClientAliveInterval''|Ligne absente|Ajouter la ligne avec valeur en secondes : ''ClientAliveInterval 300''|Permet dans certains cas de maintenir une connexion sans coupures| |''ClientAliveInterval''|Ligne absente|Ajouter la ligne avec valeur en secondes : ''ClientAliveInterval 300''|Permet dans certains cas de maintenir une connexion sans coupures|
 +</mobiletable>
  
 Pour plus d'informations consultez ''[[man>sshd_config|man sshd_config]]''. Pour plus d'informations consultez ''[[man>sshd_config|man sshd_config]]''.
Ligne 130: Ligne 128:
  
 Il existe plusieurs sortes de clients : Il existe plusieurs sortes de clients :
-  * Pour **OpenSSH** il s'agit d'une application en ligne de commande fournie par le paquet ''[[pu>openssh-client]]'', installé par défaut sur Ubuntu. Celui-ci donne accès à la [[:console]] distante, comme si elle était locale, via le [[:terminal]]. Voir //[[#Accès au terminal à distance]]//+  * Pour **OpenSSH** il s'agit de la commande ''[[man>ssh]]'' fournie par le paquet ''[[pu>openssh-client]]'', installé par défaut sur Ubuntu. Celle-ci donne accès à la [[:console]] distante, comme si elle était locale, via le [[:terminal]]. Voir //[[#Accès au terminal à distance]]//
-  * On peut aussi utiliser **SSH** pour accéder à des fichiers via le gestionnaire de fichier grâce à [[:SFTP]], voir le chapitre //[[:sftp#clients|clients SFTP]]//. Pour [[:nautilus|GNOME Fichiers]] en particulier, voir le chapitre //[[:sftp#GNOME Fichiers]]//.+  * On peut aussi utiliser **SSH** via le gestionnaire de fichiers grâce à [[:SFTP]], voir le chapitre //[[:sftp#clients|clients SFTP]]//. Pour [[:nautilus|GNOME Fichiers]] en particulier, voir le chapitre //[[:sftp#GNOME Fichiers]]//.
   * On peut aussi télécharger, téléverser ou synchroniser des fichiers grâce à [[#transferts_en_ligne_de_commande|différentes commandes]], ou à **[[:rclone]]**.   * On peut aussi télécharger, téléverser ou synchroniser des fichiers grâce à [[#transferts_en_ligne_de_commande|différentes commandes]], ou à **[[:rclone]]**.
   * D'autres cas d'utilisation ([[:ssh_avance#se_connecter_en_ssh_a_travers_un_mandataire_http_proxy|proxy]] par ex.) sont décrits sur la page //[[:SSH avancé]]//.   * D'autres cas d'utilisation ([[:ssh_avance#se_connecter_en_ssh_a_travers_un_mandataire_http_proxy|proxy]] par ex.) sont décrits sur la page //[[:SSH avancé]]//.
  
-==== Installation du client SSH ====+==== Installation du client en ligne de commande ====
  
-La fonctionnalité //[[#Installation du client SSH|client]]// est fournie par le paquet ''[[apt>openssh-client]]'', qui est installé par défaut sur Ubuntu. Dans le cas contraire, [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>openssh-client]]'', qui fournit la [[:commande shell|commande]] ''[[man>ssh]]''.+La fonctionnalité //[[#Installation du client SSH|client]]// (en ligne de commande) est fournie par le paquet ''[[apt>openssh-client]]'', qui est installé par défaut sur Ubuntu (et sur la plupart des [[:distributions]] Linux).
  
-=== Autres systèmes d'exploitation - hors Linux ===+Dans le cas contraire, [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>openssh-client]]'', qui fournit la [[:commande shell|commande]] ''[[man>ssh]]''
 + 
 +<note tip> 
 +On peut vérifier la version installée avec l'option ''-V''
 +<code bash>ssh -V</code> 
 +</note> 
 + 
 +=== Autres systèmes d'exploitation === 
 + 
 +== Windows ==
  
 <note tips> <note tips>
Ligne 145: Ligne 152:
 </note> </note>
  
-Pour contrôler une machine distante depuis un poste équipé de Windows, on peut aussi installer et utiliser **[[https://putty.org/index.html|PuTTY]]**, qui est publié sous [[wpfr>licence MIT]].+Pour contrôler une machine distante depuis un poste équipé de Windows, le client (ainsi que le serveur) **OpenSSH** sont aussi disponibles nativement sur Windows.((Voir //[[https://www.zebulon.fr/astuces/internet-reseaux/comment-installer-et-utiliser-le-client-ssh-cache-de-windows.html|Comment installer et utiliser le client SSH caché de Windows ?]]//))
  
-Le client (ainsi que le serveur) **OpenSSH** sont aussi disponibles nativement sur Windows.((Voir //[[https://www.zebulon.fr/astuces/internet-reseaux/comment-installer-et-utiliser-le-client-ssh-cache-de-windows.html|Comment installer et utiliser le client SSH caché de Windows ?]]//))+On peut aussi installer et utiliser **[[https://putty.org/index.html|PuTTY]]**, qui est publié sous [[wpfr>licence MIT]].
  
-Il existe aussi des clients SSH pour Android ([[https://f-droid.org/fr/packages/org.connectbot/|ConnectBot]]), iOS, et la pluaprt des systèmes d'exploitation.+== macOS ==
  
-<note tip> +macOS inclut un client SSH disponible depuis le terminal.
-Vérifiez bien qu'aucun [[:pare-feu]] n'est actif sur le serveur SSH //avant// l'installation de SSH. Sans quoi vous ne pourrez pas vous y connecter.+
  
-Pour utiliser SSH derrière un pare-feu, port standard du protocole SSH est le ''22''. +Il existe aussi [[https://sshpilot.app/|SSH Pilot]] ([[wpfr>logiciel libre|libre]]) et [[https://termius.com|Termius]] -- qui sont d'ailleurs aussi disponibles sur Linux((Par exemple en [[:Flatpak]] : [[https://flathub.org/fr/apps/io.github.mfat.sshpilot|SSH Pilot]] / [[https://flathub.org/fr/apps/com.termius.Termius|Termius]])). 
-</note>+ 
 +== Smartphones == 
 + 
 +Il existe aussi des clients SSH pour **Android** (voir le dépôt d'applications [[wpfr>logiciel libre|libres]] [[https://search.f-droid.org/?q=ssh&lang=fr|F-Droid]]), **iOS**, et la plupart des systèmes d'exploitation.
  
 ==== Utilisations des clients ==== ==== Utilisations des clients ====
Ligne 165: Ligne 174:
  
   * ''nom_utilisateur'' est le nom d'[[:utilisateur]] à utiliser sur la machine distante   * ''nom_utilisateur'' est le nom d'[[:utilisateur]] à utiliser sur la machine distante
-  * ''hôte'' est le nom d'hôte de la machine distante, qui peut être un nom de domaine, une adresse IPv4, ou un nom [[:zeroconf#mDNS]] ou [[wpfr>NetBIOS]] en local+  * ''hôte'' est le [[:réseau#nom d'hôte]] de la machine distante, qui peut être un nom de domaine, une adresse IPv4, ou un nom [[:zeroconf#mDNS]] ou [[wpfr>NetBIOS]] en local (voir //[[:réseau#Nom d'hôte]]//)
   * ''numéro de port'' est le numéro du port sur lequel écoute le serveur.   * ''numéro de port'' est le numéro du port sur lequel écoute le serveur.
  
Ligne 199: Ligne 208:
  
   * ''nom_utilisateur'' est le nom d'[[:utilisateur]] à utiliser sur la machine distante   * ''nom_utilisateur'' est le nom d'[[:utilisateur]] à utiliser sur la machine distante
-  * ''hôte'' est le nom d'hôte de la machine distante, qui peut être un nom de domaine, une adresse IP (IPv4 ou IPv6 cette fois), ou un nom [[:zeroconf#mDNS]] ou [[wpfr>NetBIOS]] en local+  * ''hôte'' est le [[:réseau#nom d'hôte]] de la machine distante, qui peut être un nom de domaine, une adresse IP (IPv4 ou IPv6 cette fois), ou un nom [[:zeroconf#mDNS]] ou [[wpfr>NetBIOS]] en local (voir //[[:réseau#Nom d'hôte]]//)
   * ''numéro de port'' est le numéro du port sur lequel écoute le serveur.   * ''numéro de port'' est le numéro du port sur lequel écoute le serveur.
  
Ligne 325: Ligne 334:
   * Il est [[:sauvegarde|sauvegardé]] avec le reste de son [[:arborescence#répertoire personnel]] (''[[:arborescence#répertoire personnel|$HOME]]'') et ainsi très simple à conserver ou à migrer d'un système à un autre.   * Il est [[:sauvegarde|sauvegardé]] avec le reste de son [[:arborescence#répertoire personnel]] (''[[:arborescence#répertoire personnel|$HOME]]'') et ainsi très simple à conserver ou à migrer d'un système à un autre.
  
-Il est possible de configurer le client de manière indépendante pour chaque serveur (ou chaque hôte), et au passage de créer facilement des "alias" pour ces hôtes avec ces configurations, en spécifiant un ''Host'' (nom d'hôte à passer à la commande ''[[man>ssh.1|ssh]]'') différent du ''HostName'' (nom d'hôte réel).\\+Il est possible de configurer le client de manière indépendante pour chaque serveur (ou chaque hôte), et au passage de créer facilement des "alias" pour ces hôtes avec ces configurations, en spécifiant un ''Host'' ([[:réseau#nom d'hôte]] à passer à la commande ''[[man>ssh.1|ssh]]'') différent du ''HostName'' ([[:réseau#nom d'hôte]] réel).\\
 Par exemple : Par exemple :
 <file> <file>
Ligne 349: Ligne 358:
  
 <note> <note>
-Dans le cas où on utilise un //wildcard// ''*'' dans le nom de l'hôte pour gérer un ensemble de serveurs sur des domaines proches par ex., l'ordre dans lequel on les déclare peut avoir son importance : il faut commencer par les plus spécifiques, sans quoi ceux-ci ne seront jamais pris en compte.\\+Dans le cas où on utilise un //wildcard// ''*'' dans la valeur de ''Host'' pour gérer un ensemble de serveurs sur des domaines proches par ex., l'ordre dans lequel on les déclare peut avoir son importance : il faut commencer par les plus spécifiques, sans quoi ceux-ci ne seront jamais pris en compte.\\
 Par ex. : Par ex. :
 <file> <file>
Ligne 363: Ligne 372:
 ===== Authentification  ===== ===== Authentification  =====
  
-<note warning>Si vous ouvrez votre serveur SSH sur Internet, par exemple pour y accéder depuis l'ordinateur d'un ami(e) ou lui permettre d'accéder à certains de vos fichiers, n'oubliez JAMAIS qu'Internet est parcouru par des robots qui scannent et testent en permanence tous les serveurs disponibles (SSH et autres) et qu'ils vont faire des tentatives pour trouver vos mots de passe de compte (on parle d'[[wpfr>attaque par force brute]]). L'usage des clés est donc très fortement recommandé.+<note warning>Si vous ouvrez votre serveur SSH sur Internet, par exemple pour y accéder depuis l'ordinateur d'un ami(e) ou lui permettre d'accéder à certains de vos fichiers, n'oubliez JAMAIS qu'Internet est parcouru par des robots qui scannent et testent en permanence tous les serveurs disponibles (SSH et autres) et qu'ils vont faire des tentatives pour trouver vos mots de passe de compte (on parle d'[[wpfr>attaque par force brute]]). L'usage des clés, et la [[#désactiver toutes les autres méthodes d'authentification|désactivation de toutes les autres méthodes d'authentification]] est donc très fortement recommandé.
  
 Si vous ne pouvez vraiment pas faire autrement, utilisez des mots de passe longs et complexes ainsi qu'un système de protection tel que [[:fail2ban]] qui permet de bannir des adresses IP au bout d'un certain nombre de tentatives erronées.\\ Si vous ne pouvez vraiment pas faire autrement, utilisez des mots de passe longs et complexes ainsi qu'un système de protection tel que [[:fail2ban]] qui permet de bannir des adresses IP au bout d'un certain nombre de tentatives erronées.\\
Ligne 397: Ligne 406:
  
 === Mise en place des clés === === Mise en place des clés ===
 +
 +<note warning>
 +Après avoir mis en place une authentification par clé fonctionnelle, n'oubliez pas de [[#désactiver toutes les autres méthodes d'authentification]], afin de garantir la [[:sécurité]] de votre serveur.
 +</note>
  
 À moins que vous n'ayez déjà un couple de clés, vous devez d'abord en créer.\\ À moins que vous n'ayez déjà un couple de clés, vous devez d'abord en créer.\\
Ligne 466: Ligne 479:
 === Éléments importants en lien avec l'usage des clés === === Éléments importants en lien avec l'usage des clés ===
  
-== Authentification par mot de passe et / ou par clé ==+== Désactiver toutes les autres méthodes d'authentification ==
  
 Vous pouvez avoir avec SSH les deux modes d'authentifications actifs en même temps, par mot de passe et par clés. Vous pouvez avoir avec SSH les deux modes d'authentifications actifs en même temps, par mot de passe et par clés.
  
-Vous pouvez vouloir neutraliser l'authentification par mot de passe pour des raisons de sécurité, pour cela il faut modifier le fichier de configuration ''/etc/ssh/sshd_config'' de la manière suivante :+Or pour garantir la [[:sécurité]] du serveur, il est indispensable de neutraliser les méthodes d'authentification autre que par paire de clés !\\ 
 +Pour celamodifier le fichier de configuration ''/etc/ssh/sshd_config'' de la manière suivante :
  
-- A la ligne ''PasswordAuthentication'' mettre ''no''+  * À la ligne ''PasswordAuthentication'' remplacer ''yes'' par ''no''
 +  * A la ligne ''UsePAM'' remplacer ''yes'' par ''no''
 + 
 +<note important> 
 +Il est aussi généralement nécessaire, de désactiver l'authentification directe avec l'utilisateur ''[[:root]]'', toujours pour garantir la [[:sécurité]] du serveur : 
 +  PermitRootLogin no 
 +</note>
  
 <note> <note>
-N'oubliez pas de [[#relancer]] le service ssh sur votre serveur après avoir changé la configuration.+N'oubliez pas de [[#relancer]] le service SSH sur votre serveur après avoir changé la configuration.
 </note> </note>