我长期使用终端服务器(像这样) 访问各种设备(如交换机和路由器)的串行控制台。
这些终端服务器可以配置为通过 TCP 端口和 SSH 提供串行控制台。因此,我无需使用 COM 端口连接到设备,只需通过 ssh 连接到终端服务器并使用分配给每个物理串行端口的特定 TCP 编号即可。它总是运行良好。
现在我遇到了一个新问题。我有一些通过 USB 连接的设备,但这些设备内部使用 FDTI 芯片。当我将 USB 电缆插入这些设备时,主机上会出现 1 个或多个串行 COM 端口。这也可以正常工作。
但我想做的是让这些“COM 端口”通过 SSH 在终端服务器上可用,即使它们位于 USB/FDTI 接口后面。有没有办法通过软件或(最好)硬件来实现这一点?
我看到了上面链接的同一家供应商拥有带 USB 3.0 端口的终端服务器,但不清楚这是否是我想要的。我想避免使用驱动程序来虚拟化远程 USB 端口,以便它显示为本地 USB 端口(然后可以通过其 HID 配置文件提供 COM 端口)。我更愿意只是能够通过 USB 连接 ssh 到基于 FDTI 的设备后面的特定“COM 端口”。
有这样的事吗?或者有软件解决方案可以通过某种瘦客户端(如 Raspberry PI 或其他中间主机)实现此目的?
我怀疑我可能只需要使用正确的词汇来表达我想要的。我用的词对吗?这有名字吗?
答案1
最简单的方法可能是将计算机(例如 Pi)进入终端服务器。任何运行 Linux 并具有足够 USB 端口的设备都可以:用户只需通过 SSH 进入系统并运行picocom
(或 minicom、或 screen、或 dterm、或 tio 或其他类似软件)即可连接到他们的/dev/ttyUSB##
设备/dev/ttyACM##
。
可以通过 udev 规则控制对单个 tty 设备的访问,以分配文件权限或组所有权,或者可以将用户的常规 shell 替换为仅允许特定命令的自定义强制 shell,或替换为将用户直接连接到其指定串行端口的 shell。(只需运行适当的 Linux 工具,相同类型的系统也可以与支持 IPMI 串行 LAN 的设备一起使用。)最后,ser2net 可用于使串行端口可通过原始 TCP 端口(即 telnet)直接访问。
(在工作中,我们必须为一个 USB 串行端口拼凑一些非常相似的东西 - 但是,使用 PL2303 而不是 FTDI - 因此我们实际上使用备用 RouterBoard Wi-Fi AP 而不是类似 Pi 的计算机,因为 RouterOS 有一个“/system serial-terminal”命令,甚至具有将特定用户直接转储到串行端口的能力。)