我以前通过vb连接到客户机SFTP。net脚本,该脚本已成功运行,但我不想使用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.
库正在尝试查找已知的\u主机
文件以执行主机密钥检查。您可以禁用它,但正如文档中所述,强烈建议您禁用它。
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
更好的方法是使用CnOpts
设置known_hosts
路径。我没有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