Ошибка аутентификации 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.
Надеюсь, это поможет!