Linux-Telnet-Server verwendet kein Telnet-Protokoll-Handshaking

Linux-Telnet-Server verwendet kein Telnet-Protokoll-Handshaking

Wir versuchen, über ein einfaches Terminalprogramm eine Verbindung zum Linux-Telnet-Dienst herzustellen. Ich vermute, dass der Server standardmäßig auf VT-100 eingestellt ist und der Telnet-Server Handshake-Sequenzen zur Steuerung sendet, in der Erwartung, dass das Terminal mit seinen unterstützten Optionen antwortet, und beim Warten auf die Antwort des Terminals hängt.

Bildbeschreibung hier eingeben (Entschuldigung für die schlechte Bildqualität)

Leider ist das Terminal nur ein einfaches Kommunikationsprogramm und kennt das Telnet-Protokoll nicht.

Gibt es eine Möglichkeit, dem Telnet-Server mitzuteilen (z. B. durch Festlegen eines bestimmten Terminaltyps), dass er nicht mit der Ermittlung der Eigenschaften des Remote-Terminals beginnen, sondern direkt mit der Kommunikation fortfahren soll?

Bearbeiten:

Bitte bearbeiten Sie die Frage mit weiteren Details: Welches Terminal verwenden Sie und um welches „Bare-Communication“-Programm handelt es sich?

Das Kommunikationsprogramm öffnet eine TCP-Verbindung zum Linux-PC über Port 23, sendet dann die auf der Tastatur eingegebenen Zeichen und zeigt die empfangenen Zeichen ohne jegliche Zeichenverarbeitung auf dem Bildschirm an.

Können Sie netcat auf dem Server anstelle von (oder zusätzlich zu) telnetd ausführen und damit debuggen, ob die Kommunikation selbst funktioniert?

Ich bin mir nicht sicher, ich steuere nicht beide Maschinen. Aber ist es 100 % sicher, dass die Maschine, auf der das Terminal läuft, eine Verbindung zur Linux-Maschine herstellen kann und die Linux-Maschine in der Lage ist, Steuerzeichen des Telnet-Protokolls zu senden (Sie können es auf dem Bild sehen – die weißen Zeichen sind 0xff – Startmarkierung der Telnet-Option). Ich kann es nicht 100 %ig sagen, weil ich keine Wireshark-Protokolle habe, aber es scheint, dass die Kommunikation ordnungsgemäß funktioniert und es ein Telnet-Server ist, der keinen Telnet-Protokoll-Handshake durchläuft.

Wenn Sie verbunden sind, möchten Sie sich anmelden oder etwas anderes tun? Können Sie auf dem Terminal etwas Sichereres verwenden, z. B. SSH?

Ja, ich möchte, dass der Telnet-Server „login:“ anzeigt und zur Anmeldung beim System auffordert. Der Telnet-Dienst auf der Linux-Maschine ist betriebsbereit, da es möglich ist, sich von einer dritten Maschine aus mit einem Telnet-Client anzumelden – aber dieser Telnet-Client kennt das Telnet-Protokoll und reagiert darauf. Im oben beschriebenen Fall kennt das Terminalprogramm die Telnet-Steuercodes/das Telnet-Protokoll nicht und zeigt sie als Zeichen ohne weitere Aktion an (Antwort gemäß Telnet-Protokoll).

Antwort1

Zunächst einmal hat die Telnet-Aushandlung nichts mit Terminaltypen zu tun. (Tatsächlich ist der Terminaltypbestimmtwährend der Telnet-Aushandlung.) Sie können Ersteres also nicht deaktivieren, indem Sie Letzteres ändern.

Wie SiedürfenDeaktivieren hängt von der spezifischen Telnetd-Implementierung auf dem Server ab. (Ich habe allein unter Linux fünf verschiedene in.telnetds gezählt, andere Betriebssysteme haben ihre eigenen.)

Manchmal gibt es eine Telnetd-Befehlszeilenoption, die Sie in der Dienstkonfiguration verwenden können (d. h. in einer systemd-.service-Datei oder /etc/inetd).

Wenn alles fehlschlägt, können Sie einfach Ihre eigene gepatchte Telnetd-Version kompilieren. Alle Linux-Distributionen bieten eine Möglichkeit, Pakete anhand des offiziellen Rezepts neu zu erstellen (dpkg-buildpackage, makepkg …).

verwandte Informationen