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é :
- ssh_config
#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 :
- /home/machin/.ssh/config
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 :
- ssh_config
# ... 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 :
- tunnel.sh
#!/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.
- /home/user/.local/share/applications/tunnel.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 !