我需要一种将 SSH 连接到串行端口的方法。有一个设备连接在带有外壳的串行端口上。我基本上想将 SSH 客户端直接通过管道连接到串行端口。基本上,您通过 SSH 连接到串行控制台。
SSH 客户端 -> SSH 服务器 -> 串口连接设备。
我怎样才能做到这一点?将 SSH 桥接到串行端口。客户端不应执行任何命令。它应该直接在串行控制台中。
答案1
编写一个小脚本,将 SSH 服务器上的终端会话连接到串行端口,而无需任何命令行参数。例如,您可以使用cu
如下命令:
#!/bin/sh
exec cu -l /dev/ttyS0 -s 115200 # add/modify options if needed
将其保存到 例如/usr/local/bin/serial-connection
并将其标记为可执行chmod a+x /usr/local/bin/serial-connection
。
将路径名添加/usr/local/bin/serial-connection
到 file /etc/shells
。
创建用于串行连接的 Linux 用户。您可以随意命名它 - 例如,serial
.设置密码并验证用户是否可以正常登录。
最后,将serial
用户的 shell 更改为/usr/local/bin/serial-connection
:
chsh -s /usr/local/bin/serial-connection serial
现在,当serial
用户登录时,用户的 shell 会自动启动 - 但现在它实际上是将 SSH 会话连接到串行端口的命令。如果该命令因任何原因结束,SSH 会话将自动结束。
要终止连接,如果使用 PuTTY 或类似工具,则serial
用户需要键入(波浪号-点) ;如果使用 OpenSSH 客户端,则需要键入 (波浪号-波浪号-点)。偶然地,OpenSSH 客户端都将用作转义字符:在行首键入两次将发出一个波浪号字符。~.
~~.
cu
~
cu