【问题标题】:Not able to run carbon-cache with manhole enabled启用沙井时无法运行 carbon-cache
【发布时间】:2016-10-25 08:29:23
【问题描述】:

当我尝试通过设置运行carbon-cache.py start

ENABLE_MANHOLE = True
MANHOLE_INTERFACE = 127.0.0.1
MANHOLE_PORT = 7222
MANHOLE_USER = admin
MANHOLE_PUBLIC_KEY = ssh-rsa AAAAB3NzaC1yc2EAAAABiwAaAIEAoxN0sv/e4eZCPpi3N3KYvyzRaBaMeS2RsOQ/cDuKv11dlNzVeiyc3RFmCv5Rjwn/lQ79y0zyHxw67qLyhQ/kDzINc4cY41ivuQXm2tPmgvexdrBv5nsfEpjs3gLZfJnyvlcVyWK/lId8WUvEWSWHTzsbtmXAF2raJMdgLTbQ8wE=

我收到以下错误

Starting carbon-cache (instance a)
An error has occurred: b"ConchError: ('no host keys, failing', None)"
Please look at log file for more information.

日志文件:

25/10/2016 13:50:18 ::     'listen%s' % (self.method,))(*self.args, **self.kwargs)
25/10/2016 13:50:18 ::   File "/opt/graphite/local/lib/python2.7/site-packages/twisted/internet/posixbase.py", line 478, in listenTCP
25/10/2016 13:50:18 ::     p.startListening()
25/10/2016 13:50:18 ::   File "/opt/graphite/local/lib/python2.7/site-packages/twisted/internet/tcp.py", line 1001, in startListening
25/10/2016 13:50:18 ::     self.factory.doStart()
25/10/2016 13:50:18 ::   File "/opt/graphite/local/lib/python2.7/site-packages/twisted/internet/protocol.py", line 74, in doStart
25/10/2016 13:50:18 ::     self.startFactory()
25/10/2016 13:50:18 ::   File "/opt/graphite/local/lib/python2.7/site-packages/twisted/conch/ssh/factory.py", line 41, in startFactory
25/10/2016 13:50:18 ::     raise error.ConchError('no host keys, failing')
25/10/2016 13:50:18 :: twisted.conch.error.ConchError: ('no host keys, failing', None)

刚接触twisted,不知道怎么解决。

【问题讨论】:

    标签: python twisted graphite twisted.conch


    【解决方案1】:

    Twisted 16.1 对 Twisted Conch(实现检修孔功能)进行了更改,使其不再使用硬编码的 SSH 主机密钥对。详情请见https://twistedmatrix.com/trac/ticket/8229

    为了解决这个问题,carbon-cache 应该获取配置变量来指定公共和私有主机密钥,并使用其publicKeysprivateKeys 属性将它们设置在ConchFactory 实例上。我查看了当前实现碳的manhole.py,其中有:

    def createManholeListener(): # ... sessionFactory = ConchFactory(sshPortal) return sessionFactory

    这应该修改如下:

    def createManholeListener(): # ... sessionFactory = ConchFactory(sshPortal) sessionFactory.publicKeys[b'ssh-rsa'] = keys.Key.fromString(settings.MANHOLE_HOST_RSA_PUBLIC_KEY) sessionFactory.privateKeys[b'ssh-rsa'] = keys.Key.fromString(settings.MANHOLE_HOST_RSA_PRIVATE_KEY) return sessionFactory

    这假设密钥是使用ssh-keygen -t rsa 生成的。如果您想支持其他键类型,则两个字典都由指定键类型的字节字符串索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多