gpt4 book ai didi

python - 使用 Paramiko Transport( channel )使用私钥进行身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:37 26 4
gpt4 key购买 nike

我正在尝试使用 Paramiko 打开(并维护)一个 channel ,以便我可以发出一些命令;但是,我无法找到使用 paramiko.Transport 和使用私钥的示例。我已经能够连接到我的服务器并使用以下代码运行命令:

    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)

没有问题。据我了解,这不会创建“交互式 session ”,这意味着我无法发出 cd/home/my_user/my_scripts 然后发出另一个命令,如 python script_in_my_scripts_folder.py。因此,我正在尝试使用可以帮助我维护交互式 session 的 Paramiko Transport 对象。搜索高低,我发现没有一个例子适合我。现在,以下代码在第 204 行返回“SSHException: Channel is not open”,即下面的 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/')

我明白它告诉我的要点,但我找不到或无法理解帮助我解决这个问题的文档。

提前致谢。

最佳答案

我在这个网站的帮助下发现了这个问题:http://j2labs.tumblr.com/post/4477180133/ssh-with-pythons-paramiko

如果我改变:

session = trans.open_channel("session")

到:

session = trans.open_session()

然后,我可以使用以下命令运行命令:

session.exec_command('cd /home/harperville/my_scripts/')

关于python - 使用 Paramiko Transport( channel )使用私钥进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com