【问题标题】:Connect to SFTP with key file using Python pysftp使用 Python pysftp 使用密钥文件连接到 SFTP
【发布时间】:2018-12-20 20:59:23
【问题描述】:

我需要连接到 SFTP,下载最新文件,然后更改文件名并再次加载到同一个 SFTP 文件夹并删除“原始名称”文件。我已经使用带有用户名和密码的 FTP 完成了此操作,但是在这种情况下,SFTP 有一个密钥文件 (.ppk)。如何将密钥文件设置为密码?

谢谢!

import pysftp

srv = pysftp.Connection(host="your_FTP_server", username="your_username",
password="your_password")

# Get the directory and file listing
data = srv.listdir()

# Closes the connection
srv.close()

# Prints out the directories and files, line by line
for i in data:
   print i

【问题讨论】:

  • 这个问题目前的形式太模糊了。你使用什么编程语言?您使用的是什么 SSH/SFTP 软件?你是如何建立 SFTP 连接的?除了使用密钥文件之外,您知道如何使用 SSH 和 SFTP 吗?您是否有任何代码可以添加到您的问题中以说明您在做什么?

标签: python file sftp pysftp


【解决方案1】:

要使用密钥文件进行连接,您需要在创建连接时传递密钥文件的路径。为此,您需要将参数“private_key”设置为文件的路径。

上面的代码应该是这样的:

srv = pysftp.Connection(host="you_FTP_server", username="your_username", private_key="./Path/To/File")

pySFTP发起连接时,会尝试使用你传入的文件,如果因为keyfile而失败,会抛出认证异常。

这是我找到答案的链接:https://pysftp.readthedocs.io/en/release_0.2.7/pysftp.html

【讨论】:

    【解决方案2】:

    重要的是要指定“密码”仅在服务器有密码时使用。如果您的私钥是受密码保护的,则必须改用“private_key_pass”。

    所以要使用您需要的公钥/私钥连接到远程服务器:

    1) 上传公钥到服务器

    2) 使用您的私钥+私钥密码创建连接:

    srv = pysftp.Connection(host="host", username="username", private_key="file_with_private_key", private_key_pass="password")
    

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2019-05-20
      • 2016-11-23
      • 2022-06-15
      • 2019-10-24
      • 2022-12-14
      • 2020-02-25
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多