====== Tunnel SSH ====== L'objectif : accéder en ssh à l'ordi de nos chers proches qui sont parfois bien embêtés avec des bugs, ou qui ont besoin de mise à jour. On passe par un tunnel SSH : l'ordi source (dont l'utilisateur est appelé "Machin") ouvre une connexion SSH vers un serveur (Lapin). Depuis Lapin, on peut alors entrer dans ce "tunnel" et bidouiller en ssh. ===== Pré-requis ===== Sur l'ordi-source, il faut activer le serveur ssh. Paramétrage, en modifiant le port et l'user autorisé : #Mettre un port autre, c'est toujours mieux Port 22 Protocol 2 Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com PermitRootLogin no StrictModes yes UsePrivilegeSeparation sandbox PasswordAuthentication no ChallengeResponseAuthentication no PubkeyAuthentication yes UsePAM yes PermitEmptyPasswords no MaxAuthTries 6 LoginGraceTime 30 AllowUsers machin X11Forwarding no PrintLastLog yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server C'est bien "Machin" comme user autorisé ici, car on se connectera ensuite en tant que "machin@localhost" sur cet ordinateur. Redémarrer ensuite le service : sudo service ssh restart Créer aussi une clé ssh (s'il n'y en a pas déjà) : ssh-keygen -t ed25519 Ici, une clé sans mot de passe est pertinente... Faire la config ssh de l'user afin de se simplifier la tâche : Host tunnel Hostname "ip du serveur" User taupe Port "port ssh du serveur" IdentityFile /home/machin/.ssh/id_ed25519 ===== Côté serveur ===== Créer l'user spécial pour le pont useradd taupe -m -U -s /bin/bash sudo su taupe mkdir /home/taupe/.ssh nano /home/taupe/.ssh/authorized_keys chown -R taupe: /home/taupe/.ssh chmod 0700 /home/taupe/.ssh/ chmod 0600 /home/taupe/.ssh/authorized_keys ssh-keygen -t ed25519 Bien ajouter la clé de Machin dans ''authorized_keys'', ainsi que tout autre user qui aurait besoin de ce genre de pont. Éditer /etc/ssh/sshd_config, autoriser "taupe" et lui donner une règle spéciale : # ... AllowUsers taupe Match User taupe AllowTcpForwarding yes AllowAgentForwarding no ForceCommand /bin/false Attention, "Match user" doit être à la fin. Vérifier que tout va bien : sudo sshd -T et relancer sudo service ssh restart ===== Retour à l'ordi-source ===== Enfin, ajouter la clé publique de taupe dans les clés autorisées sur l'ordi source. nano /home/taupe/.ssh/authorized_keys Tester le tunnel : ssh -R 127.0.0.1:2222:127.0.0.1:22 tunnel Explication : * 127.0.0.1:2222 : l'adresse et le port utilisé pour "revenir". Adaptez le port au besoin mais laissez l'adresse locale ! * 127.0.0.1:22 : L'adresse et le port ssh utilisé sur l'ordi source. Donc forcément localhost, mais pour le port, c'est celui qui a été déclaré dans sshd_config, donc à adapter. * tunnel : le serveur distant par lequel on va passer. ===== Créer une jolie interface ===== On créer un dossier dans /home/user/.local/share/ appelé "tunnel", dans lequel on va mettre une jolie icône (à trouver où vous voulez), ainsi qu'un script super basique : #!/bin/bash ssh -R 127.0.0.1:2222:127.0.0.1:22 tunnel Adaptez le dernier port si besoin ! On va ensuite faire un joli bouton à cliquer. Il suffit de créer un .desktop. [Desktop Entry] Type=Application Name=Dépannage GenericName=Dépannage Comment=Obtenir de l'aide quand on a des soucis sur l'ordinateur Categories=Utility; Exec=/home/machin/.local/share/tunnel/tunnel.sh Icon=/home/machin/.local/share/tunnel/tunnel.png Terminal=true Adaptez le chemin de l'utilisateur ! ===== Dépannage ===== Côté ordi à dépanner, cliquer sur le bouton dans le menu, dans la section accessoire ! Le script se lance, le tunnel s'ouvre. Les options font qu'un terminal est ouvert, cela permet d'avoir un retour visuel même si la personne aidée ne va pas s'en servir ; quand elle fermera le terminal, cela fermera le tunnel. Côté dépanneur, se connecter au serveur, sur l'user taupe (''sudo su taupe''), et faire ssh machin@127.0.0.1 -p 2222 Et nous voilà en ssh sur l'ordi des personnes qui ont besoin d'un dépannage ! ===== Alternatives ===== Si jamais il faut d'autres façons de dépanner, tester * https://www.dwservice.net/ {{tag>ssh dépannage}} [[https://creativecommons.org/publicdomain/zero/1.0/deed.fr|{{ https://liev.re/imagesweb/licences/cc-zero.png?100 | Ce texte est placé sous licence CC0}}]]