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édentes Révision précédente
Prochaine révision
Révision précédente
ssh [Le 27/03/2022, 13:59]
bruno [Voir aussi] nettoyage des liens cassés / obsolètes + grosse erreur sur le site officel !
ssh [Le 27/02/2024, 11:53] (Version actuelle)
bruno cosmétique
Ligne 1: Ligne 1:
 +<note warning>​Ce document ne traite traite pas le fonctionnement du serveur SSH de windows</​note>​
  
 {{tag>​administration sécurité serveur}} {{tag>​administration sécurité serveur}}
Ligne 10: Ligne 11:
 {{ :​logo_openssh.png|Puffy la mascotte de OpenSSH}} {{ :​logo_openssh.png|Puffy la mascotte de OpenSSH}}
  
-[[wpfr>​Secure_Shell|SSH]] est un protocole permettant d'​établir une communication chiffrée, ​donc sécurisée (on parle parfois ​de //tunnel//)sur un réseau informatique (intranet ou Internet) entre une machine locale (le //client//) et une machine distante (le //serveur//).+[[wpfr>​Secure_Shell|SSH]] est un protocole ​réseau ​permettant d'​établir une communication chiffrée ​entre deux machines. Il est notamment utilisé pour se connecter à distance à un serveur SSHy exécuter des commandes ou transférer des fichiers ​de manière sécurisée. 
 + 
 + 
 +Par défaut, un serveur SSH écoute sur le port TCP standard 22. Un programme ​client ​SSH est généralement utilisé pour établir des connexions avec le serveur ​qui exécute un démon sshd.
  
-La sécurité du chiffrement peut être assurée par différentes méthodes, entre autre par [[#​authentification_par_mot_de_passe|mot de passe]] ou par un [[#​authentification_par_un_systeme_de_cles_publiqueprivee|système de clés publique / privée]] (mieux sécurisé, on parle alors de [[wpfr>​cryptographie asymétrique]]). 
  
 SSH remplace de manière sécurisée : SSH remplace de manière sécurisée :
Ligne 29: Ligne 32:
   * Déporter de nombreux autres services ou protocoles (voir [[:ssh avancé|SSH Avancé]]).   * Déporter de nombreux autres services ou protocoles (voir [[:ssh avancé|SSH Avancé]]).
  
-**OpenSSH** est la solution la plus utilisée pour mettre en place une communication SSH via un ensemble d'​outils libres dont certains sont installés par défaut sur Ubuntu.\\  +**OpenSSH** est la solution la plus utilisée pour mettre en place une communication SSH via un ensemble d'​outils libres dont certains sont installés par défaut sur Ubuntu. 
-Comme son nom l'​indique,​ **OpenSSH** est développé dans le cadre du projet [[http://​www.openbsd.org|OpenBSD]].\\ +Comme son nom l'​indique,​ **OpenSSH** est développé dans le cadre du projet [[http://​www.openbsd.org|OpenBSD]].
 C'est cette solution que nous traiterons sur cette page. C'est cette solution que nous traiterons sur cette page.
  
 ===== Installation ===== ===== Installation =====
 Si vous voulez accéder à un ordinateur (votre ordinateur personnel, votre serveur local, un serveur distant dont vous effectuez l'​administration,​ etc.). Si vous voulez accéder à un ordinateur (votre ordinateur personnel, votre serveur local, un serveur distant dont vous effectuez l'​administration,​ etc.).
-Vous devez installer **[[apt>​openssh-server]]** sur la machine à joindre en SSH,  cette machine sera le "​serveur"​ SSH. +Vous devez installer **[[apt>​openssh-server]]** sur la machine à joindre en SSH,  cette machine sera le "​serveur"​ SSH.
  
 La partie cliente est fournie par le paquet [[apt>​openssh-client]],​ qui est installé par défaut sous Ubuntu. La partie cliente est fournie par le paquet [[apt>​openssh-client]],​ qui est installé par défaut sous Ubuntu.
  
-Vous pouvez vérifier ce qui est déjà installé en tapant ces commandes :  +Vous pouvez vérifier ce qui est déjà installé en tapant ces commandes : 
-<​code>​ssh -V</​code>​+<​code ​bash>ssh -V</​code>​
 qui retourne une ligne du type : qui retourne une ligne du type :
-<​code>​OpenSSH_6.6p1 Ubuntu-2ubuntu1, OpenSSL 1.0.1f 6 Jan 2014</​code>​+<​code>​OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020</​code>​
 et aussi la commande suivante pour connaître la version de la bibliothèque ssl: et aussi la commande suivante pour connaître la version de la bibliothèque ssl:
-<​code>​dpkg -l libssl*</​code>​+<​code ​bash>dpkg -l libssl*</​code>​
 ==== Installation du serveur SSH ==== ==== Installation du serveur SSH ====
  
Ligne 56: Ligne 59:
  
 Vous trouverez en fin de cette page plus d'​information sur la [[#​Configuration du serveur SSH]], peu sécurisée par défaut. Vous trouverez en fin de cette page plus d'​information sur la [[#​Configuration du serveur SSH]], peu sécurisée par défaut.
 +
 +== Vérifier le status ​ ==
 +Saisissez dans un [[:​terminal]] la [[:​commande_shell|commande]] suivante :
 +<code bash>​sudo systemctl status ssh</​code>​
  
 == Activer == == Activer ==
 Saisissez dans un [[:​terminal]] la [[:​commande_shell|commande]] suivante : Saisissez dans un [[:​terminal]] la [[:​commande_shell|commande]] suivante :
-<​code>​sudo systemctl start ssh</​code>​+<​code ​bash>sudo systemctl start ssh</​code>​
  
 == Arrêter == == Arrêter ==
-<​code>​sudo systemctl stop ssh</​code>​+<​code ​bash>sudo systemctl stop ssh</​code>​
  
 == Relancer == == Relancer ==
-<​code>​sudo systemctl restart ssh</​code>​+<​code ​bash>sudo systemctl restart ssh</​code>​
  
 ==== Installation du client SSH ==== ==== Installation du client SSH ====
Ligne 118: Ligne 125:
 [[:​remmina|Remmina]] est actuellement l'​outil le plus complet pour la gestion des bureaux à distance. [[:​remmina|Remmina]] est actuellement l'​outil le plus complet pour la gestion des bureaux à distance.
  
-==== Affichage graphique déporté (Tunneling serveurX par ssh) - Accéder aux applications graphiques ==== +==== Affichage graphique déporté (Tunneling serveurX par ssh) - Accéder aux applications graphiques ====
  
 La commande ssh offre une fonctionnalité intéressante:​ la possibilité d'​exécuter des applications X-Window à distance, ce qui est bien pratique pour travailler à distance, partager une machine ou simplement effectuer des tâches d'​administration. La commande ssh offre une fonctionnalité intéressante:​ la possibilité d'​exécuter des applications X-Window à distance, ce qui est bien pratique pour travailler à distance, partager une machine ou simplement effectuer des tâches d'​administration.
Ligne 207: Ligne 214:
  
 <note important>​Lorsque l'on copie des fichiers ou des répertoires sur d'​autres machines, ne pas oublier que les fichiers ou répertoires deviendront propriété du compte avec lequel on se connecte à distance. Pour préserver les propriétaire et groupe de chaque fichier ou répertoire,​ il sera donc utile de recourir à un logiciel tel que [[:​tar|tar]] pour enregistrer l'​intégralité des informations relatives à ce que l'on transfère.</​note>​ <note important>​Lorsque l'on copie des fichiers ou des répertoires sur d'​autres machines, ne pas oublier que les fichiers ou répertoires deviendront propriété du compte avec lequel on se connecte à distance. Pour préserver les propriétaire et groupe de chaque fichier ou répertoire,​ il sera donc utile de recourir à un logiciel tel que [[:​tar|tar]] pour enregistrer l'​intégralité des informations relatives à ce que l'on transfère.</​note>​
 +==== Transfert - synchronisation de répertoire ====
 +Vous pouvez sécuriser un répertoire en le dupliquant à travers le réseau en utilisant la commande [[:​rsync|rsync]].
 +
 +Exemple1: Pour transférer le home d'un utilisateur **a**  hébergé dans la machine **b** dont l'​adresse IP est enregistrée dans le  fichier [[:​hosts|/​etc/​hosts]] en excluant quelques fichiers avec un résultat ​ à mettre dans le répertoire /MAISON qui sera automatiquement créé. ​
 +<code bash> sudo rsync -ahv --progress --stats --exclude={'​.*','​persistence.*'​} ​ a@b:/home/a /MAISON 2>​err.log ​
 +cat err.log</​code>​
 +
  
 ==== Monter un répertoire distant, navigation via SFTP (Secure File Transfer Protocol) ==== ==== Monter un répertoire distant, navigation via SFTP (Secure File Transfer Protocol) ====
Ligne 223: Ligne 237:
 <​code>​ssh://​username@hostname:​port/​le/​chemin/​voulu/</​code>​ <​code>​ssh://​username@hostname:​port/​le/​chemin/​voulu/</​code>​
  
-Il est également possible d'y avoir accès dans Nautilus par  le menu //Fichier ​-> Se connecter à un serveur...//​ et choisir le ''​Type de service''​ « ssh ».+Il est également possible d'y avoir accès dans Nautilus par  le menu //Fichiers -> Autres emplacements ​-> Se connecter à un serveur...//​ et choisir le ''​Type de service''​ « ssh ».
  
 === Dolphin ou Konqueror === === Dolphin ou Konqueror ===
Ligne 256: Ligne 270:
 Dans la barre d'​adresse de [[:​PCManFM|PCManFM]],​ rentrez ceci : Dans la barre d'​adresse de [[:​PCManFM|PCManFM]],​ rentrez ceci :
 <​code>​sftp://​nom_utilisateur_distant@IPduSERVEUR/​dossier/​que/​je/​veux</​code>​ <​code>​sftp://​nom_utilisateur_distant@IPduSERVEUR/​dossier/​que/​je/​veux</​code>​
 +
 ==== Monter un répertoire distant de manière automatique (SFTP grâce à SSHFS) ==== ==== Monter un répertoire distant de manière automatique (SFTP grâce à SSHFS) ====
  
Ligne 311: Ligne 326:
 Votre clef publique a été créée avec la nouvelle clef privée. Elles sont habituellement localisées dans le [[:​fichier_cache|dossier caché]] **~/.ssh**: Votre clef publique a été créée avec la nouvelle clef privée. Elles sont habituellement localisées dans le [[:​fichier_cache|dossier caché]] **~/.ssh**:
  
-**~/​.ssh/​id_ed25519.pub** pour la clé publique et **~/​.ssh/​id_ed25519** pour la clé privée ou **~/​.ssh/​id_ras.pub* et **~/​.ssh/​id_rsa* si vous avez utilisé l'​algorithme RSA.+**~/​.ssh/​id_ed25519.pub** pour la clé publique et **~/​.ssh/​id_ed25519** pour la clé privée ou **~/​.ssh/​id_ras.pub** et **~/​.ssh/​id_rsa** si vous avez utilisé l'​algorithme RSA.
  
  
Ligne 324: Ligne 339:
 Si vous avez : <​code>​Could not open a connection to your authentication agent.</​code>​ alors faire <​code>​eval "​$(ssh-agent)"</​code>​ puis de nouveau <​code>​ssh-add</​code>​ Si vous avez : <​code>​Could not open a connection to your authentication agent.</​code>​ alors faire <​code>​eval "​$(ssh-agent)"</​code>​ puis de nouveau <​code>​ssh-add</​code>​
 </​note>​ </​note>​
-<note tip>​pistes pour débugger :  +<note tip>​pistes pour débugger : 
-  * forcer l'​utilisation uniquement de clefs dans la commande ssh : ssh **-o PubkeyAuthentication=yes -o PreferredAuthentications=publickey** +  * forcer l'​utilisation uniquement de clefs dans la commande ssh : <​code>​ssh -o PubkeyAuthentication=yes -o PreferredAuthentications=publickey</​code>​ 
-  * utiliser les options **-v** ou **-vv** ou **-vvv** dans le commande ssh +  * utiliser les options **-v** ou **-vv** ou **-vvv** dans le commande ssh
 </​note>​ </​note>​
 Il faut maintenant envoyer au serveur votre clé publique pour qu'il puisse vous chiffrer des messages. Il faut maintenant envoyer au serveur votre clé publique pour qu'il puisse vous chiffrer des messages.
Ligne 333: Ligne 348:
   * Coté client : Il faut que le client ait mis sa clé privée en $HOME/.ssh/ (côté client).   * Coté client : Il faut que le client ait mis sa clé privée en $HOME/.ssh/ (côté client).
   * Coté client : la clé doit être connue de l'​agent ssh (ssh-add)   * Coté client : la clé doit être connue de l'​agent ssh (ssh-add)
-  * Coté client : Le répertoire $HOME/.ssh doit appartenir au propriétaire de $HOME et les clés privées ne doivent être accessibles que par leur propriétaire (mode rw------ ou 600 au maximum)+  * Coté client : Le répertoire $HOME/.ssh doit appartenir au propriétaire de $HOME et les clés privées ne doivent être accessibles que par leur propriétaire (mode %%rw------%% ou 600 au maximum)
   * Coté serveur : La clé publique du client doit se trouver dans le fichier $HOME/​.ssh/​authorized_keys du serveur.   * Coté serveur : La clé publique du client doit se trouver dans le fichier $HOME/​.ssh/​authorized_keys du serveur.
-  * Coté serveur : il vaut mieux refuser l'​accès par mot de passe ("​PasswordAuthentication no" dans /​etc/​ssh/​sshd_config du serveur) ​+  * Coté serveur : il vaut mieux refuser l'​accès par mot de passe ("​PasswordAuthentication no" dans /​etc/​ssh/​sshd_config du serveur)
 </​note>​ </​note>​
  
Ligne 372: Ligne 387:
  
 - A la ligne ''​PasswordAuthentication''​ mettre ''​no''​ - A la ligne ''​PasswordAuthentication''​ mettre ''​no''​
-<​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>​
  
 == Vulnérabilité des anciennes clés == == Vulnérabilité des anciennes clés ==
Ligne 390: Ligne 406:
  
 Si ce n'est toujours pas le cas, c'est que le serveur doit être configuré en mode de sécurité strict (c'est le cas par défaut sur Ubuntu).\\ Si ce n'est toujours pas le cas, c'est que le serveur doit être configuré en mode de sécurité strict (c'est le cas par défaut sur Ubuntu).\\
-Effectuez les opérations suivantes : +Effectuez les opérations suivantes :
  
 Sur le serveur : \\ Sur le serveur : \\
Ligne 433: Ligne 449:
 Si vous souhaitez vous connecter par SSH avec une clef publique sur un compte dont le home est chiffré, il est important de faire attention à ce que sur le serveur le fichier/​dossier **.ssh/​authorized_keys** soit à la fois dans le home chiffré et déchiffré. En effet si le fichier authorized_keys est dans le home sous forme chiffré (.private), open_ssh ne pourra pas lire la clef publique attendue. Il faut donc créer un dossier .ssh et y mettre le fichier authorized_keys quand le home est démonté donc chiffré. Cependant, si vous ne le laissez pas aussi dans le home déchiffré et donc monté, la connexion SSH se fera avec la clef publique mais le home ne sera pas déchiffré automatiquement. Si vous souhaitez vous connecter par SSH avec une clef publique sur un compte dont le home est chiffré, il est important de faire attention à ce que sur le serveur le fichier/​dossier **.ssh/​authorized_keys** soit à la fois dans le home chiffré et déchiffré. En effet si le fichier authorized_keys est dans le home sous forme chiffré (.private), open_ssh ne pourra pas lire la clef publique attendue. Il faut donc créer un dossier .ssh et y mettre le fichier authorized_keys quand le home est démonté donc chiffré. Cependant, si vous ne le laissez pas aussi dans le home déchiffré et donc monté, la connexion SSH se fera avec la clef publique mais le home ne sera pas déchiffré automatiquement.
  
-La meilleure solution est de créer des liens virtuels vers un dossier qui n'est pas soumis au chiffrement/​déchiffrement comme expliqué [[https://​rohieb.wordpress.com/​2010/​10/​09/​84/​|ici]] ​+La meilleure solution est de créer des liens virtuels vers un dossier qui n'est pas soumis au chiffrement/​déchiffrement comme expliqué [[https://​rohieb.wordpress.com/​2010/​10/​09/​84/​|ici]]
  
 == Authentification SSH avec plusieurs clés privées == == Authentification SSH avec plusieurs clés privées ==
  
-En principe chaque utilisateur possède une clé privée unique qui lui est propre, et envoie sa clé publique à autant de serveurs qu'il le souhaite.\\ +En principe chaque utilisateur possède une clé privée unique qui lui est propre, et envoie sa clé publique à autant de serveurs qu'il le souhaite.
 Cependant il est techniquement faisable de posséder plusieurs clés privées (mais c'est moins pratique et ça n'est pas plus sécurisé). Cependant il est techniquement faisable de posséder plusieurs clés privées (mais c'est moins pratique et ça n'est pas plus sécurisé).
  
Ligne 499: Ligne 515:
   * [[https://​www.ssi.gouv.fr/​uploads/​2014/​01/​NT_OpenSSH.pdf|note ministérielle du 17 août 2015]] : Recommandations pour un usage sécurisé d'​(Open)SSH   * [[https://​www.ssi.gouv.fr/​uploads/​2014/​01/​NT_OpenSSH.pdf|note ministérielle du 17 août 2015]] : Recommandations pour un usage sécurisé d'​(Open)SSH
   * [[https://​infosec.mozilla.org/​guidelines/​openssh|Guide de Mozilla pour la configuration d'​OpenSSH]]   * [[https://​infosec.mozilla.org/​guidelines/​openssh|Guide de Mozilla pour la configuration d'​OpenSSH]]
-  * [[http://​www.it-connect.fr/​cours-tutoriels/​administration-systemes/​linux/​ssh/​|Tutoriels sur l'​utilisation et la configuration avancée de SSH]] sur IT-Connect+  * [[https://​www.it-connect.fr/​cours-tutoriels/​administration-systemes/​linux/​ssh/​|Tutoriels sur l'​utilisation et la configuration avancée de SSH]] sur IT-Connect
   * [[https://​www.ssh-audit.com/​hardening_guides.html|Guide de ssh-audit pour blinder la configuration]]   * [[https://​www.ssh-audit.com/​hardening_guides.html|Guide de ssh-audit pour blinder la configuration]]
   * [[:​ssh_avance]] Fixme !   * [[:​ssh_avance]] Fixme !
  
 //​Contributeurs:​ [[:​utilisateurs:​sx1]],​ [[:​utilisateurs:​krodelabestiole]],​ [[:​utilisateurs:​Zer00CooL]],​ [[:​utilisateurs:​bruno]]//​ //​Contributeurs:​ [[:​utilisateurs:​sx1]],​ [[:​utilisateurs:​krodelabestiole]],​ [[:​utilisateurs:​Zer00CooL]],​ [[:​utilisateurs:​bruno]]//​
  • ssh.1648382341.txt.gz
  • Dernière modification: Le 27/03/2022, 13:59
  • par bruno