我試圖使用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/')
我明白它告訴我的要點,但我無法找到或理解文檔來幫助我解決這個問題。
在此先感謝。