====== 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}}]]