Ошибка аутентификации VIP кросс-платформенного агента

У меня проблемы с получением двух агентов для общения на разных платформах.

У меня есть две виртуальные машины, работающие во внутренней сети, и на одной из виртуальных машин есть агент, который пытается подключиться и опубликовать на платформе на другой виртуальной машине. Код для соединения и отправки такой же, как в примерах, таких как ForwarderAgent. Я знаю, что агенты могут видеть друг друга и пытаться соединиться, но аутентификация не удалась.

На платформе, к которой я пытаюсь подключиться, я вижу учетные данные, которые предоставляет агент публикации. Однако представленные учетные данные представляют собой закрытый ключ, который создается в

$VOLTTRONHOME/keystores/

каждый раз, когда я запускаю агента. Таким образом, учетные данные меняются каждый раз, когда я запускаю агента.

Я не уверен, как заранее добавить агента в качестве известного идентификатора, если я не знаю учетные данные, которые он будет пытаться использовать.

Я добавил разные адреса в качестве known_hosts и попытался зарегистрировать агентов между двумя платформами, используя открытые ключи, связанные с их установками агентов.

volttron-ctl auth add

но отправляющий агент по-прежнему предоставляет новые учетные данные. Есть ли шаг настройки, который я пропускаю, чтобы агент публиковал со своим непротиворечивым открытым ключом?

1 ответ

Решение

При создании агента для подключения к внешней платформе из установленного агента вы должны использовать следующее в качестве руководства, как это сделать

`` `` `

import gevent
from volttron.platform.vip.agent import Agent

destination_vip="tcp://127.0.0.5:22916?serverkey=dafn..&publickey=adf&secretkey=afafdf"


event = gevent.event.Event()
# Note by specifying the identity, the remote platform will use the same
# keystore to authenticate the agent.  Otherwise a guid is used which 
# changes keys each time.
agent = Agent(address=destination_vip, enable_store=False, identity="remote_identity")
gevent.spawn(agent.core.run)
if not event.wait(timeout=10):
    print("Unable to start agent!"

`` `` `

Обратите внимание, что это было с https://github.com/VOLTTRON/volttron/blob/master/services/core/ForwardHistorian/forwarder/agent.py, однако существует другой механизм, который не требует, чтобы адрес destination_vip был в него включены открытые и секретные ключи, которые находятся в разработке.

Кроме того, публичный ключ, который вы упоминаете в приведенном выше коде, должен находиться в файле auth.json, и / или вам необходимо разрешить все соединения через /.*/ в файле auth.json.

Надеюсь, это поможет!

Другие вопросы по тегам