Archives pour la catégorie SSH

ProxyJump: rebond automatique vers une machine non routée

Toto travaille sur sa machine pc-perso, il besoin de se connecter à une machine S2 située sur un autre LAN. Manque de pot,  S2 a une adresse IP privée et n’est donc pas accessible depuis Internet.

Toto ne veut pas utiliser le VPN propriétaire du LAN distant soumis au CloudAct et au PatriotAct … Pour ne rien arranger, ce VPN qui coûte un bras est aussi lent et instable que sa grand-mère en rollers !

Mais Toto a la chance d’avoir un accès SSH direct à la machine S1 qui a une patte sur le LAN distant (elle est joignable par une adresse IP publique).

Toto fait donc toutes ses opérations (SSH, scp, rsync, …) par rebonds: il se connecte d’abord à S1 puis  à S2 à partir de S1:

  • La clé publique de toto@pc-perso DOIT être installé sur le compte toto@s1
  • La clé publique toto@s1 DOIT être installés sur le compte toto@s2

Ce n’est pas très pratique pour Toto, surtout pour transférer des fichiers …

toto@pc-perso:~# ssh s1
Welcome to Ubuntu
You have new mail.
Last login: Sat Nov 26 17:05:22 2022 from xxxxxxxxxxxxx
toto@s1:~# ssh s2
Welcome to Debian
No mail.
toto@s2:~#

Un jour, Toto a ouvert la porte de son frigo et a vu la lumière: il a découvert la fonction ProxyJump d’OpenSSH !

Il s’agit d’une option qui permet de spécifier comment accéder à une machine en rebondissant par une autre:

  • Toto DOIT disposer d’un compte sur les deux machines (S1 et S2),
  • Toto DOIT disposer d’une clé SSH sur pc-perso,
  • La clé SSH publique toto@pc-perso DOIT être installée sur les machines (S1 et S2): Toto n’a plus besoin d’une clé publique toto@s1 pour accéder à toto@s2
toto@pc-perso:~# ssh -J s1 s2
Welcome to Debian
No mail.
Last login: Sat Nov 26 17:05:26 2022 from xxxxxxxx
toto@s2:~#

Il est possible de graver ce comportement dans le marbre pour se simplifier la vie: il ne sera plus nécessaire de préciser explicitement l’option de rebond, toutes les opérations (SSH, scp, rsync, …) se feront de façon transparentes entre pc-perso et S2. Il suffit de créer/éditer le fichier ~.ssh/config sur pc-perso:

Host s2
 Hostname s2
 ProxyJump s1

Toto est content: il peut travailler sur S2 directement depuis pc-perso !

toto@pc-perso:~# ssh s2
Welcome to Debian
No mail.
Last login: Sat Nov 26 17:05:26 2022 from xxxxxxxx
toto@s2:~#