linux:ssh

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
linux:ssh [2021/03/23 16:44] – [SSH] add -F option phswlinux:ssh [2024/09/03 09:29] (Version actuelle) – [Créer un tunnel de port-forwarding] add link phsw
Ligne 5: Ligne 5:
   * ''-o'': préciser des options (un ''-o'' par option)   * ''-o'': préciser des options (un ''-o'' par option)
   * ''-L'': forward un port local vers un port sur une machine distant: ''ssh -L <adresselocale>:<portlocal>:<adressedistante>:<portdistant>''   * ''-L'': forward un port local vers un port sur une machine distant: ''ssh -L <adresselocale>:<portlocal>:<adressedistante>:<portdistant>''
-  * ''-D'': forward dynamique de port: ''ssh -D 8080 toor@ip'' 
   * ''-F'': indique quel fichier ''ssh/config'' utiliser. ''-F /dev/null'' correspond à n'utiliser aucun fichier de configuration.   * ''-F'': indique quel fichier ''ssh/config'' utiliser. ''-F /dev/null'' correspond à n'utiliser aucun fichier de configuration.
  
Ligne 18: Ligne 17:
   * [[https://lord.re/posts/187-ssh-key-restricted-rsync-backup/]]   * [[https://lord.re/posts/187-ssh-key-restricted-rsync-backup/]]
   * [[https://blog.g3rt.nl/upgrade-your-ssh-keys.html]]   * [[https://blog.g3rt.nl/upgrade-your-ssh-keys.html]]
 +  * [[https://github.com/opsdisk/the_cyber_plumbers_handbook|The Cyber Plumber's Handbook - The definitive guide to Secure Shell (SSH) tunneling, port redirection, and bending traffic like a boss]]
 +  * [[https://grahamhelton.com/blog/ssh-cheatsheet/|An Excruciatingly Detailed Guide To SSH (But Only The Things I Actually Find Useful)]]
 +  * [[https://blog.stephane-robert.info/docs/securiser/durcissement/ssh/|Durcir la configuration SSH]]
 +
 +
 +<code bash>
 +ssh-keygen -t ed25519 -a 100 -C "Comment"
 +</code>
 +
  
  
------- 
 ==== Options ==== ==== Options ====
  
-  * [[https://www.blog-libre.org/2019/05/11/loption-controlmaster-de-ssh_config/]]+  * [[https://www.bloglibre.net/2019/05/11/loption-controlmaster-de-ssh_config/]]
  
-  * ''UserKnownHostsFile=/dev/null'': le fichier //known_hosts// est ///dev/null//, utile pour ne pas sauvgegarder la clé publique du serveur SSH+  * ''UserKnownHostsFile=/dev/null'': le fichier //known_hosts// est ///dev/null//, utile pour ne pas sauvegarder la clé publique du serveur SSH
   * ''StrictHostKeyChecking=no '': ne pas demander la confirmation d'ajout de la nouvelle clé (ajouter un espace après le ''no'' !)   * ''StrictHostKeyChecking=no '': ne pas demander la confirmation d'ajout de la nouvelle clé (ajouter un espace après le ''no'' !)
   * ''PreferredAuthentications=password'': passer directement à la méthode d'authentification par mot de passe, sans essayer les clés privée du dossier ''.ssh''   * ''PreferredAuthentications=password'': passer directement à la méthode d'authentification par mot de passe, sans essayer les clés privée du dossier ''.ssh''
Ligne 31: Ligne 38:
  
  
-------+
 ==== Créer un tunnel de port-forwarding ==== ==== Créer un tunnel de port-forwarding ====
 +
 +  * [[https://goteleport.com/blog/ssh-tunneling-explained/]]
 +  * [[https://iximiuz.com/en/posts/ssh-tunnels/|A Visual Guide to SSH Tunnels (with labs)]]
 +  * [[https://blog.stephane-robert.info/docs/services/reseau/ssh-tunneling/|Maitrisez le tunneling SSH]]
 +
 +
  
 A -- B -- C A -- B -- C
Ligne 71: Ligne 84:
  
 [[https://dev.to/samuyi/the-how-to-of-ssh-port-forwarding-1f4e|Source]] [[https://dev.to/samuyi/the-how-to-of-ssh-port-forwarding-1f4e|Source]]
 +
 +
 +
 +=== Tunnel de port dynamique ===
 +
 +Si seule la machine A peut accéder à la machine B et qu'on a une connexion à la machine A :
 +<code bash>
 +ssh -ND 8080 A
 +</code>
 +Cela crée un proxy socks qui écoute sur le port 8080 de la machine local. On peut ensuite configurer Firefox (''about:profiles'' pour le faire uniquement dans un profil spécifique) pour utiliser ce proxy (proxy SOCKSv5 sur 127.0.0.1:8080).
  
  
 === Paramètres === === Paramètres ===
  
-* ''-N'': n'ouvre pas de shell distant pour saisir des commandes, reste bloqué, utile pour forwarder un port+  * ''-N'': n'ouvre pas de shell distant pour saisir des commandes, reste bloqué, utile pour forwarder un port 
  
  
  
------- 
 ==== Transférer sa clé publique vers un serveur ==== ==== Transférer sa clé publique vers un serveur ====
  
Ligne 88: Ligne 111:
  
  
--------+
 ==== Agent SSH ==== ==== Agent SSH ====
  
Ligne 123: Ligne 146:
 ssh-add -l # ne renvoie rien ssh-add -l # ne renvoie rien
 </code> </code>
 +
 +  * [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472477]]
 +
  
  
------- 
 ==== Empêcher OpenSSH de donner son OS ==== ==== Empêcher OpenSSH de donner son OS ====
  
Ligne 134: Ligne 159:
  
  
--------+
 ==== Monter un système de fichier SSHFS ==== ==== Monter un système de fichier SSHFS ====
  
Ligne 153: Ligne 178:
  
  
--------------------+
 ==== X Forwarding ==== ==== X Forwarding ====
  
Ligne 166: Ligne 191:
  
  
----------------------+
 ==== Fichier ssh/config ==== ==== Fichier ssh/config ====
  
 +La configuration est documentée dans la page de man de ''ssh_config''.
 <file conf ~/.ssh/config> <file conf ~/.ssh/config>
 ForwardAgent yes # transmet les clés SSH du client, pour qu'elles soient disponibles dans la session SSH ForwardAgent yes # transmet les clés SSH du client, pour qu'elles soient disponibles dans la session SSH
Ligne 178: Ligne 204:
     ForwardX11 yes     ForwardX11 yes
 </file> </file>
 +
 +Pour forcer l'utilisation de l'IPv4 :
 +<code>
 +AddressFamily inet
 +</code>
 +
 +
 +
 +==== Fichier authorized_keys ====
 +
 +Sa syntaxe est documentée dans la page de man de ''sshd''.
 +
 +Chaque clé dans le fichier peut être précédée d'instructions pour limiter l'utilisation de la clé. Par exemple :
 +  * ''restrict,from="10.0.0.1",command="<une commande>" <clé>'' empêche l'utilisation de toutes les fonctionnalités de SSH, permet l'utilisation de la clé seulement depuis le client 10.0.0.1 et exécute la commande spécifiée une fois l'authentification réussie
 +  * ''restrict,port-forwarding<clé>'' empêche l'utilisation de toutes les fonctionnalités, ne permet que le port-forwarding (pour faire du ProxyJump, par exemple).
 +
 +
 +==== ProxyJump ====
 +
 +Pour passer à travers (plusieurs) serveur(s) de rebond avant d'atteindre le serveur cible :
 +<code conf>
 +Host rpi-a
 +    ProxyJump rpi-b
 +    HostName 10.0.0.3
 +    IdentityFile ~/.ssh/rpi_ed25519
 +    Port 3233
 +</code>
 +
 +Passe par ''rpi-b'' pour se connecter à ''rpi-a''. Les autres paramètres fournis seront utilisés pour la connexion SSH que fera ''rpi-b'' vers ''rpi-a'' (l'adresse ''10.0.0.3'' n'a de sens que sur ''rpi-b'', par exemple ici). Toute la configuration relative à la connexion à ''rpi-b'' est dans l'entrée dédiée à ''rpi-b'' dans le fichier de configuration.
 +
  
  
------------- 
 ==== Tuer une session SSH bloquée ==== ==== Tuer une session SSH bloquée ====
  
Ligne 186: Ligne 241:
  
 Enchaîner les touches ''Entrée'', ''~'' et ''.''. Enchaîner les touches ''Entrée'', ''~'' et ''.''.
 +
 +
 +
 +==== Tester la configuration serveur ====
 +
 +[[https://www.skyminds.net/resoudre-lerreur-ssh-missing-privilege-separation-directory-run-sshd/|Source]]
 +
 +<code bash>
 +sshd -t
 +</code>
 +
 +Si l'erreur //Missing privilege separation directory: /run/sshd// apparaît:
 +<code bash>
 +mkdir -p /run/sshd
 +</code>
 +
 +
 +==== Changer le port d'écoute ====
 +
 +Changer dans le fichier ''/etc/ssh/sshd_config''. Si SystemD est utilisé, il faut aussi modifier le service qui définit la socket ([[https://askubuntu.com/questions/925452/ssh-resets-to-default-port-on-reboot|source]]) :
 +<code bash>
 +systemctl edit ssh.socket
 +</code>
 +Puis y mettre :
 +<code>
 +[Socket]
 +ListenStream=
 +ListenStream=3233
 +</code>
 +
  
  • linux/ssh.1616514267.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • (modification externe)