我正在尝试使用python连接到SFTP站点,但已知的_hosts文件在我的windows 10计算机上不存在。我联机发现主机密钥在首次连接到服务器时出现:https://winscp.net/eng/docs/ssh_verifying_the_host_key
如何将其转换为可在python代码中使用的已知_hosts文件?
我尝试创建一个文件,如:hostname ssh rsa 2EP。。。8MZ
在上面的示例中,但我收到一个无效的主机密钥错误:错误(“不正确的填充”)
谢谢你。
import pysftp
cnopts = pysftp.CnOpts(knownhosts='C:\\Users\\Documents\\known_hosts')
with pysftp.Connection('xxx',username='xxx', password='xxx',cnopts=cnopts) as sftp:
localpath='TEST.txt'
remotepath='TEST.txt'
sftp.put(localpath,remotepath)
sftp.close()
首先,您需要真正了解您正在使用的协议。在你的问题中,你多次提到FTP,你的代码——你正在谈论的概念(已知的主机)是SFTP。
FTP和SFTP是两种完全不同的协议,FTP用于在客户端和服务器之间传输文件,SFTP用于在SSH客户端和服务器之间移动文件。
解决了的!!!所以我在windows上使用FileZilla和WinScp进行sftp传输,但C:\Users。。。。据我所知,ssh文件从未存在过。我下载了Windows SSH客户端:https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/
然后使用PowerShell连接到服务器。当您输入命令:ssh主机名
时,它将声明RSA指纹,并询问您是否要连接。输入是,它将返回“警告:永久添加“主机名”到已知主机列表中。然后. ssh文件将出现在您的C:\用户...... ssh目录中。然后可以在python中引用。
非常感谢。