2012-07-03 104 views
11

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

但是,我想确保它不是对网络上任何人都可以自由访问的,所以我想要进行身份验证和加密。 Telnet在身份验证方面较弱,不提供加密。 SSH通常比Telnet更受欢迎。

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

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

零配置

另一个问题是,怎么会这样的端口与零配置DNS-SD公布?例如。 Telnet + RFC-2217串行端口(通过SSH传输)如何能够通过Zeroconf进行广告? (普通的Telnet + RFC-2217可以从我可以告诉被标榜为_telnetcpcd._tcp

+0

任何理由不只是两端运行腻子? http://superuser.com/questions/270793/connect-two-computers-together-via-a-rs232-serial-port –

+0

这是一个利基无线电通信应用程序,我想使PC连接到无线电调制解调器通过本地网络进行拨号访问。然后客户端PC将使用虚拟串行端口,并使用通常的AT命令拨打数据电话。 –

+0

通过SSH的RFC2217,正如您所建议的,听起来像是完美的解决方案。我不确定它有什么尴尬......看起来很合适。 – Brad

回答

3

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

你没有找到任何这样做的免费项目的原因很简单 - 大多数开源项目将协议中的传输层安全性分开(出于很好的理由)。您可以重新使用安全组件(本例中为SSH)并将其应用于您的不安全协议(例如,与RFC-2217兼容),而不是为每个应用程序重新设计轮子。

只需使用SSH隧道或stunnel来保护连接。对于Windows客户端,您可以使用com2com和* nix系统,如ttyd。例如,在初始设置后,甚至不需要手动启动,因此用户只需建立SSH隧道(例如通过PuTTY)。

  • com2com
  • socat,使用ptyopenssl-listen,你可以做很多你想要什么(略违背了我上面写的,因为它实际上实现传输层安全)
4

我不知道SSH隧道是尴尬的,你想:

-W主机:端口
请求将客户端上的标准输入和输出通过安全通道转发到端口上的主机。意味着-N-TExitOnForwardFailureClearAllForwardings,并与协议版本2只适用。

下面是隧道很短的SMTP会话的样子(黑体打字输入):

$ ssh -W mail.server.com:25 [email protected] 
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的输入和输出处理。

0

SSH规定"requesting a pseudo-terminal""pseudo-terminal encoded terminal modes"。它提供了设置波特率,位,奇偶校验,停止位配置。可以设置PARMRK以接收组帧错误和中断情况。然而,SSH协议似乎目前缺少设置中断条件的任何命令,或者设置DTR和RTS调制解调器硬件线路,或者获得DSR,CTS,DCD和RING调制解调器硬件线路。

请参见: