【问题标题】:Paramiko sftp upload with ppk file [duplicate]使用 ppk 文件上传 Paramiko sftp [重复]
【发布时间】:2021-04-26 16:36:37
【问题描述】:

我正在尝试使用 Paramiko Lib 创建一个 python 脚本,以在 sftp 上上传一个文件,该文件使用“ppk”文件和密码进行连接。

不幸的是,我无法破解文档或找到任何可以将 sftp 与 ppk 文件连接起来的东西。

其他详情: SFTP可以手动连接Filezilla,WinSCP不允许。

这是我只能使用的代码。请帮忙!

k = paramiko.RSAKey.from_private_key_file("/key.ppk")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect( hostname = "ftp.example.com", username = "user", pkey = k,passphrase="somephrase" )

这是最少的问题,我需要在连接后上传。

【问题讨论】:

  • 您可以使用 puttygen 将 ppk 转换为 openssh 应该可以正常工作
  • 嗯,好的,知道了。一直在找文档参考直接使用PPK文件,现在明白了,要先转换一下。谢谢各位

标签: python ssh paramiko ssh-keys


【解决方案1】:

我建议您将 .ppk 转换为 .pem ! 看 : Conver ppk to pem

然后像这样:

import paramiko
k = paramiko.RSAKey.from_private_key_file("mykey.pem")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print "connecting"
c.connect( hostname = "www.host.com", username = "ubuntu", pkey = k )
print "connected"
commands = [ "/home/ubuntu/firstscript.sh", "/home/ubuntu/secondscript.sh" ]
for command in commands:
    print "Executing {}".format( command )
    stdin , stdout, stderr = c.exec_command(command)
    print stdout.read()
    print( "Errors")
    print stderr.read()
c.close()

【讨论】:

  • 好的,明白了。它必须先转换,然后使用转换后的文件。谢谢@moetaz