确保跨机器的安全性

目标: 确保两台不同的机器之间的安全通信。

教程级别: 高级

时间: 5分钟

背景

之前的教程都是在同一台机器上使用两个ROS节点,将所有的网络通信都发送到本地主机接口。现在我们将扩展这个场景,涉及多台机器,因为认证和加密的好处变得更加明显。

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

创建第二个密钥库

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

ssh Bob
mkdir ~/sros2_demo
exit

复制文件

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

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

警告

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

这将非常快,因为只需复制一些非常小的文本文件。现在,我们已经准备好运行多机器人交谈者/侦听者演示了!

启动节点

环境设置完成后,在 Bob 上运行对话器:

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 图中添加更多机器。