2013-02-25 56 views
4

我試圖使用Paramiko打開(並維護)一個通道,以便我可以發出幾條命令;然而,我無法找到一個使用paramiko.Transport和使用私鑰的例子。我已經能夠連接到我的服務器,只是使用下面的代碼運行命令:有用私鑰使用Paramiko Transport(channel)進行身份驗證

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) 

沒有問題。據我所知,這不會創建一個「交互式會話」,這意味着我不能發出cd /home/my_user/my_scripts,然後發出另一個命令,如python script_in_my_scripts_folder.py。因此,我試圖使用可以幫助我維護交互式會話的Paramiko Transport對象。高低搜索,我找到的例子都不適合我。眼下,下面的代碼返回「SSHException:通道未打開」上線204,這是低於exec_command:

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/') 

我明白它告訴我的要點,但我無法找到或理解文檔來幫助我解決這個問題。

在此先感謝。

回答