FAQ:Tunneling ssh

De WikiFr_dbSQWare
Aller à la navigation Aller à la recherche

Explications

Lors du paramétrage d'une nouvelle instance, il faut un accès ssh et/ou SQL.
Parfois l'accès direct n'est pas possible et il nous faudra passer par un serveur de "rebond".
On passera donc par du tunneling ssh ...
Nous allons voir plusieurs cas possibles :

  1. Accès ssh depuis un premier serveur vers un troisième, en passant par un second de manière transparente
  2. Accès SQL "distant" à une instance MySQL qui n'écoute que sur localhost de sa machine
  3. Accès SQL "distant" à une instance MsSql en passant par une machine de rebond

Tests cases

Rebond ssh srvdbsqware04 => srvdbsqware07 => srvdbsqware08

## Ouverture du tunnel -L pour le port local, -N pour ne pas executer de commande (pas de shell), -f pour l'envoyer en tache de fond
## Ouverture du tunnel port 22008 sur srvdbsqware04 vers srvdbsqware07 qui forward vers srvdbsqware08 port 22

ssh -f -N -L 22008:srvdbsqware08:22 dbsqware@srvdbsqware07

Test "Local" en forçant le port 22008 pour voir si on arrive bien sur le 08

## dbsqware@srvdbsqware04
ssh -p 22008 mysql@localhost <<EOFSSH
id
uname -a
EOFSSH
uid=1004(mysql) gid=985(mysql) groups=985(mysql),1000(dba)
Linux srvdbsqware08 5.14.0-427.20.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jun 7 14:51:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

On va déclarer un alias qui pointe sur localhost de manière transparente :

# sudo vi /etc/hosts
127.0.0.1   localhost rb_07_08

Test de connexion en passant par l'alias "rb_07_08" :

## dbsqware@srvdbsqware04
ssh -p 22008 mysql@rb_07_08 <<EOFSSH
id
uname -a
EOFSSH
uid=1004(mysql) gid=985(mysql) groups=985(mysql),1000(dba)
Linux srvdbsqware08 5.14.0-427.20.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jun 7 14:51:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

Enfin, on va paramétrer la config ssh pour passer par le port 22008 quand on veut attaquer rb_07_08 :

vi ~/.ssh/config
# Rebond ssh 07 => 08
Host rb_07_08
  port 22008

Test de connexion en passant par l'alias "rb_07_08" sans forcer le port :

## dbsqware@srvdbsqware04
ssh mysql@rb_07_08 <<EOFSSH
id
uname -a
EOFSSH
uid=1004(mysql) gid=985(mysql) groups=985(mysql),1000(dba)
Linux srvdbsqware08 5.14.0-427.20.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jun 7 14:51:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

A partir de là, toutes les connexions ssh/rsync de srvdbsqware04 vers rb_07_08 iront toucher srvdbsqware08 en passant par srvdbsqware07. Attention, le tunnel doit rester ouvert pour cela, pensez à les recréer quand vous redémarrez une ou l'autre des 3 machines !