Ceci est une preuve de concept. Après une discussion animée, j’ai décidé d’essayer de voir si je pouvais créer un tunnel1 entre 2 hôtes en passant par 2 autres et au moins 2 réseaux.
Donc dans mon homelab j’ai créé :
- App-Hébergeur 172.16.100.200/24
- Host to docker, où j’ai installé une application à essayer dans le navigateur du client.
- Proxy SSH 172.16.100.201/24
- Cette machine est là juste pour servir de proxy à l’App-Host, un peu redondant.
- Routeur 172.16.100.254/24; DHCP/192.168.0.30
- Cette machine est entre réseaux, elle possède 2 cartes réseau et le transfert TCP est activé.
- Client DHCP
- C’est mon ordinateur portable, sur le réseau principal. Voici la configuration nécessaire sur chacun des hôtes :
Les lignes suivantes doivent être insérées ou décomentées et corrigées dans le /etc/ssh/sshd_conf :
AllowTcpForwarding yes
TCPKeepAlive yes
PermitTunnel yes
PermitOpen any
Ce que j’ai fait, mais cela n’a pas eu d’effet, c’est de copier les clés ssh sur chaque machine.
ssh-copy-id root@172.16.100.200
Ssh-copy-id est un script qui vous aide à copier votre clé ssh sur votre serveur. Je l’utilise pour ma première connexion et après ça je règle
PasswordAuthentification No
Dans le fichier de configuration. Après avoir fini de configurer chaque machine, j’ai installé docker2 et le webshell3, et j’ai démarré l’application.
# Installation Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Installation webshell
sudo docker run -d --privileged --security-opt seccomp=unconfined --name webshell -p 8018:80 -e ALLOWED_NETWORKS=0.0.0.0/0 bwsw/webshell
J’ai vérifié que le port était à l’écoute et j’ai démarré le tunnel sur ssh-proxy.
sudo ssh -L 9000:127.0.0.1:8018 root@172.16.100.200
Apres sur le routeur:
ssh -L 9000:127.0.0.1:9000 radu@172.16.100.201
Apres sur mon client:
ssh -L localhost:9000:localhost:9000 root@192.168.0.30
Ensuite, pour que je puisse voir l’application Web, j’ai ouvert un navigateur Web avec l’adresse Web suivante :
http://127.0.0.1:9000/
Et je peux accéder comme vous pouvez le voir à mon hôte d’application très bien via le webshell.
Attention, dans un environnement de production, assurez-vous de désactiver la connexion en utilisateur root ainsi que le port ssh standard. Essayez de toujours désactiver la connexion ssh par mot de passe.
Install Docker: https://docs.docker.com/engine/install/debian/ ↩︎
Install WebShell: https://hub.docker.com/r/bwsw/webshell/ ↩︎