python - 无法使用 Python 连接到客户端 SFTP?
问题描述
我以前使用 WinSCP 通过 vb.net 脚本连接到客户端 SFTP,该脚本已成功运行,但我不想使用 WinSCP。我对 Python 很陌生,但认为我对项目的总体目标将更适合使用 Python。
我认为我缺少的可能是公钥和/或我的私钥格式错误。真的很感激这方面的一些帮助,因为我已经被困了好几天尝试不同的事情。
import pysftp
myHostname = 'sftp.name.com'
myUsername = 'username'
myPassword = 'password'
myKey = 'C:\\PrivateKey.ppk'
with pysftp.Connection(host=myHostname, username=myUsername, private_key=myKey, private_key_pass=myPassword) as sftp:
Error received
UserWarning: Failed to load HostKeys from C:\Users\name\.ssh\known_hosts.
解决方案
库正在尝试查找known_hosts
文件以进行主机密钥检查。您可以禁用它,但正如文档中所写,强烈建议不要这样做。
import pysftp
myHostname = 'sftp.name.com'
myUsername = 'username'
myPassword = 'password'
myKey = 'C:\\PrivateKey.ppk'
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection(host=myHostname,
username=myUsername,
private_key=myKey,
private_key_pass=myPassword,
cnopts=cnopts) as sftp:
pass
更好的方法是known_hosts
使用CnOpts
. 我没有 Windows 机器,但根据这个 SA 答案,也许以下方法会起作用:
import os
import pysftp
myHostname = 'sftp.name.com'
myUsername = 'username'
myPassword = 'password'
myKey = 'C:\\PrivateKey.ppk'
knownhosts_path = os.path.join(os.environ['USERPROFILE'], '.ssh', 'known_hosts')
cnopts = pysftp.CnOpts(knownhosts=knownhosts_path)
cnopts.hostkeys = None
with pysftp.Connection(host=myHostname,
username=myUsername,
private_key=myKey,
private_key_pass=myPassword,
cnopts=cnopts) as sftp:
pass
推荐阅读
- c# - C# HttpClient.PostAsync doesn't return or throw an error
- reactjs - TypeError:无法读取未定义 Reactjs 的属性“长度”
- java - Arabic and English combination recrod retrieval from oracle java
- asp.net - 如何从每个输入文件中获取提交的文件数
- javascript - Cannot set headers after they are sent to the client and Unhandled promise rejection
- python - RuntimeError CUDA initialization Failed only in Python
- reactjs - How to parse and render text data from TinyMCE
- encryption - TPM backed Certificate, alternative
- r - Cannot use if else with dplyr
- authentication - 如何在 ASP.NET Core 3.0 中获取 Windows 用户名