serial-port network-protocols remote-access

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).

  • com2com
  • socat , utilizando pty y openssl-listen , puede hacer casi exactamente lo que quiere (contradice ligeramente lo que escribí anteriormente porque realmente implementa la seguridad de la capa de transporte)

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: