Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用pysftp密钥错误将sftp转换为aws lightsail python_Python_Format_Pem_Pysftp - Fatal编程技术网

使用pysftp密钥错误将sftp转换为aws lightsail python

使用pysftp密钥错误将sftp转换为aws lightsail python,python,format,pem,pysftp,Python,Format,Pem,Pysftp,我的aws ssh密钥为awskey.pem。 我正在尝试使用PySTFP将sftp发送到主机 import pysftp as sftp keyfile='c:\\awskey.pem' Cnopts=sftp.CnOpts() Cnopts.hostkeys.load(keyfile) srv=sftp.connection(host ='xx.xx.xx.xx',cnopts=Cnopts) lpath='c:\\test.txt' rpath='test.txt' srv.put(lp

我的aws ssh密钥为awskey.pem。 我正在尝试使用PySTFP将sftp发送到主机

import pysftp as sftp

keyfile='c:\\awskey.pem'
Cnopts=sftp.CnOpts()
Cnopts.hostkeys.load(keyfile)
srv=sftp.connection(host ='xx.xx.xx.xx',cnopts=Cnopts)
lpath='c:\\test.txt'
rpath='test.txt'
srv.put(lpath,rpath)
srv.close()
读取pem文件时似乎出现问题 当我得到错误时
'pysftp.exceptions.HostKeysException:找不到主机密钥'
在搜索其他网站时,没有讨论 密钥文件的格式。
不确定它是否应该是一个 格式,否则我必须将其转换为其他格式。
在这上面花了两天的时间之后,我不再领先了

keyfile='c:\\awskey.pem'     
srv=sftp.connection(host ='xx.xx.xx.xx',username='user',private_key=keyfile)
现在我得到了错误
pysftp.exceptions.HostKeysException:未找到主机密钥
一定是在什么地方漏掉了什么。 这是在Windows 10上,因此没有.ssh/known_hosts文件。
我需要检索主机密钥吗?

或者按照其他地方的建议切换回PySTFP 0.2.8?

您的问题与服务器主机密钥有关。那就看吧

您的问题与您的私钥无关,您应该使用私钥进行身份验证。私钥转到的
private\u key
参数。



另请参阅我关于的文章。

最终使其工作,因为Filezilla只与 密钥文件、用户、主机IP,然后将主机密钥设置为“无” 设置CnOpts对hostip的调用后工作正常

import pysftp as sftp

hostip  = "xx.xx.xx.xx"
keyfile ='c:\\awskey.pem'
userb   = "bitnami"

Cnopts=sftp.CnOpts(hostip)
Cnopts.hostkeys = None

srv=sftp.connection(host = hostip,
                    username=userb,
                    cnopts=Cnopts)


lpath='c:\\test.txt'
rpath='apps/wordpress/htdocs/mytheme/test.txt'
srv.put(lpath,rpath)
srv.close()

我也有同样的问题。以下是我为解决以下问题而采取的步骤:

  • 打开终端并导航到包含
    .pem
    文件的文件夹
  • 运行chmod 400 keyfile.pem
  • 使用OpenSSH将ssh连接到您的实例:
    ssh-i“keyfile.pem”USERNAME@IP_OF_INSTANCE
  • 现在可以返回运行python脚本了

    说明:

    pysftp在“已知_主机”中搜索ssh密钥项。第一次使用SSH访问实例时,OpenSSH会自动在“已知的_主机”中为其创建一个条目,PySTFP现在可以找到该条目

    上面步骤2的原因是AWS对密钥文件要求更严格的权限

    Windows用户注意事项:


    如果您尝试使用PuTTy来执行此操作,pysftp将无法定位SSH条目,因为PuTTy将它们存储在Windows注册表中。相反,您可以在Windows上安装并使用OpenSSH,然后在bash终端(如Git bash)中,您可以按照上面相同的3个步骤进行操作。

    最终实现了它。
    已在win10上安装ubuntu。
    使用ssh-i“key.pem”登录到awsuname@aws
    它保存了已知的\u hosts文件。
    必须使用ssh keygen和来自

    以更正该文件。
    最后将已知的_主机从/root/.ssh复制到c:/user/myname/.ssh和
    不是从/home/.ssh/
    所以代码现在是

    awshost="www.xxxxxxx.com"
    keyfile=r'C:\files\docs\1-AWS\LightsailDefaultKey-us-west-2.pem'
    known=r'C:\Users\myname\.ssh\known_hosts'
    cn = sftp.CnOpts(knownhosts=known)
    
    srv = sftp.Connection(host=awshost,
                    username='bitnami',
                    private_key=keyfile,
                    cnopts=cn)
    

    而且它连接时没有任何错误

    ,即来自Amazon web services的AWS有一个------BEGIN RSA私钥------MiieowibaakCaqeay您仍然没有抓住要点。这不是一个解决办法。通过设置
    Cnopts.hostkeys=None
    禁用主机密钥验证,什么是安全漏洞。并不是说“Filezilla工作”是这样的。您可以在任何SFTP服务器上执行此操作,但这是错误的。非常感谢您的帮助,我们将在下周尝试此操作,最终使其正常工作。已在win10上安装ubuntu。使用ssh-i“key.pem”登录到awsuname@aws它保存了已知的_hosts文件。必须从