J'ai rencontré des problèmes lors du démarrage du tunnel SSH à partir du serveur HTTP RPC écrit en Python.Question sur le démarrage du tunnel SSH en utilisant Python
Il existe un serveur HTTP RPC simple écrit en Python basé sur BaseHTTPServer de Python. Dans le cadre de l'un des services, je voudrais démarrer un tunnel SSH à partir du serveur RPC vers une machine distante. Je os.system pour démarrer le tunnel SSH dans le script Python invoqué par l'appel RPC
os.system("ssh -f -n -N -L 127.0.0.1:%d:localhost:%d [email protected]%s" % (6800, 9000, "remote.machine"))
A première vue, tout semble bien que le tunnel est démarré et je peux l'utiliser, mais il y a une chose J'ai remarqué. En plus d'écouter sur le port 6800 SSH a commencé à écouter sur le port 8001 (le port sur lequel le serveur HTTP RPC s'exécute).
est ici la sortie de lsof en ce qui concerne le serveur RPC et SSH:
rpc.py 27763 usern 5u IPv4 102130428 TCP 127.0.0.1:8001 (LISTEN)
ssh 1951 usern 14u IPv4 102149728 TCP 127.0.0.1:6800 (LISTEN)
ssh 1951 usern 5u IPv4 102130428 TCP 127.0.0.1:8001 (LISTEN)
Tout fonctionne jusqu'à ce que le redémarrage du serveur RPC. Pendant le redémarrage, le serveur RPC est forcé de fermer sa connexion à la prise d'écoute, mais la connexion SSH reste ouverte et le serveur RPC ne peut pas redémarrer sur le même port.
Il semble que le tunnel SSH s'associe d'une manière ou d'une autre au fd de la socket d'écoute du serveur RPC.
Est-ce que quelqu'un pourrait donner des conseils sur la façon de configurer le tunnel SSH à partir du script avec seulement écouter sur le port supposé (6800 dans cet exemple).
Une progression? Nous faisons généralement mieux d'aider les gens s'ils donnent des mises à jour de statut. – ssokolow