Zum Hauptinhalt springen

Viele Standorte schreiben vor, dass Sie sich nicht mehr mit Telnet mit dem System verbinden, sondern stattdessen SSH verwenden. Der Grund dafür ist die höhere Sicherheit. Wenn Sie sich mit Telnet anmelden, werden Ihr Passwort und alle anderen Daten im Klartext gesendet. Jeder mit einem Netzwerkanalysator kann lesen, was Sie gesendet haben. SSH hingegen verschlüsselt alle Daten, so dass sie nicht gelesen werden können. Die Annahme, dass die Telnet- und SSH-Dämonen ein austauschbares Benutzererlebnis bieten, ist falsch.

Zunächst einmal gibt es viele verschiedene SSH- und Telnet-Clients. Diese haben unterschiedliche Benutzeroberflächen und verwenden möglicherweise unterschiedliche Terminaltypen. Selbst wenn sie denselben Terminaltyp verwenden, können sie sich unterschiedlich verhalten, da sie ein Terminal emulieren und Emulationen nicht perfekt sind. Aber selbst wenn man die Unterschiede in der Client-Software außer Acht lässt, gibt es mehrere subtile und nicht so subtile Unterschiede zwischen einer Sitzung, die mit einem Telnet-Daemon (entweder telnetd oder telnet_msd) verbunden ist, und einer, die mit dem SSH-Daemon verbunden ist. Außerdem gibt es eine Reihe von Fehlern, auf die ich eingehen werde. Beachten Sie, dass ich den SSH-Daemon aus dem Internet Security Pack (ISP) für OpenVOS Version 2.1.0k verwende. Dies ist die neueste Version, die zum Zeitpunkt des Schreibens dieses Artikels verfügbar war.

Benutzer-Namen:

Bevor Sie sich überhaupt anmelden, gibt es einen Unterschied in der Art und Weise, wie Telnet und SSH Ihren Benutzernamen behandeln. Bei den Telnet-Dämonen können Sie sich mit einer beliebigen eindeutigen Variante Ihres Benutzernamens anmelden, wobei die Groß- und Kleinschreibung keine Rolle spielt. Mit dem Benutzernamen Noah_Davids kann ich mich als Noah_D, noah_d, NoAh_D oder NoAh_DaViDs anmelden, wenn ich Telnet verwende, aber mit SSH funktioniert nur Noah_Davids. Mein Alias nd funktioniert auf die gleiche Weise. Mit Telnet kann ich nd, ND oder nD verwenden, aber mit SSH funktioniert nur nd.

Namen der Gruppe:

Die Anmeldeaufforderung, die bei einer Telnet-Verbindung angezeigt wird, erlaubt mir die Angabe eines Gruppenname

telnet 164.152.77.217
Versucht...
Verbunden mit 164.152.77.217.
Escape-Zeichen ist '^]'.

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 15:24:14
Anmeldung nd.SysAdmin
Passwort? [Passwort hier eingegeben]

Noah_Davids.SysAdmin eingeloggt am %phx_vos#m17 am 12-12-12 15:24:55 mst.
Abbildung 1 - Telnet-Anmeldung mit Gruppennamen

Aber das SSH-Protokoll erlaubt nur einen Benutzernamen. Wenn ich den Gruppennamen einfüge, wird er als Teil des Benutzernamens behandelt und die Anmeldung schlägt fehl.

>system>openssl>bin>ssh nd.SysAdmin@164.152.77.217

nd.SysAdminDas Passwort von @164.152.77.217 lautet: [hier eingegebenes Passwort].

Erlaubnis verweigert, bitte versuchen Sie es erneut.
nd.SysAdmin@164.152.77.217's password:
Abbildung 2 - SSH-Anmeldung mit Gruppennamen

Sobald Sie angemeldet sind, können Sie Ihre Gruppe mit einer Unteranmeldung ändern (siehe jedoch den Abschnitt über ssl-403 unten für aktuelle Einschränkungen)

Passwort-Unterschiede:

Der größte Unterschied bei der Handhabung von Kennwörtern zwischen Telnet- und SSH-Verbindungen besteht darin, dass SSH keine Kennwörter zur Authentifizierung erfordert. Sie können ein öffentliches/privates Schlüsselpaar einrichten und den gesamten Schritt der Passworteingabe überspringen. Unter Stratus STCP SSH einrichten, um die Authentifizierung mit öffentlichen Schlüsseln zu verwenden, finden Sie eine Beschreibung, wie Sie das einrichten.

Wenn Sie Passwörter verwenden, gibt es einige Unterschiede, mit denen Sie umgehen müssen. Erstens wird das Ablaufen von Kennwörtern anders gehandhabt. Bei Telnet warnt Sie die Anmeldeaufforderung, wenn Ihr Kennwort abläuft, und Sie können es ändern.

telnet 164.152.77.217
Versucht...
Verbunden mit 164.152.77.217.
Escape-Zeichen ist '^]'.

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 14:04:40
Anmeldung nd
Kennwort? [aktuelles Passwort hier eingegeben]

Ihr Passwort wird in 5 Tagen ablaufen.
Neues Passwort (erster Eintrag)?
Abbildung 3 - Warnung/Eingabeaufforderung zum Ablauf des Kennworts für die Telnet-Verbindung

SSH wird Sie warnen, aber Sie haben keine Möglichkeit, es zu ändern. Sie müssen den Befehl change_password verwenden, um Ihr Passwort ungültig zu machen, wodurch Sie gezwungen sind, Ihr Passwort bei der nächsten Anmeldung zu ändern.

ssh nd@164.152.77.217
Das Passwort von nd@164.152.77.217: [hier wird das aktuelle Passwort eingegeben]

Ihr Passwort wird in 5 Tagen ablaufen.
Noah_Davids.CAC hat sich auf %phx_vos#m17 am 13-01-09 13:06:35 mdt angemeldet.

Willkommen.

bereit 13:06:35
passwort_ändern
Ihr Passwort ist nicht mehr gültig. Sie müssen es bei der nächsten Anmeldung ändern.
bereit 13:06:49
Abbildung 4 - Warnung vor Ablauf des Passworts der SSH-Verbindung
und Befehl change_password

Sobald Ihr Passwort abläuft (oder Sie es mit dem Befehl change_password ungültig gemacht haben), werden Sie aufgefordert, es zu ändern. Im Gegensatz zu Telnet ist dies nicht optional, Sie müssen Ihr Passwort an dieser Stelle ändern. Nach dem Ändern Ihres Passworts werden Sie automatisch abgemeldet und müssen sich erneut anmelden.

ssh nd@164.152.77.217
Das Passwort von nd@164.152.77.217:

WARNUNG: Ihr Passwort ist abgelaufen.
Sie müssen Ihr Passwort jetzt ändern und sich erneut anmelden!
Aktuelles Passwort? [aktuelles Passwort hier eingegeben]

Neues Passwort (erster Eintrag)? [neues Passwort hier eingegeben]

Neues Passwort (zweiter Eintrag)? [neues Passwort hier eingegeben]

Verbindung zu 164.152.77.217 geschlossen.
Abbildung 5 - Ändern des Passworts während der SSH-Verbindung

Ein weiterer Unterschied ist, dass SSH-Verbindungen keine Challenge-Response-Passwörter unterstützen, während Telnet-Verbindungen dies tun.

Subsysteme:

Wenn Sie zum ersten Mal eine Verbindung zu einem Modul mit Telnet herstellen, können Sie mit dem Login-Befehl ein Subsystem

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 11:23:40
login -form -benutzung
 --------------------------------- login -------------------------------
 user_name:
 -privilegiert: wie angemeldet
 -passwort:
 -change_password: no
 -priorität:
 -home_dir:
 -module:
 -Subsystem:
Abbildung 6 - Bei einer Telnet-Verbindung können Sie einen Subsystemnamen angeben

Das ssh-Protokoll hat keinen Mechanismus zur Angabe eines Subsystemnamens. Wenn das Flag must_use_subsystem in Ihrem Registrierungsdatenbankeintrag gesetzt ist, wird automatisch das erste in Ihrem Registrierungseintrag angegebene Subsystem verwendet. Wenn das Bit nicht gesetzt ist, wird kein Subsystem verwendet. (Beachten Sie, dass vor der Version ISP 2.1.0j das erste Subsystem verwendet wurde, auch wenn das must_use_subsystem-Bit nicht gesetzt war). Während die Argumente des Login-Befehls, die vor der eigentlichen Anmeldung verfügbar sind, eine Möglichkeit zur Angabe des Subsystems enthalten (siehe Abbildung 6), ist diese Option nach der Anmeldung nicht mehr verfügbar (siehe Abbildung 7).

login -form -Verwendung
 --------------------------------- login -------------------------------
 group_name: CAC
 -privilegiert: ja
 -priorität:
 -password:
 -modul:
Abbildung 7 - sub-login Befehlszeilenargumente

Die einzige Möglichkeit, in ein Subsystem zu gelangen, wenn Sie einmal angemeldet sind, besteht darin, mit Telnet zurück zum System zu gelangen und sich erneut anzumelden.

telnet 127.0.0.1
Versucht...
Verbunden mit 127.0.0.1.
Escape-Zeichen ist '^]'.

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 11:37:34
Anmeldung nd -subsystem test_ss
Passwort?        

Noah_Davids.CAC eingeloggt auf %phx_vos#m17 am 12-12-13 11:37:49 mst.
dies ist das Test-Subsystem

bereit 11:37:49
Abbildung 8 - Telnet an Loopback-Adresse und erneute Anmeldung, um zu einem Subsystem zu gelangen

 

Zugriffskontrolle:

Sowohl Telnet- als auch SSH-Verbindungen unterstützen TCP Wrappers, damit Sie den Zugriff auf Basis der IP-Adresse einschränken können, aber bei den Telnet-Dämonen ist TCP Wrappers standardmäßig nicht aktiviert und Sie müssen es explizit mit dem Steuerargument -tcpwrapper_check aktivieren. Beim SSH-Dämon hingegen ist TCP Wrappers standardmäßig aktiviert und es gibt keine Möglichkeit, es zu deaktivieren. Sie können es effektiv deaktivieren, indem Sie alle SSH-Verbindungen in der Konfigurationsdatei hosts.allow von TCP Wrappers zulassen.

telnetd -form -usage
 ------------------------------- telnetd ------------------------------
 -service_file:     >system>stcp>telnetservice
 -tcpwrapper_check: nein
 -numerisch: ja
Abbildung 9 - Aktivieren von TCP-Wrappern im telnetd-Daemon

 

telnet_msd -form -usage
 ------------------------------ telnet_msd ----------------------------
 -network_port:     24
 -max_sessions:     28
 -error_severity: 2
 -separate_log: ja
 -log_dir:          >system>stcp>logs
 -vterm_starname: telnet*
 -vterm_login: ja
 -vterm_slave_id:
 -extension: 133
 -force_edit: ja
 -EC_dezimaler_Wert: 8
 -EL_dezimaler_Wert: 21
 -tcpwrapper_check: nein
 -numerisch: nein
Abbildung 10 - Aktivieren von TCP-Wrappern im telnet_msd-Daemon

Der sshd-Daemon unterstützt auch Optionen in der Datei sshd_config, mit denen Sie Benutzer oder Gruppen angeben können, denen der Zugriff mit ssh erlaubt werden soll (die Direktiven AllowUsers und AllowGroups) oder denen der Zugriff mit ssh verweigert werden soll (Direktiven DenyUsers und DenyGroups). Mit diesen Direktiven können Sie Benutzernamen oder Quelldomänen oder Kombinationen davon angeben. Es ist möglich, noah_davids von corp.stratus.com zuzulassen, ihn aber von az.stratus.com zu verweigern.

AllowUsers *@*.stratus.com
DenyUsers *@*az.stratus.com
Abbildung 11 - Beispiel für AllowUsers- und DenyUsers-Direktiven in sshd_config
>System>openssl>bin>ssh nd@164.152.77.217
Das Passwort von nd@164.152.77.217:

Berechtigung verweigert, bitte versuchen Sie es erneut.
nd@164.152.77.217's Passwort:
Abbildung 12 - Anmeldung von phxtest-m15.az.stratus.com aufgrund der DenyUsers-Direktive verweigert

 

Befehlsumgebung:

Nach dem Einloggen zeigt eine Telnet-Verbindung die Standard-VOS-Befehlsumgebung an. SSH ermöglicht es einem Administrator, entweder die Standard-Befehlsumgebung oder die Bash-Shell-Umgebung festzulegen. Dies geschieht auf Basis von Portnummern.

d sshservices

%phx_vos#m17_mas>opt>openssl>etc>sshservices 12-12-13 12:31:31 mst

ssh "window_term" "" "login" 1 1 s$pt_log.m16
ssh2200   "window_term" "-shell"   "bash" 1 1 s$pt_log.m16
Abbildung 13 - sshservices-Datei, Port 22 ist die Standard-VOS-Befehlszeile,
Port 2200 ist die Bash-Shell
>System>openssl>bin>ssh nd@164.152.77.217 -p 2200
Das Passwort von nd@164.152.77.217:

Willkommen.

sh-2.05$
Abbildung 14 - SSH-Verbindung über Port 2200 und Erhalt einer Bash-Shell

 

Umgebungsvariablen:

Standardmäßig setzen Telnet-Verbindungen nur 6 Umgebungsvariablen, während SSH-Verbindungen 12 setzen

env
 HOME =/SysAdmin/Noah_Davids
LOGNAME=Wurzel
PATH=.:/system/command_library:/system/applications_library:/system/maint_librar
+y:/system/nio/command_library:/system/tools_library:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/system.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/system/stcp/include_library/compat:/system/include_library
VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/
+stcp/object_library/complib:/system/posix_object_library/pthread:/system/posix_
+object_library:/system/c_object_library:/system/object_library
TERM=vt100
Abbildung 15 - Eingestellte Umgebungsvariablen bei einer Telnet-Verbindung

 

env
 HOME =/SysAdmin/Noah_Davids
PATH=.:/system/command_library:/system/applications_library:/system/maint_librar
+y:/system/nio/Befehlsbibliothek:/system/tools_Bibliothek:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/system.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/system/stcp/include_library/compat:/system/include_library
VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/
+stcp/object_library/complib:/system/posix_object_library/pthread:/system/posix_
+objekt_bibliothek:/system/c_objekt_bibliothek:/system/objekt_bibliothek
TERM=vt100
TZ=mst+07:00:00
USER=Noah_Davids
LOGNAME=Noah_Davids
MAIL=/var/spool/mail/Noah_Davids
SHELL=/bin/sh
SSH_CONNECTION=164.152.77.34 49573 164.152.77.217 22
SSH_TTY=#s$pt_log.m16_3
Abbildung 16 - Eingestellte Umgebungsvariablen bei einer SSH-Verbindung

 

Gerätetypen:

Schließlich ist dies nicht wirklich ein Unterschied zwischen Telnet und SSH, sondern zwischen den Daemons telnetd und sshd und dem Daemon telnet_msd. Sowohl telnetd als auch sshd verwenden window_term-Geräte, während telnet_msd vterm-Geräte verwendet. Es gibt einige Unterschiede zwischen der Art und Weise, wie vterms- und window_term-Geräte mit einigen Funktionstasten (z. B. CANCEL) in der Befehlszeile umgehen, und der Art und Weise, wie sie rohe Bildschirmausgaben behandeln. Einige Anwendungen, die ihre eigenen Formulare erstellen und nicht aktualisiert wurden, um die neuen s$control OP_CODES zu verwenden, stellen diese Formulare mit window_term-Geräten nicht korrekt dar. Der zweitbeste Weg, mit diesen Anwendungen umzugehen, ist die Verwendung eines SSH-Tunnels, um sich mit dem System zu verbinden. Der Tunnel wird dann so konfiguriert, dass er sich mit dem telnet_msd-Daemon verbindet. Die beste Art, mit der Anwendung umzugehen, ist natürlich, sie zu aktualisieren, um die neuen OP_CODES zu verwenden.

 

Neben den oben genannten Unterschieden, die Telnet und SSH inhärent sind, gibt es ein paar Fehler, die in einer zukünftigen Version behoben werden sollen.

ssl-403 Verfügbare Gruppen:

Bei der Verbindung mit Telnet sind alle in Ihrem Registrierungseintrag angegebenen Gruppen für Sublogins verfügbar, bei ssh jedoch nur die ersten 5 Gruppen.

Angenommen, ich bin bei den Gruppen CAC, SysAdmin, Gruppe_3, Gruppe_4, Gruppe_5, Gruppe_6 registriert. Ich kann eine Unteranmeldung mit einer beliebigen Gruppe über eine Telnet-Verbindung durchführen

telnet 164.152.77.217
Versucht...
Verbunden mit 164.152.77.217.
Escape-Zeichen ist '^]'.

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 15:38:02
Anmeldung nd
Kennwort? [aktuelles Passwort hier eingegeben]

Noah_Davids.CAC hat sich am %phx_vos#m17 um 12-12-12 15:38:08 mst. angemeldet.

Anmeldung Gruppe_5

Noah_Davids.Group_5 eingeloggt auf %phx_vos#m17 am 12-12-12 15:39:39 mst.
bereit 15:39:39
abmelden

Anmeldung Gruppe_6

Noah_Davids.Group_6 hat sich am %phx_vos#m17 um 12-12-12 15:40:13 mst.
bereit 15:40:13
Abbildung 17 - Sub-Logins mit Telnet-Verbindung

Wenn ich jedoch mit ssh versuche, Group_6 zu verwenden, erhalte ich einen Fehler.

>system>openssl>bin>ssh nd@164.152.77.217
Das Passwort von nd@164.152.77.217:

Noah_Davids.CAC eingeloggt auf %phx_vos#m17 am 12-12-12 15:41:02 mst.
bereit 15:41:02

Anmeldung Gruppe_5

Noah_Davids.Group_5 eingeloggt auf %phx_vos#m17 am 12.12.12 15:41:24 mst.
bereit 15:41:24
abmelden

Anmeldung Gruppe_6
Anmeldung: Ungültiges Format im Argument. Gruppe_6 für Gruppenname nicht erlaubt.
bereit 15:41:59
Abbildung 18 - Sub-Logins mit SSH-Verbindung

 

ssl-418 - Der sub_process_level:

Anmeldungen über Telnet haben eine sub_process-Ebene von 0, während Anmeldungen über SSH eine sub_process-Ebene von 3 haben.

telnet 164.152.77.217
Versucht...
Verbunden mit 164.152.77.217.
Escape-Zeichen ist '^]'.

OpenVOS Release 17.1.0ax, Modul %phx_vos#m17
Bitte anmelden 14:15:34
Anmeldung nd
Passwort? [aktuelles Passwort hier eingegeben]

Noah_Davids.CAC eingeloggt auf %phx_vos#m17 am 12-12-13 14:15:39 mst.
bereit 14:15:39
display_line (prozess_info unter_prozess_ebene)
0 
bereit 14:15:49
Abbildung 19 - Eingestellte Sub_Prozessebene bei einer Telnet-Verbindung

 

>system>openssl>bin>ssh nd@164.152.77.217
Das Passwort von nd@164.152.77.217: [hier wird das aktuelle Passwort eingegeben]

Noah_Davids.CAC eingeloggt auf %phx_vos#m17 am 12-12-13 14:12:23 mst.
bereit 14:12:23
display_line (prozess_info sub_process_level)
3 
bereit 14:12:37
Abbildung 20 - Eingestellte Sub_Prozessebene in einer SSH-Verbindung

Update 14. Januar 2013: Es stellt sich heraus, dass dies eine Funktion und kein Fehler ist. Der sshd-Prozess wird erstens gegabelt, wenn start_process ausgeführt wird, um den Abhörprozess zu starten, zweitens, wenn sshd die Verbindung annimmt, und ein drittes Mal, wenn der Benutzeranmeldeprozess erstellt wird. Telnet verwendet einen anderen Mechanismus zum Starten des Benutzerprozesses, der keine geforketen Prozesse zur Folge hat.

Zeitzonenprobleme:

Abschließend möchte ich noch sagen, dass es eine Reihe von Problemen im Zusammenhang mit der Umstellung zwischen Sommer- und Winterzeit oder allgemeiner mit der Umstellung der Zeitzonen gab. Sitzungen, die über SSH eingeloggt waren, spiegelten nicht die neuen Standardeinstellungen wider. Diese Probleme sollten alle in der neuesten Version (2.1.0k) behoben sein.

© 2020 Stratus Technologies.