J'aimerais créer un ssh inverser, tout simplement pour ne pas demander aux amis que j'aide sur linux d'ouvrir un port de leur coté car cette tache est fastidieuse, voir impossible si ils utilisent des réseaux non paramétrable ( type FreeWifi )
J'entends par ssh inversé, le fait que c'est le serveur (la personne à aider) qui va initialisé la connexion vers le client (la personne qui va aider) pour ne pas avoir à ouvrir de port coté personne à aider.
Une fois la connexion établie ( protégé avec RSA ), le client doit pouvoir ouvrir un terminal chez le serveur et obtenir le même comportement qu'avec ssh
Ma première idée était d'utiliser la commande su avec subprocess
term = suprocess.Popen("su "+user,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
Mon premier problème est le fait que si python n'est pas lancé avec root, cette commande est ignoré et me dit que su ne peut être utilisé uniquement via un terminal
Donc je lance python en root ( au final ce n'est pas plus mal car ça permet plus de sécurité coté serveur )
Mais avec ça c'est un petit peu compliqué et pas très optimisé.
Je peux utiliser cette instruction pour récupérer la sortie à intervalle régulier:
out,err = term.communicate()
Et celle ci pour lancer une commande:
out,err = term.communicate(input=cmd)
Mais régler tout cela pour avoir un fonctionnement pratique va être complexe, surtout pour les commande comme top qui renvoie une sortie qui s'actualise en quelques sorte, et là je ne vois vraiment pas comment faire.
Avez vous d'autres idées ou même une autre solution ?
Merci d'avance, Oly.
Ouvrir un shell avec Python
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.