serial port - Protocolo para puerto serie remoto, con autenticación y cifrado
serial-port network-protocols (3)
Me gustaría que un puerto en serie esté disponible en la red. RFC-2217 proporciona extensiones a Telnet para transportar información adicional del puerto serie, como velocidad, bits de datos, bits de parada y líneas de handshaking de hardware.
Sin embargo, quiero asegurarme de que no sea de acceso libre para cualquiera en la red, por lo que quiero hacer la autenticación y el cifrado. Telnet es débil en autenticación y no proporciona cifrado. SSH es generalmente preferido sobre Telnet.
¿Hay algún protocolo que permita el transporte en puerto serie a través de SSH, similar al RFC-2217 ?
Me doy cuenta de que una opción podría ser tunelizar Telnet + RFC-2217 a través de un túnel SSH. Eso es técnicamente factible, aunque en términos prácticos es un poco incómodo.
Zeroconf
La otra pregunta es, ¿cómo podría anunciarse un puerto de este tipo con Zeroconf DNS-SD? Por ejemplo, ¿cómo se podría publicitar con Zeroconf un puerto serie Telnet + RFC-2217, que se tuneliza a través de SSH? (Claramente, Telnet + RFC-2217 podría anunciarse como _telnetcpcd._tcp
por lo que puedo decir).
Lo que quiere es una conexión segura de serie a través de LAN.
La razón por la cual no se encuentra ningún proyecto gratuito que haga esto es simple: la mayoría de los proyectos de código abierto separan la seguridad de la capa de transporte del protocolo (por buenas razones). En lugar de reinventar la rueda para cada aplicación, puede volver a utilizar el componente de seguridad (SSH en este caso) y aplicarlo a su protocolo no seguro (compatible con RFC-2217, por ejemplo).
Simplemente use un túnel SSH o stunnel para asegurar la conexión. Para los clientes de Windows, puede usar com2com y para los sistemas * nix algo como ttyd .
com2com , por ejemplo, ni siquiera requiere que se inicie manualmente después de la configuración inicial, por lo que los usuarios solo tienen que establecer un túnel SSH (a través de PuTTY, por ejemplo).
No estoy seguro de que el túnel SSH sea tan incómodo como piensas:
-W host : puerto
Solicita que la entrada y salida estándar en el cliente se reenvíen al host en el puerto a través del canal seguro. Implica -N , -T , ExitOnForwardFailure y ClearAllForwardings y funciona únicamente con Protocol version 2.
A continuación se detalla el aspecto del túnel de una sesión SMTP corta (entrada escrita en negrita):
$ 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
No hay que configurar un túnel por separado y luego conectarse a ese puerto, simplemente conectar la entrada y la salida del proceso ssh.
SSH proporciona "solicitud de un pseudo-terminal" con "modos de terminal codificados pseudo-terminales" . Proporciona la configuración de velocidad en baudios, bits, paridad, configuración de bits de parada. Es posible configurar PARMRK
para recibir errores de trama y condición de interrupción. Sin embargo, parece que el protocolo SSH actualmente carece de comandos para establecer una condición de interrupción, o para establecer líneas de hardware de módem DTR y RTS, o para obtener líneas de hardware de módem DSR, CTS, DCD y RING.
Ver: