11

我想通过网络提供一个串行端口。RFC-2217为 Telnet 提供扩展以传输额外的串行端口信息,例如速度、数据位、停止位和硬件握手线。

但是,我想确保网络上的任何人都不能自由访问它,所以我想做身份验证和加密。Telnet 在身份验证方面很弱,并且不提供加密。SSH 通常优于 Telnet。

是否有任何协议允许通过 SSH 进行串行端口传输,类似于RFC-2217

我意识到一种选择可能是通过 SSH 隧道隧道 Telnet + RFC-2217 。这在技术上是可以实现的,但实际上它有点尴尬。

零配置

另一个问题是,如何使用 Zeroconf DNS-SD 通告这样的端口?例如,一个 Telnet + RFC-2217 串行端口(通过 SSH 隧道传输)如何通过 Zeroconf 发布?_telnetcpcd._tcp(据我所知,普通的 Telnet + RFC-2217 可能会被宣传。)

4

3 回答 3

4

我不确定 SSH 隧道是否像您想象的那样尴尬:

-W host :port
请求将客户端上的标准输入和输出通过安全通道转发到端口上的主机。隐含-N-TExitOnForwardFailureClearAllForwardings并且仅适用于协议版本 2。

下面是一个短的 SMTP 会话的隧道的样子(以粗体输入):

$ ssh -W mail.server.com:25 blahdiblah@server.com
220 mail.server.com ESMTP 
Postfix
ehlo foo.com
250-mail.server.com
250-PIPELINING
250-SIZE
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye

无需单独设置隧道然后连接到该端口,只需管道输入和输出来自 ssh 进程。

于 2012-07-28T02:34:52.927 回答
3

您想要的是一个安全的 LAN 串行连接。

您找不到任何这样做的免费项目的原因很简单——大多数开源项目将传输层安全性与协议分开(有充分的理由)。无需为每个应用程序重新发明轮子,您只需重新使用安全组件(在本例中为 SSH)并将其应用于您的不安全协议(例如,与 RFC-2217 兼容)。

只需使用 SSH 隧道或stunnel来保护连接。对于 Windows 客户端,您可以使用com2com和 *nix 系统,例如ttyd

例如, com2com甚至不需要在初始设置后手动启动,因此您的用户只需建立一个 SSH 隧道(例如通过 PuTTY)。

  • com2com
  • socat,使用ptyopenssl-listen你可以做你想做的事(与我上面写的有点矛盾,因为它确实实现了传输层安全性)
于 2012-07-29T21:53:50.910 回答
0

SSH 提供“请求伪终端”“伪终端编码终端模式”。它提供设置波特率、位、奇偶校验、停止位配置。可以设置PARMRK接收帧错误和中断条件。然而,目前 SSH 协议似乎缺少任何命令来设置中断条件,或设置 DTR 和 RTS 调制解调器硬件线路,或获取 DSR、CTS、DCD 和 RING 调制解调器硬件线路。

看:

于 2016-08-01T02:18:44.977 回答