S'authentifier avec la clé privée à l'aide de Paramiko de Transport (manche)

Je suis en train d'utiliser Paramiko d'ouvrir (et de maintenir) un canal de sorte que je peux émettre quelques commandes; cependant, je suis incapable de trouver un exemple d'utilisation de paramiko.Transport ET à l'aide d'une clé privée. J'ai été en mesure de se connecter à mon serveur et il suffit d'exécuter une commande en utilisant le code suivant:

    ssh = paramiko.SSHClient()
    paramiko.util.log_to_file("support_scripts.log")
    private_key = paramiko.RSAKey.from_private_key_file(rsa_private_key)
    ssh.connect(server, username=user, password='', pkey=private_key)
    ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd)

Aucun problème. Ce que je comprends, cela ne veut pas créer une "session interactive", ce qui signifie que je ne peux pas question de cd /home/my_user/my_scripts et puis le problème d'une autre commande comme python script_in_my_scripts_folder.py. Donc, je suis en train d'utiliser le Paramiko objet de Transport qui peut m'aider à conserver d'une session interactive. La recherche haute et basse, aucun des exemples que j'ai trouvé du travail pour moi. Maintenant, le code suivant renvoie "SSHException: le Canal n'est pas ouvert" sur la ligne 204, qui est le exec_command ci-dessous:

    PRIVATEKEY = '/home/my_user/.ssh/id_rsa'
    user = 'harperville'
    server = '10.0.10.10'
    port = 22
    paramiko.util.log_to_file("support_scripts.log")
    trans = paramiko.Transport((server,port))
    rsa_key = paramiko.RSAKey.from_private_key_file(PRIVATEKEY)
    trans.connect(username=user, pkey=rsa_key)
    session = trans.open_channel("session")
    session.exec_command('cd /home/harperville/my_scripts/')

Je comprends l'essentiel de ce qu'il me dit mais je ne peux pas trouver ou à comprendre la documentation pour m'aider à passer ce problème.

Merci d'avance.

OriginalL'auteur harperville | 2013-02-25