Ich hatte mich vor einiger Zeit mal damit beschaeftigt, ssh ueber Pseudo-Terminals zum Laufen zu bringen, jetzt habe ich das wieder aufgegriffen und etwas recht Brauchbares herausbekommen.
Das Modul unten stellt Funktionen fuers Einloggen, Ausloggen und die wichtigsten Befehle auf dem Remote Host zur Verfuegung, ausserdem eine scp-Implementation. (Das Ganze ist natuerlich noch erweiterbar.)
Das groesste Problem ist das Finden von bestimmtem Output/Prompts in der "Ausgabe" vom Pseudo-Terminal, da man nicht weiss, wann das Terminal seine "Ausgabe beendet" hat, und man ueber einen shell-Prompt im Allgemeinen auch nur weiss, dass er wahrscheinlich mit "> ", "$ " oder "# " aufhoert. Deswegen setzte ich nach dem Einloggen den Prompt auf einen leicht zu identifizierenden String und die Sprache auf Englisch (um zum Beispiel die Ausgabe deutscher Fehlermeldungen zu vermeiden).
Somit bleibt als groesstes Problem das Einloggen selbst. Um also den Prompt nach dem Einloggen zu finden (oft wird ja noch ziemlich viel Kram ausgegeben, bis man den Prompt erhaelt), setze ich ein echo "eindeutiger string" ab und suche nach eben diesem String. Von da an sollte dann der richtige Prompt leicht zu finden sein.
ssh benoetigt uebrigens nur zum Abfragen des Passwortes ein Pseudo-Terminal. Wenn man also mit Schluesseln arbeitet oder ssh so konfiguriert, dass es ein X-Programm (ask-passwd) fuer die Passworteingabe bei fehlendem controlling terminal benutzt wird, kann man sich den ganzen pty-Kram sparen und statt dessen mit popen arbeiten.

Aktuelle Version vom 29.09.2006:
ssh.py
Ein Testprogramm: (Achtung, Benutzung auf eigene Gefahr!!! Am besten vorher gucken, was das Programm macht!)
ssh_test.py