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 !

Alternatives

Si jamais il faut d'autres façons de dépanner, tester

 Ce texte est placé sous licence CC0

CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/tunnelssh.txt · Dernière modification : 23/02/2022 14:59 de Zatalyz