确保跨机器的安全

目标: 使两台不同的机器安全地通信。

教程级别: 高级

时间: 5 分钟

背景

在继续之前,请确保您已完成 设置安全性 教程。

之前的教程使用同一台机器上的两个 ROS 节点通过本地主机接口发送所有网络通信。

让我们将该场景扩展到涉及多台机器,因为这样身份验证和加密的好处就会变得更加明显。

假设在之前的演示中创建的密钥库的机器的主机名为“Alice”,并且我们还想使用另一台主机名为“Bob”的机器进行多机“talker/listener”演示。 我们需要将一些密钥从“Alice”移动到“Bob”,以允许 SROS 2 对传输进行身份验证和加密。

创建第二个密钥库

首先在“Bob”上创建一个空的密钥库;该密钥库实际上只是一个空目录:

ssh Bob
mkdir ~/sros2_demo
exit

复制文件

接下来将“talker”程序的密钥和证书从“Alice”复制到“Bob”。 由于密钥只是文本文件,我们可以使用“scp”来复制它们。

cd ~/sros2_demo/demo_keystore
scp -r talker USERNAME@Bob:~/sros2_demo/demo_keystore

请注意,在这种情况下,整个密钥库在不同的机器之间共享,这可能不是理想的行为,因为它可能会导致安全风险。 有关这方面的更多信息,请参阅:doc:部署指南

这将非常快,因为它只是复制一些非常小的文本文件。 现在,我们已准备好运行多机通话器/侦听器演示!

启动节点

环境设置完成后,在“Bob”上运行 talker:

ros2 run demo_nodes_cpp talker --ros-args --enclave /talker_listener/talker

并启动“Alice”上的监听器:

ros2 run demo_nodes_py listener --ros-args --enclave /talker_listener/listener

Alice 现在将收到来自 Bob 的加密消息。

两台机器使用加密和身份验证成功通信后,您可以使用相同的程序将更多机器添加到您的 ROS 图表中。