Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Python PYSTFP失败,带“;找不到主机X的主机密钥“;部署Django/Heroku时_Python_Heroku_Sftp_Paramiko_Pysftp - Fatal编程技术网

Python PYSTFP失败,带“;找不到主机X的主机密钥“;部署Django/Heroku时

Python PYSTFP失败,带“;找不到主机X的主机密钥“;部署Django/Heroku时,python,heroku,sftp,paramiko,pysftp,Python,Heroku,Sftp,Paramiko,Pysftp,我正在尝试部署一个Django web应用程序,它使用PySTFP通过一些视图访问SFTP服务器 这个东西在本地开发中运行得非常好,但是在Heroku上尝试第一次部署时,下面的回溯似乎以一个错误结束。看起来我需要配置主机密钥,我相信我还需要在Heroku的已知主机中设置它们,但我不知道如何做到这一点。在本地开发中,我使用用户/密码访问时没有问题,但Heroku显示了此错误: remote:paramiko.ssh_exception.SSHException:找不到主机somehost.myft

我正在尝试部署一个Django web应用程序,它使用PySTFP通过一些视图访问SFTP服务器

这个东西在本地开发中运行得非常好,但是在Heroku上尝试第一次部署时,下面的回溯似乎以一个错误结束。看起来我需要配置主机密钥,我相信我还需要在Heroku的已知主机中设置它们,但我不知道如何做到这一点。在本地开发中,我使用用户/密码访问时没有问题,但Heroku显示了此错误:

remote:paramiko.ssh_exception.SSHException:找不到主机somehost.myftp.org的主机密钥
您可以在此处看到整个输出:

remote:----->正在压缩。。。
远程:完成:68.8米
远程:-->正在启动。。。
遥控器:!已声明的Release命令:在命令成功之前,此新版本将不可用。
远程:发布v16
远程:https://somehostonlineproject.herokuapp.com/ 部署到Heroku
远程:
远程:正在验证部署。。。完成。
远程:正在运行释放命令。。。
远程:
远程:=============>ParseResult(scheme='',netloc='',path='somehost.sytes.net',params='',query='',fragment='')
远程:/app/.heroku/python/lib/python3.7/site packages/pysftp/_init__.py:61:UserWarning:无法从/app/.ssh/known_主机加载主机密钥。您需要显式加载主机密钥(cnopts.HostKeys.load(filename))或禁用主机密钥检查(cnopts.HostKeys=None)。
远程:警告。警告(wmsg,用户警告)
远程:回溯(最近一次呼叫最后一次):
远程:文件“manage.py”,第31行,在
远程:从命令行(sys.argv)执行命令
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/_init__.py”,第381行,从命令行执行
远程:utility.execute()
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/_init__.py”,执行中第375行
远程:self.fetch_命令(子命令)。从_argv(self.argv)运行_
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/base.py”,第323行,在运行时从
远程:self.execute(*args,**cmd_选项)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/base.py”,执行中第361行
远程:self.check()
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/base.py”,第390行,选中
远程:包括部署检查=包括部署检查,
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/commands/migrate.py”,第65行,在运行检查中
远程:issues.extend(super()。_run_checks(**kwargs))
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/management/base.py”,第377行,在运行检查中
远程:返回检查。运行检查(**kwargs)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/checks/registry.py”,第72行,在运行检查中
远程:新建错误=检查(应用程序配置=应用程序配置)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/checks/url.py”,第40行,在check\u url\u namespaces\u unique中
远程:所有\u名称空间=\u加载\u所有\u名称空间(解析器)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/core/checks/url.py”,第57行,在加载所有名称空间中
远程:url\u patterns=getattr(解析器,'url\u patterns',[])
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/utils/functional.py”,第80行,在__
远程:res=instance.\u dict\u\u[self.name]=self.func(实例)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/url/resolvers.py”,第584行,url_模式
远程:patterns=getattr(self.urlconf_模块,“urlpatterns”,self.urlconf_模块)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/utils/functional.py”,第80行,在__
远程:res=instance.\u dict\u\u[self.name]=self.func(实例)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/url/resolvers.py”,第577行,在urlconf_模块中
远程:返回导入_模块(self.urlconf_名称)
远程:文件“/app/.heroku/python/lib/python3.7/importlib/_init__.py”,第127行,在导入模块中
远程:返回_引导。_gcd_导入(名称[级别:],包,级别)
远程:文件“”,第1006行,在\u gcd\u导入中
远程:文件“”,第983行,在_find_和_load中
远程:文件“”,第967行,在“查找”和“加载”中解锁
远程:文件“”,第677行,在\u加载\u解锁
远程:exec_模块中的文件“”,第728行
远程:文件“”,第219行,在已删除帧的调用中
远程:文件“/app/config/url.py”,第27行,在
remote:path(“browse/”,include(“django_sftpbrowser.url”,namespace=“sftpbrowser root”),name='browse\u option'),
远程:文件“/app/.heroku/python/lib/python3.7/site packages/django/url/conf.py”,第34行,include中
远程:urlconf_模块=导入_模块(urlconf_模块)
远程:文件“/app/.heroku/python/lib/python3.7/importlib/_init__.py”,第127行,在导入模块中
远程:返回_引导。_gcd_导入(名称[级别:],包,级别)
远程:文件“”,第1006行,在\u gcd\u导入中
远程:文件“”,第983行,在_find_和_load中
远程:文件“”,第967行,在“查找”和“加载”中解锁
远程:文件“”,第677行,在\u加载\u解锁
远程:exec_模块中的文件“”,第728行
远程:文件“”,第219行,在已删除帧的调用中
远程:文件“/app/django_sftpbrowser/url.py”,第2行,在
远程:从。视图导入浏览页面
远程:文件“/app/django_sftpbrowser/views.py”,第9行,在
远程:srv=pysftp.Connection(settings.SOMEHOST\u SFTP\u SERVER\u URL,username='madtyn',password=settings.SFTP\u password)
远程:文件“/app/.heroku/python/lib/python3.7/site packages/pysftp/_init__.py”,第132行,在_init中__
远程:self.\u t连接['hostkey']=self.\u cnopts.get\u hostkey(主机)
远程:
from base64 import decodebytes
# ...

keydata = b"""AAAAB3NzaC1yc2EAAAADAQAB..."""
key = paramiko.RSAKey(data=decodebytes(keydata))
cnopts = pysftp.CnOpts()
cnopts.hostkeys.add('example.com', 'ssh-rsa', key)
 
with pysftp.Connection(host, username, password, cnopts=cnopts) as sftp: