【问题标题】:Authenticate with private key using Paramiko Transport (channel)使用 Paramiko Transport(通道)使用私钥进行身份验证
【发布时间】:2013-02-25 16:44:42
【问题描述】:

我正在尝试使用 Paramiko 打开(和维护)一个频道,以便我可以发出一些命令;但是,我找不到使用 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)

那里没有问题。据我了解,这不会创建“交互式会话”,这意味着我不能发出cd /home/my_user/my_scripts,然后发出另一个命令,如python script_in_my_scripts_folder.py。因此,我正在尝试使用 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/')

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

提前致谢。

【问题讨论】:

    标签: python python-2.7 paramiko private-key


    【解决方案1】:

    我在这个网站的帮助下找到了问题: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/')
    

    【讨论】:

      猜你喜欢
      • 2015-08-20
      • 2013-10-08
      • 2020-10-11
      • 2015-10-20
      • 1970-01-01
      • 2020-08-19
      • 2015-01-10
      • 2015-05-04
      相关资源
      最近更新 更多