2012-07-03 6 views
11

Ich möchte eine serielle Schnittstelle über das Netzwerk verfügbar machen. RFC-2217 bietet Erweiterungen für Telnet, um zusätzliche Informationen zum seriellen Anschluss, wie Geschwindigkeit, Datenbits, Stoppbits und Hardware-Handshaking-Leitungen, zu transportieren.Protokoll für remote serielle Schnittstelle, mit Authentifizierung und Verschlüsselung

Ich möchte jedoch sicherstellen, dass es nicht für jedermann im Netzwerk frei zugänglich ist, also möchte ich Authentifizierung und Verschlüsselung durchführen. Telnet ist bei der Authentifizierung schwach und bietet keine Verschlüsselung. SSH wird im Allgemeinen über Telnet bevorzugt.

Gibt es ein Protokoll, das den seriellen Porttransport über SSH ermöglicht, ähnlich wie RFC-2217?

Ich realisiere eine Option könnte sein Telnet + RFC-2217 durch einen SSH-Tunnel tunneln. Das ist technisch machbar, obwohl es in der Praxis ein wenig peinlich ist.

Zeroconf

Die andere Frage ist, wie könnte ein solcher Port mit Zeroconf DNS-SD geworben werden? Z.B. Wie kann ein serieller Telnet + RFC-2217-Port, der über SSH getunnelt wird, mit Zeroconf beworben werden? (Plain Telnet + RFC-2217 könnte als _telnetcpcd._tcp von beworben werden, was ich sagen kann.)

+0

Gibt es Gründe, nicht nur PuTTY laufen an beiden Enden? http://superuser.com/questions/270793/connect-two-computers-together-via-a-rs232-serial-port –

+0

Es ist für eine Nische Funkkommunikationsanwendung, und ich möchte PCs ermöglichen, eine Verbindung mit dem Funkmodem herzustellen über ein lokales Netzwerk, für den Einwählzugriff. Der Client-PC würde dann eine virtuelle serielle Schnittstelle und die üblichen AT-Befehle verwenden, um einen Datenanruf zu wählen. –

+0

RFC2217 über SSH, wie Sie vorgeschlagen haben, klingt wie die perfekte Lösung für mich. Ich bin mir nicht sicher, was daran unangenehm ist ... scheint gut zu passen. – Brad

Antwort

3

Was Sie wollen, ist eine gesicherte serielle-über-LAN-Verbindung.

Der Grund, warum Sie kein freies Projekt finden, das das tut, ist einfach - die meisten Open-Source-Projekte trennen die Transportschichtsicherheit vom Protokoll (aus guten Gründen). Anstatt das Rad für jede Anwendung neu zu erfinden, können Sie einfach die Sicherheitskomponente (in diesem Fall SSH) wiederverwenden und auf Ihr ungesichertes Protokoll anwenden (zum Beispiel RFC-2217-kompatibel).

Verwenden Sie einfach einen SSH-Tunnel oder Stunnel, um die Verbindung zu sichern. Für Windows-Clients können Sie com2com und für * nix systems so etwas wie ttyd verwenden.

com2com zum Beispiel muss nach der ersten Einrichtung nicht einmal manuell gestartet werden, sodass Ihre Benutzer nur einen SSH-Tunnel einrichten müssen (z. B. über PuTTY).

  • com2com
  • socat, mit pty und openssl-listen Sie ziemlich viel tun genau das, was Sie wollen (im Widerspruch zu etwas, was ich oben geschrieben habe, weil es tatsächlich hat Transport Layer Security implementieren)
4

Ich bin nicht sicher, dass SSH-Tunneling als umständlich ist, wie Sie denken:

-WGastgeber: Port
Anforderungen, dass die Standardeingabe und -ausgabe auf dem Client über den sicheren Kanal an den Host am Port weitergeleitet werden. Impliziert N, -T, ExitOnForwardFailure und ClearAllForwardings und arbeitet mit Protokoll, Version 2 nur.

Hier ist, was Tunneling eine kurzen SMTP-Sitzung wie (die Eingabe von fettgedruckt) aussieht:

$ 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 

keine separate Einstellung eines Tunnel und dann an dieser Port anschließen, nur kochenden Eingang und Ausgang von den ssh verarbeiten.

0

SSH stellt "requesting a pseudo-terminal" mit "pseudo-terminal encoded terminal modes" zur Verfügung. Es ermöglicht die Einstellung von Baudrate, Bits, Parität und Stopp-Bits. Es ist möglich, PARMRK zu setzen, um Framing-Fehler und Break-Bedingungen zu erhalten. Es scheint jedoch, dass das SSH-Protokoll derzeit keine Befehle an Set eine Unterbrechungsbedingung gibt, oder DTR und RTS-Modem-Hardwareleitungen zu setzen, oder DSR, CTS, DCD und RING-Modem-Hardwareleitungen zu erhalten.

Siehe: