An an meinen Arbeitsplatzsystemen habe ich inzwischen Opensuse 12.1 am Laufen. Dabei bin ich sowohl beim Upgrade meines PCs und bei einer Neuinstallation auf einem Laptop auf ein Problem mit “ssh” reingefallen. Das Problem trat schon bei Opensuse 11.4 auf. Ich hatte es nur vergessen. Deshalb ein kurzer Beitrag für diejenigen, die auch auf das Problem stoßen. Die nachfolgenden Erkenntnisse sind nicht auf meinem Mist gewachsen; das Wichtigste hat bereits Martin Vidner in einem entsprechenden Novell-Bug-Report als Kommentar geschrieben:
https://bugzilla.novell.com/show_bug.cgi?id=686477
Problembeschreibung
Deaktiviert man nach einer Installation von Opensuse 11.4/12.1 im Zuge der Netzwerkeinrichtung mittels Yast IPV6, so funktioniert danach von einem Remote-PC aus zwar noch der ssh-Login und das Arbeiten im ASCII-Terminal auf dem Opensuse 11.4/12.1-System. Das Starten von X- oder KDE-Applikationen wird aber verweigert.
Bei KDE-Applikationen taucht die Warnung auf, dass kein Zugang zum X-Server möglich sei. Dies obwohl man ggf. auf dem Zielsystem mit “xhost + RemotePCAdresse” den Zugriff explizit zugelassen oder aber entsprechende Auth-Mechanismen und Schlüssel korrekt eingerichtet hat.
Bei Standard-X-Applikationen wie “xterm” erhält man eine Nachricht, dass die Umgebungsvariable DISPLAY nicht gesetzt sei. Ein “echo $DISPLAY” zeigt, dass dies auch stimmt. Eigentlich sollte hier ein “localhost:10.0” als Wert auftauchen.
Problembehebung
Lösung 1: Aktiviert man IPV6 mittel YAST wieder und rebootet man, so läuft danach alles wieder wie man es erwartet.
Lösung 2: Bei diesem Ansatz geht man an die Wurzel des Problems. Diese Lösung ist allerdings nur dann sinnvoll, wenn man IPV6 wirklich nicht verwenden will. Der Grund des Problems liegt in der Konfiguration des SSH-Daemons “sshd”. Die entsprechende Konfigurationsdatei liegt unter
/etc/ssh/sshd_config
Hier gelten weitgehend die Defaulteinstellungen, die man (zumindest bei SuSE) auch in den kommentierten Zeilen der Datei findet. Von Interesse ist die Vorgabe
#AddressFamily any
Auf Basis dieser Einstellungen sucht der ssh-Daemon nach beiden Protokollen gleichzeitig. Obwohl bei deaktiviertem IPV6 nur IPV4 gefunden werden muss. Für reines IPV4 hilft nun statt “any” die Einstellung “inet”, also :
# changed by rmo – because of IPV6 – IPV4 bug (see https://bugzilla.novell.com/show_bug.cgi?id=686477)
AddressFamily inet
Konfigurationsdatei speichern, mittels Yast IPV6 deaktivieren, rebooten und testen. “ssh -X” funktioniert dann von einem Remote-PC aus wie erwartet – obwohl IPV6 auf dem Opensuse 11-4/12.1-Host deaktiviert ist. X-Anwendungen lassen sich nun starten.
Bleibt nur die Frage, wer sich darum kümmern wird, dass bei künftigen Releases das “any” in der sshd-Konfiguration alternativ als IPV6 oder IPV4 interpretiert wird.
Nachtrag 05.12.2012: Zusätzliches sshd-Problem unter Opensuse 12.1 – Fehlermeldung zu DSA-Keys
Bei Upgrades zu und bei einer Neuinstallation von Opensuse 12.1 bin ich darüber gestolpert, dass das Starten des “sshd”-Dämons mit der Meldung:
Generating /etc/ssh/ssh-host-dsa-key
DSA keys must be 1024 bits
Startig SSH daemon
Could not load host key:
/etc/ssh/ssh-host-dsa-key
quittiert wird. Die letzte Meldung ist korrekt: der Key wird zumindest nicht am erwarteten Bestimmungsort erzeugt. Ohne
die genaue Fehlerursache in den entsprechenden Skripts analysiert zu haben, möchte ich darauf hinweisen, dass man das Problem über einen mutigen händischen Versuch zur Schlüsselgenerierung
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
umgehen kann.