{"id":302,"date":"2026-04-08T07:46:41","date_gmt":"2026-04-08T05:46:41","guid":{"rendered":"https:\/\/pandack.fr\/?pandack_outil=ssh"},"modified":"2026-04-08T07:46:41","modified_gmt":"2026-04-08T05:46:41","slug":"ssh","status":"publish","type":"pandack_outil","link":"https:\/\/pandack.fr\/?pandack_outil=ssh","title":{"rendered":"ssh"},"content":{"rendered":"<h2>\ud83d\udccb Fiche Outil : ssh<\/h2>\n<hr>\n<div class=\"callout callout--warning\">\n<div class=\"callout__title\">\ud83d\udccb Note<\/div>\n<div class=\"callout__content\">\n<p>Le protocole <strong>SSH<\/strong> est la porte d&rsquo;entr\u00e9e principale pour l&rsquo;administration de serveurs distants de mani\u00e8re chiffr\u00e9e.<\/p>\n<p>En cybers\u00e9curit\u00e9 et administration syst\u00e8me, sa ma\u00eetrise est indispensable pour :<\/p>\n<ol>\n<li><strong>L&rsquo;acc\u00e8s au syst\u00e8me<\/strong> (Shell) pour l&rsquo;administration ou la post-exploitation.<\/li>\n<li><strong>La s\u00e9curisation (Hardening)<\/strong> pour se pr\u00e9munir contre les compromissions et attaques par force brute.<\/li>\n<li><strong>Le contournement r\u00e9seau (Pivoting\/Port Forwarding)<\/strong> pour cr\u00e9er des tunnels s\u00e9curis\u00e9s vers des services internes.<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<hr>\n<div class=\"callout callout--quote\">\n<div class=\"callout__title\">Syntaxe G\u00e9n\u00e9rale<\/div>\n<div class=\"callout__content\">\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh &lt;utilisateur&gt;@&lt;IP&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr>\n<h2>1. Options de Commandes &amp; Outils Associ\u00e9s<\/h2>\n<p>Il est important de distinguer la commande cliente <code>ssh<\/code> des outils de gestion de cl\u00e9s et d&rsquo;administration.<\/p>\n<table>\n<thead>\n<tr>\n<th>Commande \/ Option<\/th>\n<th>Description<\/th>\n<th>Utilit\u00e9 contexte<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ssh -p [port]<\/code><\/td>\n<td>Sp\u00e9cifie le port de connexion (d\u00e9faut: 22).<\/td>\n<td><strong>Indispensable<\/strong> \ud83d\udfe2. Utilis\u00e9 si le port par d\u00e9faut a \u00e9t\u00e9 modifi\u00e9.<\/td>\n<\/tr>\n<tr>\n<td><code>ssh -i [cl\u00e9]<\/code><\/td>\n<td>Sp\u00e9cifie le chemin vers la cl\u00e9 priv\u00e9e.<\/td>\n<td><strong>Authentification<\/strong> \ud83d\udfe2. Pour se connecter par chiffrement asym\u00e9trique.<\/td>\n<\/tr>\n<tr>\n<td><code>ssh -o [option]<\/code><\/td>\n<td>Passe une option de configuration \u00e0 la vol\u00e9e.<\/td>\n<td><strong>Test<\/strong> \ud83d\udfe1. Ex: <code>ssh -o PubkeyAuthentication=no<\/code> (force le refus de la cl\u00e9).<\/td>\n<\/tr>\n<tr>\n<td><code>ssh-keygen -t<\/code><\/td>\n<td>G\u00e9n\u00e8re une paire de cl\u00e9s (ex: <code>-t ed25519<\/code>).<\/td>\n<td><strong>Configuration<\/strong> \ud83d\udfe2. Cr\u00e9ation des identifiants cryptographiques.<\/td>\n<\/tr>\n<tr>\n<td><code>ssh-keygen -C<\/code><\/td>\n<td>Ajoute un commentaire \u00e0 la cl\u00e9 publique.<\/td>\n<td><strong>Organisation<\/strong> \u26aa. Permet d&rsquo;identifier la cl\u00e9 (ex: email ou nom d&rsquo;h\u00f4te).<\/td>\n<\/tr>\n<tr>\n<td><code>ssh-copy-id -i<\/code><\/td>\n<td>Transf\u00e8re automatiquement la cl\u00e9 publique.<\/td>\n<td><strong>Confort<\/strong> \ud83d\udd35. Automatise la cr\u00e9ation du <code>.ssh<\/code> et des permissions.<\/td>\n<\/tr>\n<tr>\n<td><code>sshd -t<\/code><\/td>\n<td>Effectue un test de syntaxe de la configuration.<\/td>\n<td><strong>S\u00e9curit\u00e9<\/strong> \ud83d\udd34. D\u00e9tecte les erreurs avant de red\u00e9marrer le service.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>2. Connexions et Tunnels (Port Forwarding)<\/h2>\n<h3>Connexion classique<\/h3>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh utilisateur@192.168.x.x<\/code><\/pre>\n<\/div>\n<h3>Connexion avec Redirection Locale (Local Port Forwarding)<\/h3>\n<p>Permet d&rsquo;acc\u00e9der \u00e0 un service qui n&rsquo;\u00e9coute qu&rsquo;en local (<code>localhost<\/code>) sur la machine distante (ex: une base de donn\u00e9es PostgreSQL).<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -L 1234:localhost:5432 christine@10.129.141.118<\/code><\/pre>\n<\/div>\n<p><em>Action : Cette commande relie le port local <code>1234<\/code> de la machine attaquante\/admin au port <code>5432<\/code> de la cible. En laissant ce terminal ouvert, il est possible de se connecter localement :<\/em><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">psql -U christine -h localhost -p 1234<\/code><\/pre>\n<\/div>\n<h2>3. Authentification par Cl\u00e9s (G\u00e9n\u00e9ration et D\u00e9ploiement)<\/h2>\n<p>L&rsquo;utilisation de paires de cl\u00e9s asym\u00e9triques remplace l&rsquo;authentification classique par mot de passe. L&rsquo;algorithme <strong>ed25519<\/strong> est le standard actuel recommand\u00e9 pour sa s\u00e9curit\u00e9 et sa rapidit\u00e9.<\/p>\n<h3>\u00c9tape A : G\u00e9n\u00e9rer la paire de cl\u00e9s (Machine Locale)<\/h3>\n<p>Sur Windows (PowerShell Administrateur) ou Linux :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh-keygen -t ed25519 -C &quot;admin@monserveur&quot;\n# OU pour RSA : ssh-keygen -t rsa -b 4096<\/code><\/pre>\n<\/div>\n<div class=\"callout callout--warning\">\n<div class=\"callout__title\">&gt; Il est recommand\u00e9 d&#039;utiliser <code>ed25519<\/code> (plus moderne et s\u00e9curis\u00e9) ou <code>rsa<\/code> (4096 bits).<\/div>\n<div class=\"callout__content\"><\/div>\n<\/div>\n<p>* <strong>Emplacement<\/strong> : Appuyer sur Entr\u00e9e pour accepter le chemin par d\u00e9faut (ex: <code>C:UsersNom.sshid_ed25519<\/code> ou <code>~\/.ssh\/<\/code>).<\/p>\n<p>* <strong>Passphrase<\/strong> : Optionnelle. La laisser vide permet une connexion sans saisie. Ajouter un mot de passe chiffre la cl\u00e9 sur le disque (s\u00e9curit\u00e9 accrue).<\/p>\n<p>* <strong>R\u00e9sultat<\/strong> : Deux fichiers sont cr\u00e9\u00e9s.<\/p>\n<p>* <code>id_ed25519<\/code> \u2794 Cl\u00e9 priv\u00e9e (<strong>\u00c0 garder secr\u00e8te absolue<\/strong>).<\/p>\n<p>* <code>id_ed25519.pub<\/code> \u2794 Cl\u00e9 publique (<strong>\u00c0 transf\u00e9rer sur le serveur<\/strong>).<\/p>\n<p><strong>Arborescence g\u00e9n\u00e9r\u00e9e (ex: Windows) :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">plaintext<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-plaintext\">C:Userston_nom_d_utilisateur.ssh\n\u251c\u2500\u2500 id_rsa        \u2192 cl\u00e9 priv\u00e9e (\u00e0 garder secr\u00e8te)\n\u2514\u2500\u2500 id_rsa.pub    \u2192 cl\u00e9 publique (\u00e0 transf\u00e9rer sur ton serveur)<\/code><\/pre>\n<\/div>\n<h3>\u00c9tape B : Transf\u00e9rer la cl\u00e9 publique sur le serveur cible<\/h3>\n<p><strong>M\u00e9thode 1 : Automatique (Depuis Linux ou Git Bash)<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh-copy-id -i ~\/.ssh\/id_ed25519.pub franck@192.168.x.x<\/code><\/pre>\n<\/div>\n<p><em>Cette commande cr\u00e9e le dossier <code>.ssh<\/code>, place la cl\u00e9 dans le fichier <code>authorized_keys<\/code> et r\u00e8gle les permissions automatiquement.<\/em><\/p>\n<p><strong>M\u00e9thode 2 : Manuelle via SCP (Depuis Windows vers Linux)<\/strong><\/p>\n<p>Transf\u00e9rer la cl\u00e9 publique vers le r\u00e9pertoire personnel distant :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">scp $env:USERPROFILE.sshid_ed25519.pub franck@192.168.x.x:\/home\/franck\/<\/code><\/pre>\n<\/div>\n<h3>\u00c9tape C : Installation manuelle et gestion des permissions<\/h3>\n<p>Si le transfert a \u00e9t\u00e9 fait via SCP, il faut configurer la cl\u00e9 manuellement sur le serveur cible. Le service SSH v\u00e9rifie rigoureusement les droits d&rsquo;acc\u00e8s : si les fichiers sont trop permissifs, la connexion sera refus\u00e9e.<\/p>\n<p>Se connecter au serveur par mot de passe, puis ex\u00e9cuter :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">mkdir -p ~\/.ssh\ncat ~\/id_ed25519.pub &gt;&gt; ~\/.ssh\/authorized_keys\nchmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/authorized_keys\nrm ~\/id_ed25519.pub<\/code><\/pre>\n<\/div>\n<p>* <strong>Explications techniques :<\/strong><\/p>\n<p>* <code>mkdir -p<\/code> : Cr\u00e9e le dossier parent sans erreur s&rsquo;il existe d\u00e9j\u00e0.<\/p>\n<p>* <code>&gt;&gt;<\/code> : <strong>Crucial<\/strong>. Ajoute (append) la cl\u00e9 \u00e0 la fin du fichier. Utiliser <code>&gt;<\/code> \u00e9craserait toutes les cl\u00e9s existantes.<\/p>\n<p>* <code>chmod 700 \/ 600<\/code> : Rend le dossier et le fichier lisibles uniquement par le propri\u00e9taire.<\/p>\n<p>* <code>rm<\/code> : Supprime le fichier <code>.pub<\/code> r\u00e9siduel pour garder le r\u00e9pertoire propre.<\/p>\n<p><strong>V\u00e9rifier que la cl\u00e9 est bien pr\u00e9sente :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">cat ~\/.ssh\/authorized_keys<\/code><\/pre>\n<\/div>\n<h3>\u00c9tape D : Tester la connexion<\/h3>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -i ~\/.ssh\/id_ed25519 franck@192.168.x.x<\/code><\/pre>\n<\/div>\n<h2>4. Durcissement de la configuration SSH (Hardening)<\/h2>\n<p>La s\u00e9curisation est une \u00e9tape incontournable. Il est interdit d&rsquo;exposer le compte <code>root<\/code> directement sur le r\u00e9seau.<\/p>\n<h3>Pr\u00e9requis : Principe de moindre privil\u00e8ge<\/h3>\n<p>Il faut cr\u00e9er un utilisateur standard qui obtiendra les privil\u00e8ges via <code>sudo<\/code>.<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\"># Cr\u00e9er l&#039;utilisateur et l&#039;ajouter au groupe sudo\nsudo adduser admin\nsudo usermod -aG sudo admin\n\n# Transf\u00e9rer la cl\u00e9 publique vers le nouveau profil\nsudo mkdir -p \/home\/admin\/.ssh\nsudo touch \/home\/admin\/.ssh\/authorized_keys\nsudo cp ~\/.ssh\/authorized_keys \/home\/admin\/.ssh\/authorized_keys\n\n# Appliquer les permissions rigoureuses\nsudo chown -R admin:admin \/home\/admin\/.ssh\nsudo chmod 700 \/home\/admin\/.ssh\nsudo chmod 600 \/home\/admin\/.ssh\/authorized_keys\n\n# V\u00e9rifier les droits du r\u00e9pertoire\nls -ld \/home\/admin\/.ssh<\/code><\/pre>\n<\/div>\n<p><em>(Il faudra ensuite transf\u00e9rer ou copier les cl\u00e9s SSH vers <code>\/home\/admin\/.ssh<\/code> en s&rsquo;assurant de bien modifier le propri\u00e9taire avec <code>sudo chown -R admin:admin \/home\/admin\/.ssh<\/code>).<\/em><\/p>\n<h3>Configuration du service : <code>\/etc\/ssh\/sshd_config<\/code><\/h3>\n<p>Ouvrir le fichier de configuration principal :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<\/div>\n<h4>Tableau des Directives de S\u00e9curit\u00e9<\/h4>\n<table>\n<thead>\n<tr>\n<th>Directive<\/th>\n<th>Valeur<\/th>\n<th>Explication de la mesure de s\u00e9curit\u00e9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>Port<\/code><\/td>\n<td><code>2222<\/code><\/td>\n<td><strong>Obfuscation<\/strong>. Modifie le port par d\u00e9faut pour contrer les scans automatis\u00e9s basiques.<\/td>\n<\/tr>\n<tr>\n<td><code>PermitRootLogin<\/code><\/td>\n<td><code>no<\/code><\/td>\n<td><strong>Critique<\/strong>. Interdit la connexion directe au super-administrateur.<\/td>\n<\/tr>\n<tr>\n<td><code>PasswordAuthentication<\/code><\/td>\n<td><code>no<\/code><\/td>\n<td><strong>Critique<\/strong>. Interdit les mots de passe. Rend les attaques par force brute impossibles.<\/td>\n<\/tr>\n<tr>\n<td><code>PubkeyAuthentication<\/code><\/td>\n<td><code>yes<\/code><\/td>\n<td>Autorise l&rsquo;authentification cryptographique (Cl\u00e9s SSH).<\/td>\n<\/tr>\n<tr>\n<td><code>AllowUsers<\/code><\/td>\n<td><code>admin<\/code><\/td>\n<td><strong>Restriction<\/strong>. Liste blanche stricte : seul cet utilisateur a le droit de se connecter.<\/td>\n<\/tr>\n<tr>\n<td><code>MaxAuthTries<\/code><\/td>\n<td><code>3<\/code><\/td>\n<td>Limite les tentatives d&rsquo;authentification avant de fermer la connexion.<\/td>\n<\/tr>\n<tr>\n<td><code>LoginGraceTime<\/code><\/td>\n<td><code>30<\/code><\/td>\n<td>Temps maximum (secondes) accord\u00e9 pour r\u00e9ussir l&rsquo;authentification.<\/td>\n<\/tr>\n<tr>\n<td><code>ClientAliveInterval<\/code><\/td>\n<td><code>300<\/code><\/td>\n<td>D\u00e9connecte automatiquement les sessions inactives (ici 5 minutes).<\/td>\n<\/tr>\n<tr>\n<td><code>ClientAliveCountMax<\/code><\/td>\n<td><code>0<\/code><\/td>\n<td>S\u00e9curit\u00e9 compl\u00e9mentaire pour les sessions fant\u00f4mes.<\/td>\n<\/tr>\n<tr>\n<td><code>X11Forwarding<\/code><\/td>\n<td><code>no<\/code><\/td>\n<td><strong>Surface d&rsquo;attaque<\/strong>. D\u00e9sactive le transfert d&rsquo;interface graphique si inutile.<\/td>\n<\/tr>\n<tr>\n<td><code>AllowTcpForwarding<\/code><\/td>\n<td><code>no<\/code><\/td>\n<td>Interdit la cr\u00e9ation de tunnels de rebond (\u00e0 n&rsquo;utiliser que si strict n\u00e9cessaire).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>Note sur les environnements Cloud : Il faut parfois v\u00e9rifier si d&rsquo;autres fichiers surchargent ces param\u00e8tres :<\/em><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo grep -Ri PasswordAuthentication \/etc\/ssh\n# Ex: sudo nano \/etc\/ssh\/sshd_config.d\/50-cloud-init.conf<\/code><\/pre>\n<\/div>\n<h3>Application et Gestion du Pare-Feu<\/h3>\n<p>Avant de red\u00e9marrer le service, v\u00e9rifier la syntaxe et mettre \u00e0 jour le pare-feu (UFW ou Iptables) si le port a \u00e9t\u00e9 chang\u00e9.<\/p>\n<p><strong>Mise \u00e0 jour Pare-feu (Exemple Port 2222) :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\"># Avec UFW\nsudo ufw allow 2222\/tcp\n\n# Avec Iptables\nsudo iptables -A INPUT -p tcp -s 10.10.20.0\/24 --dport 2222 -j ACCEPT\nsudo iptables -v -n -L --line-numbers  # Trouver le num\u00e9ro de la r\u00e8gle port 22\nsudo iptables -D INPUT 3               # Supprimer l&#039;ancienne r\u00e8gle<\/code><\/pre>\n<\/div>\n<p><strong>Validation et Red\u00e9marrage :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo sshd -t\nsudo systemctl daemon-reload\nsudo systemctl restart ssh<\/code><\/pre>\n<\/div>\n<h2>V\u00e9rification &amp; D\u00e9pannage<\/h2>\n<h3>V\u00e9rifier la configuration active en m\u00e9moire<\/h3>\n<p>Pour s&rsquo;assurer que le service a bien pris en compte la d\u00e9sactivation des mots de passe et du compte root :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo sshd -T | egrep -i &#039;passwordauthentication|pubkeyauthentication|permitrootlogin&#039;<\/code><\/pre>\n<\/div>\n<h3>Tester l&rsquo;impossibilit\u00e9 de se connecter par mot de passe<\/h3>\n<p>Cette commande force le client \u00e0 utiliser un mot de passe et doit imp\u00e9rativement retourner l&rsquo;erreur <code>Permission denied (publickey)<\/code>.<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -v -o PreferredAuthentications=password -o PubkeyAuthentication=no admin@10.0.0.100<\/code><\/pre>\n<\/div>\n<h3>Supprimer une ancienne empreinte (Host Key Verification Failed)<\/h3>\n<p>Si le serveur distant a \u00e9t\u00e9 r\u00e9install\u00e9, son empreinte cryptographique change. SSH bloque la connexion par s\u00e9curit\u00e9. Il faut nettoyer le fichier local :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh-keygen -R 192.168.1.x<\/code><\/pre>\n<\/div>\n<h3>Connexion SSH lors de la cr\u00e9ation d&rsquo;un conteneur<\/h3>\n<p>Lors du d\u00e9ploiement d&rsquo;un nouveau conteneur en laboratoire, il est souvent n\u00e9cessaire d&rsquo;activer temporairement la connexion du compte <code>root<\/code> par mot de passe pour effectuer la configuration initiale.<\/p>\n<p><strong>Sur le serveur (dans le conteneur) :<\/strong> Cette commande <code>sed<\/code> modifie le fichier de configuration \u00e0 la vol\u00e9e pour autoriser <code>root<\/code>, puis le service est red\u00e9marr\u00e9.<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo sed -i &#039;s\/^#?PermitRootLogin .*\/PermitRootLogin yes\/&#039; \/etc\/ssh\/sshd_config\nsudo systemctl restart ssh<\/code><\/pre>\n<\/div>\n<p><strong>En Local (depuis la machine attaquante\/admin) :<\/strong> Il faut se connecter en utilisant le mot de passe root. L&rsquo;option <code>PubkeyAuthentication=no<\/code> est utilis\u00e9e pour forcer la demande de mot de passe au cas o\u00f9 votre client SSH tenterait automatiquement de pr\u00e9senter une cl\u00e9 cryptographique.<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -o PubkeyAuthentication=no root@10.0.0.99<\/code><\/pre>\n<\/div>\n<h2>Connection SSH avec cl\u00e9 renomm\u00e9 <\/h2>\n<h3>Le fichier de configuration SSH (L&rsquo;approche structurelle)<\/h3>\n<p>Comme bri\u00e8vement \u00e9voqu\u00e9 pr\u00e9c\u00e9demment, la m\u00e9thode la plus propre pour g\u00e9rer plusieurs connexions consiste \u00e0 configurer le client SSH local. Cela permet d&rsquo;associer automatiquement une adresse IP, un utilisateur et une cl\u00e9 sp\u00e9cifique.<\/p>\n<ul>\n<li><strong>Cr\u00e9ation du fichier :<\/strong> Il faut cr\u00e9er un fichier nomm\u00e9 exactement <code>config<\/code> (sans aucune extension comme <code>.txt<\/code>) dans le r\u00e9pertoire <code>C:UsersAdministrateur.ssh<\/code>.<\/li>\n<\/ul>\n<ul>\n<li><strong>\u00c9dition du contenu :<\/strong> Il convient d&rsquo;y ins\u00e9rer les r\u00e8gles de connexion. Par exemple :<\/li>\n<\/ul>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">code<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code>   Host cible-ubuntu\n    HostName 10.10.30.53\n    User franck\n    IdentityFile ~\/.ssh\/id_sshubuntu01<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>R\u00e9sultat :<\/strong> D\u00e8s lors, il suffit de taper la commande <code>ssh cible-ubuntu<\/code>. Le syst\u00e8me lira le fichier de configuration, d\u00e9duira qu&rsquo;il faut joindre l&rsquo;IP <code>10.10.30.53<\/code> avec le compte <code>franck<\/code>, et ira chercher la bonne cl\u00e9 de mani\u00e8re transparente.<\/li>\n<\/ul>\n<h3>Proc\u00e9dure d&rsquo;activation de l&rsquo;agent SSH sous Windows<\/h3>\n<p>Il faut s&rsquo;assurer que la console <strong>PowerShell est ex\u00e9cut\u00e9e avec les privil\u00e8ges Administrateur<\/strong> pour effectuer ces modifications sur le syst\u00e8me.<\/p>\n<ol>\n<li><strong>Modifier le type de d\u00e9marrage du service :<\/strong> La commande suivante modifie la configuration dans le registre Windows pour autoriser le lancement manuel du service.<\/li>\n<\/ol>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">Get-Service ssh-agent | Set-Service -StartupType Manual<\/code><\/pre>\n<\/div>\n<p><em>(Note : Il est possible de remplacer <code>Manual<\/code> par <code>Automatic<\/code> si l&rsquo;objectif est que l&rsquo;agent soit toujours actif au d\u00e9marrage de l&rsquo;ordinateur).<\/em><\/p>\n<ol>\n<li><strong>D\u00e9marrer le service :<\/strong> La commande initiale peut maintenant s&rsquo;ex\u00e9cuter sans erreur.<\/li>\n<\/ol>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">Start-Service ssh-agent<\/code><\/pre>\n<\/div>\n<ol>\n<li><strong>V\u00e9rifier l&rsquo;\u00e9tat :<\/strong> En cybers\u00e9curit\u00e9, il faut toujours v\u00e9rifier qu&rsquo;une action a bien eu le r\u00e9sultat escompt\u00e9. L&rsquo;\u00e9tat renvoy\u00e9 doit \u00eatre <code>Running<\/code>.<\/li>\n<\/ol>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">    Get-Service ssh-agent<\/code><\/pre>\n<\/div>\n<ol>\n<li><strong>Charger la cl\u00e9 priv\u00e9e :<\/strong> Une fois l&rsquo;agent actif en arri\u00e8re-plan, il est pr\u00eat \u00e0 recevoir et \u00e0 m\u00e9moriser la cl\u00e9 d&rsquo;authentification.<\/li>\n<\/ol>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">ssh-add C:UsersAdministrateur.sshid_sshubuntu01<\/code><\/pre>\n<\/div>\n<h2>Int\u00e9gration Avanc\u00e9e (GitHub, VSCode, Obsidian sous Windows)<\/h2>\n<p>Pour l&rsquo;installation d&rsquo;une cl\u00e9 SSH avec git\/github voir <span class=\"wikilink-broken\" title=\"Note non disponible : 2. Commande Git\">2. Commande Git<\/span><\/p>\n<p>Pour ne pas avoir \u00e0 saisir la passphrase de la cl\u00e9 SSH \u00e0 chaque action (Git push, connexion distante VSCode), il convient d&rsquo;activer l&rsquo;Agent SSH sous Windows.<\/p>\n<p><strong>Sous Linux \/ Mac :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">eval &quot;$(ssh-agent -s)&quot; # Lance ssh-agent de fa\u00e7on s\u00e9curis\u00e9e\nssh-add ~\/.ssh\/id_ed25519 # Active la cl\u00e9 SSH\nssh -T git@github.com # Test<\/code><\/pre>\n<\/div>\n<p><strong>Sous Windows (PowerShell Administrateur) :<\/strong><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">Set-Service ssh-agent -StartupType Automatic\nStart-Service ssh-agent\nssh-add &quot;$env:USERPROFILE.sshid_ed25519&quot;\n\n# Forcer Git \u00e0 utiliser le SSH de Windows (VSCode \/ PowerShell)\ngit config --global core.sshCommand &quot;C:\/Windows\/System32\/OpenSSH\/ssh.exe&quot;\ngit config --global gpg.ssh.program &quot;C:\/Windows\/System32\/OpenSSH\/ssh-keygen.exe&quot;\n\nssh -T git@github.com # Test<\/code><\/pre>\n<\/div>\n<p>&#8211;<br \/>\n&#8211;<br \/>\n&#8211;<br \/>\n&#8211;<br \/>\n&#8211;<br \/>\n&#8211;<br \/>\n&#8211;<br \/>\n&#8212;<\/p>\n<p>&#8211;<\/p>\n<h2>OLD VERSION NOTE (A SUPPR)<\/h2>\n<h2>Connection<\/h2>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh christine@10.129.141.118<\/code><\/pre>\n<\/div>\n<h2>Connection en \u201cLocalHost\u201d<\/h2>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -L 1234:localhost:5432 christine@10.129.141.118<\/code><\/pre>\n<\/div>\n<p>puis en laissant la connection active se connecter \u00e0 postsql<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">psql -U christine -h localhost -p 1234<\/code><\/pre>\n<\/div>\n<p>pour les commande sous psql voir <span class=\"wikilink-broken\" title=\"Note non disponible : PSQL\">PSQL<\/span><\/p>\n<h2>Connexion via Cl\u00e9 RSA<\/h2>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">ssh -i id_rsa kenobi@10.10.235.207<\/code><\/pre>\n<\/div>\n<h2>Connexion SSH via chiffrement<\/h2>\n<h3>Etape 1 : G\u00e9n\u00e9rer une paire de cl\u00e9s SSH sur Windows<\/h3>\n<p>Sur windows ouvrir PowerShell en tant qu\u2019administrateur et entrez la commande suivante :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">ssh-keygen<\/code><\/pre>\n<\/div>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">ssh-keygen -t rsa -b 4096<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>Emplacement du fichier<\/strong> : appuie sur <strong>Entr\u00e9e<\/strong> pour le chemin par d\u00e9faut (<code>C:Userston_nom_d_utilisateur.sshid_rsa<\/code>)<\/li>\n<li><strong>Passphrase<\/strong> : si tu veux te connecter <strong>sans rien taper<\/strong>, laisse vide et appuie sur Entr\u00e9e deux fois.<\/li>\n<\/ul>\n<p>    &#8211; Si tu mets un mot de passe ici, il te sera demand\u00e9 \u00e0 chaque connexion.<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">plain<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-plain\">C:Userston_nom_d_utilisateur.ssh\n\u251c\u2500\u2500 id_rsa        \u2192 cl\u00e9 priv\u00e9e (\u00e0 garder secr\u00e8te)\n\u2514\u2500\u2500 id_rsa.pub    \u2192 cl\u00e9 publique (\u00e0 transf\u00e9rer sur ton serveur)<\/code><\/pre>\n<\/div>\n<h3>Etape 2 : Copier la cl\u00e9 publique sur le serveur linux<\/h3>\n<p>Depuis le terminal PowerShell sur Windows (faire soit commande scp ou ssh-copy): <\/p>\n<p>Commande scp (depuis windows)<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">scp $env:USERPROFILE.sshid_rsa.pub franck@192.168.x.x:\/home\/franck\/<\/code><\/pre>\n<\/div>\n<p>Commande ssh-copy-id (depuis linux)<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">ssh-copy-id franck@192.168.x.x<\/code><\/pre>\n<\/div>\n<div class=\"callout callout--danger\">\n<div class=\"callout__title\"><code>ssh-copy-id<\/code> fait tout en une commande : il cr\u00e9e le dossier <code>.ssh<\/code> s\u2019il n\u2019existe pas, place ta cl\u00e9 dans le bon fichier (<code>authorized_keys<\/code>) et r\u00e8gle les bons droits.&lt;br&gt;Sous windows intaller Git Bash : [https:\/\/git-scm.com\/](https:\/\/git-scm.com\/)<\/div>\n<div class=\"callout__content\"><\/div>\n<\/div>\n<h3>Etape 3 : Ajouter la cl\u00e9 publique dans le fichier authorized_keys<\/h3>\n<p>Se connecter sur la machine<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">powershell<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-powershell\">ssh user@192.168.x.x<\/code><\/pre>\n<\/div>\n<p>Une fois connect\u00e9, tape ces commandes <strong>une par une<\/strong> :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">mkdir -p ~\/.ssh\ncat ~\/id_rsa.pub &gt;&gt; ~\/.ssh\/authorized_keys\nchmod 600 ~\/.ssh\/authorized_keys\nchmod 700 ~\/.ssh\nrm ~\/id_rsa.pub<\/code><\/pre>\n<\/div>\n<ul>\n<li><code>mkdir -p ~\/.ssh<\/code> \u2192 cr\u00e9e le dossier <code>.ssh<\/code> si besoin.<\/li>\n<li><code>cat<\/code> \u2192 ajoute ta cl\u00e9 dans le fichier <code>authorized_keys<\/code>.<\/li>\n<li><code>chmod<\/code> \u2192 fixe les bons droits (tr\u00e8s important pour que \u00e7a fonctionne).<\/li>\n<li><code>rm<\/code> \u2192 supprime la cl\u00e9 publique qui tra\u00eenait dans ton <code>\/home<\/code> (plus propre \ud83d\udc4d)<\/li>\n<\/ul>\n<div class=\"callout callout--danger\">\n<div class=\"callout__title\">&lt;br&gt;Le <code>~<\/code> (tilde) est un **raccourci** qui repr\u00e9sente le **dossier personnel de l\u2019utilisateur connect\u00e9**.<\/div>\n<div class=\"callout__content\">\n<p>~ = \/home\/franck<\/p>\n<p><code>-p<\/code> : \u00e7a veut dire : cr\u00e9e aussi les dossiers parents si besoin. Ne donne pas d\u2019erreur si le dossier existe d\u00e9j\u00e0<\/p>\n<p><code>&gt;&gt;<\/code> : <strong>ajoute (append)<\/strong> ce contenu <strong>\u00e0 la fin<\/strong> d\u2019un autre fichier (ici <code>authorized_keys<\/code>)<\/p>\n<\/div>\n<\/div>\n<div class=\"callout callout--danger\">\n<div class=\"callout__title\">**Pourquoi c\u2019est important de faire &gt;&gt; et pas &gt; ?&lt;br&gt;Parce que si tu as d\u00e9j\u00e0 une autre cl\u00e9 dans authorized_keys, on ne veut surtout pas l\u2019\u00e9craser. On veut juste ajouter la tienne<\/div>\n<div class=\"callout__content\"><\/div>\n<\/div>\n<p>Pour v\u00e9rifier la cl\u00e9 :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">cat ~\/.ssh\/authorized_keys<\/code><\/pre>\n<\/div>\n<h3>Etape 4 : Authentification par mot de passe SSH<\/h3>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<\/div>\n<p>Pour faire une recherche = Ctrl + W ou utiliser les fl\u00e8ches pour une recherche manuelle.<\/p>\n<p>V\u00e9rifier et modifier les lignes pour qu\u2019elles soit identique et <mark>sans # devant<\/mark><\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">plain<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-plain\">PasswordAuthentication no\nPermitRootLogin no\nPubkeyAuthentication yes<\/code><\/pre>\n<\/div>\n<p>Ctrl + O = Enregistrer puis Ctrl + X pour quitter<\/p>\n<p>Red\u00e9marrer le service SSH pour appliquer les changements :<\/p>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">plain<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-plain\">sudo systemctl restart ssh<\/code><\/pre>\n<\/div>\n<h2>Connextion SSH via conteneur<\/h2>\n<div class=\"code-block-wrapper\">\n<div class=\"code-block-header\"><span class=\"code-language\">bash<\/span><button class=\"code-copy-btn\" type=\"button\">Copier<\/button><\/div>\n<pre><code class=\"language-bash\"># Sur le serveur\nsudo sed -i &#039;s\/^#?PermitRootLogin .*\/PermitRootLogin yes\/&#039; \/etc\/ssh\/sshd_config\nsudo systemctl restart ssh\nip a\n\n# en Local (se connecter en utilisant le mot de passe root)\nssh -o PubkeyAuthentication=no root@10.0.0.99<\/code><\/pre>\n<\/div>\n<h2>VSCODE PASSPHRASE<\/h2>\n<p>Set-Service ssh-agent -StartupType Automatic<br \/>\n Start-Service ssh-agent<\/p>\n<p>ssh-add \u00ab\u00a0$env:USERPROFILE.sshid_ed25519\u201d<\/p>\n<p>Puis dans le terminal VScode : <\/p>\n<p>git config &#8211;global core.sshCommand \u00ab\u00a0C:\/Windows\/System32\/OpenSSH\/ssh.exe\u201d<\/p>\n<p>et dans Powershell<\/p>\n<p>git config &#8211;global gpg.ssh.program \u00ab\u00a0C:\/Windows\/System32\/OpenSSH\/ssh-keygen.exe\u201d <\/p>\n<h2>SUpp SSSH<\/h2>\n<p>ssh-keygen -R 192.168.1.x<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le protocole **SSH** est la porte d&rsquo;entr\u00e9e principale pour l&rsquo;administration de serveurs distants de mani\u00e8re chiffr\u00e9e.<\/p>\n","protected":false},"template":"","meta":{"footnotes":""},"phase_pentest":[27],"categorie_fonctionnelle":[],"port_numero":[60],"protocole":[58],"tag_outil":[51],"class_list":["post-302","pandack_outil","type-pandack_outil","status-publish","hentry","phase_pentest-post-exploitation","port_numero-60","protocole-ssh","tag_outil-acces-a-distance"],"_links":{"self":[{"href":"https:\/\/pandack.fr\/index.php?rest_route=\/wp\/v2\/pandack_outil\/302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pandack.fr\/index.php?rest_route=\/wp\/v2\/pandack_outil"}],"about":[{"href":"https:\/\/pandack.fr\/index.php?rest_route=\/wp\/v2\/types\/pandack_outil"}],"version-history":[{"count":0,"href":"https:\/\/pandack.fr\/index.php?rest_route=\/wp\/v2\/pandack_outil\/302\/revisions"}],"wp:attachment":[{"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302"}],"wp:term":[{"taxonomy":"phase_pentest","embeddable":true,"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fphase_pentest&post=302"},{"taxonomy":"categorie_fonctionnelle","embeddable":true,"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategorie_fonctionnelle&post=302"},{"taxonomy":"port_numero","embeddable":true,"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fport_numero&post=302"},{"taxonomy":"protocole","embeddable":true,"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fprotocole&post=302"},{"taxonomy":"tag_outil","embeddable":true,"href":"https:\/\/pandack.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftag_outil&post=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}