Dans le jeu /etc/ssh/sshd
de l' ordinateur B :
AllowTcpForwarding yes
TCPKeepAlive yes
Depuis l' ordinateur A :
$ ssh -R 2222:localhost:22 ip.of.computer.b
Depuis l' ordinateur B :
$ ssh localhost -p 2222
Notez que 2222 est un numéro arbitraire de port élevé que j'ai choisi. Ce port sur l'ordinateur B sera ensuite retransmis via la connexion SSH initialisée sur l'ordinateur A vers le port 22. Si vous avez plusieurs machines, vous devez utiliser un port différent pour chaque machine.
Pour votre cas d'utilisation, vous voudrez probablement l'exécuter à partir d'un script afin de pouvoir en faire un démon et essayer régulièrement de vous reconnecter si le lien est supprimé. Vous voudrez probablement un compte spécial avec un shell uniquement /bin/true
sur l' ordinateur B pour gérer les connexions entrantes. Vous pouvez ensuite configurer soit une seule touche, soit plusieurs touches pour chaque machine qui sont autorisées à "appeler à la maison".
Sur l' ordinateur A vous pourriez trouver -n
, -N
et -T
options utiles pour le déconnecter de l' entrée locale (il peut fonctionner en arrière - plan), essayez de ne pas exécuter une commande à distance, il suffit d' ouvrir le tunnel, et ne pas créer un téléscripteur.
La plupart des méthodes normales de création d'un démon ne fonctionnent pas très bien avec la configuration d'un tunnel réseau comme celui-ci. Un problème de connectivité réseau l'obligerait à abattre le mur pour passer. Une simple boucle avec un sommeil à attendre devrait faire l'affaire. Dix minutes est un bon chiffre car cela n'inonde pas le réseau et les fichiers journaux avec des tentatives s'il y a un problème (comme l' ordinateur B hors ligne), mais cela vous permet de revenir assez rapidement si la connexion est interrompue.
#/bin/sh
while true; do
sleep $((60*10))
ssh -nNT -R 2222:localhost:22 ip.of.computer.b
done
Un script comme celui-ci peut être exécuté lancé au démarrage /etc/rc.local
. Votre premier changement de se connecter à la machine commencera après environ dix minutes après l' ordinateur A bottes.