我需要连接到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
答案 0 :(得分:4)
要使用密钥文件进行连接,您将需要在创建连接时将路径传递给密钥文件。为此,请将参数“ private_key”设置为文件的路径。
您上面的代码应如下所示:
srv = pysftp.Connection(host="you_FTP_server", username="your_username", private_key="./Path/To/File")
当pySFTP发起连接时,它将尝试使用您传入的文件。如果由于密钥文件而失败,则会引发身份验证异常。
以下是我找到答案的链接:https://pysftp.readthedocs.io/en/release_0.2.7/pysftp.html
答案 1 :(得分:1)
指定仅当服务器具有密码时才使用“密码”很重要。如果您的私钥是受密码保护的私钥,则必须改用“ private_key_pass”。
因此,要使用公共/私有密钥连接到远程服务器,您需要:
1)将公钥上传到服务器
2)使用您的私钥+私钥密码创建连接:
srv = pysftp.Connection(host="host", username="username", private_key="file_with_private_key", private_key_pass="password")