Server einrichten (root Zugang verschwindet)

Hallo,

ich habe einen Server, auf den ich nur mit ssh zugreifen kann, ich nutze Putty von Windows aus.
Ich möchte auf dem Server neben Web (mit apache, php und mysql) auch eMails empfangen und bearbeiten können (imaps).
Ich habe ein Tutorial gefunden, dass irgendwie sehr viel versprechend aussah:
The Perfect Server - OpenSUSE 11.4 x86_64 [ISPConfig 3]

Allerdings bekomme ich Probleme, wenn ich Postfix und Dovecot installieren soll. Dazu muss ich Sendmail deinstallieren und offensichtlich kann danach sshd auch die passwörter, oder zumindest dass für root (bzw. su) nicht mehr auflösen.

Was gibt es denn da zu beachten, dass ich nicht erledigt.

Außerdem gibt es irgendwo ein Tutorial für das einrichten von LDAP. Das ist wohl vorgesehen, aber irgendwie scheine ich das nicht hinzubekommen…

Vielen Dank.

Okay, ich habe mich geirrt. Der Fehler tritt nicht nach dem ändern von sendmail zu postfix auf, sondern nachdem ich “zypper update” nutze, um Pakete zu aktuakisieren.

Wie gesagt, gehen danach alle logins schief, wobei ssh einen exit status 254 meldet.
Ich werde mal schauen, dass ich mit diesen Infos weiter suche.
Falls jemand sowas aber schon mal gelesen hat, wäre es nett, wenn er/sie mich in die richtige Richtung deuten könnte.

Gruß,
Heinrich

Ich bin immer noch nicht weiter gekommen, daher stelle ich die Frage nochmal.

Kann es sein, dass irgend ein update der letzten Zeit dazu führt, dass die Systemanmeldung gestört wird?
Ich habe dazu keine Hinweise gefunden, aber scheinbar kann nach dem update ssh Benutzer nicht mehr anmelden. Woran kann das liegen ?

Vermutlich verwendest du openSUSE 11.4 ?
Ich hatte ein ähnliches Problem und zwar konnte ich mich Lokal an den tty’s als root nicht mehr anmelden.
Weil aber auch die Minimalinstallation von openSUSE 11.4 fehlerhaft war (Bug: https://bugzilla.novell.com/show_bug.cgi?id=686397 ), hab ich dann Debian auf dem Webserver installiert…O:)
Vielleicht funktioniert openSUSE 12.1 in dieser Hinsicht besser, aber zur Zeit habe ich keine Lust den Server neu zu installieren.

Hi,

kommst Du denn noch lokal auf die Maschine?
Dann könnten wir weitere Fehleranalyse betreiben…

Sorry, hatte zwar subscribed aber irgendwie übersehen dass ihr gepostet habt.

Ja, es ist openSuSE 11.4
Nein, ich kann nur über ssh auf den Server, ich habe keinen lokalen Zugang.

Ich habe halt immer das letzte von Backup des Servers wieder eingespielt (über das Nutzerinterface von Strato) und so den Zugang mittels ssh wieder hergestellt…

Du schreibst, dass das Problem nach einem update Vorgang auftritt.
Dann zeig mal bitte Deine repositories:

zypper lr -d

Das sähe dann so aus:

# | Alias           | Name                                                                                  | Aktiviert | Aktualisieren | Priorität | Typ    | URI                                                                           | Dienst
--+-----------------+---------------------------------------------------------------------------------------+-----------+---------------+-----------+--------+-------------------------------------------------------------------------------+-------
1 | Apache_Modules  | This project contains third-party modules for the Apache HTTP server. (openSUSE_11.4) | Ja        | Ja            |   99      | rpm-md | [Index of /repositories/Apache:/Modules/openSUSE_11.4](http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_11.4/)      |  
2 | openSUSE 11.4-0 | openSUSE 11.4-0                                                                       | Ja        | Ja            |   99      | yast2  | ftp://ftp.stratoserver.net/pub/linux/opensuse/distribution/11.4/repo/oss/     |  
3 | repo-non-oss    | repo-non-oss                                                                          | Ja        | Ja            |  100      | yast2  | ftp://ftp.stratoserver.net/pub/linux/opensuse/distribution/11.4/repo/non-oss/ |  
4 | repo-update     | repo-update                                                                           | Ja        | Ja            |   20      | rpm-md | ftp://ftp.stratoserver.net/pub/linux/opensuse/update/11.4/                    |  

Das ist OK, alles da.
Dann müssen wir uns weiter durchhangeln:

führe das update nochmal aus und danach (solange Du noch angemeldet bist) die files

/var/log/zypp/history
/etc/ssh/sshd_config

in pastebin packen.

Das wären dann
/var/log/zypp/history - Pastebin.com
sshd_config - Pastebin.com

Also das SSH Paket wurde nicht angefasst beim update, einen direkten Zusammenhang kann ich nicht erkennen.
In der SSH config fällt mir auf:

PasswordAuthentication no

Du nutzt public keys? Oder LDAP?
Ansonsten das “no” mal auf “yes” ändern und

rcsshd restart

Was hat es denn mit den Warnings über polkit-auth ab Zeile 1900 auf sich?

Als Auth nutze ich den suse-Standart, also das Modul, dass bei der Installation eben die Systemanmeldung erledigt. Habe das meines Wissens nie geändert.

Der Fehler tritt aber auch mit der Änderung in der sshd_config auf. Wobei ich scheinbar ordnungsgemäß einloggen kann, aber die Verbindung dann sofort gekappt wird.

login as: heinrich
Using keyboard-interactive authentication.
Password:
Last login: Wed Dec 14 10:31:07 2011 from 153.96.55.129
Have a lot of fun...

Und dann halt sofort ein Fenster, dass mit sagt, dass die Verbindung abgebrochen wurde.
Wenn ich mittels ssh versuche Filezilla zu verbinden, bekomme ich immerhin den Abbruch Code:

Connection closed by server with exitcode 254

Ich habe erst ab Zeile 2361 geguckt, weil Du ja sagst, dass mit dem letzten update die Probleme kommen.
Das mit polkit-auth war schon im August, diese Änderungen hast Du also bereits in Deinem (funktionierendem) backup.

Ein Paket polkit-auth finde ich in meinem 12.1 System garnicht in den repos. Guck mal mit

rpm -qa | grep polkit

ob Du das drauf hast.

gconf-polkit-2.32.1-4.1.i586
polkit-default-privs-0.1_201102151742-1.2.1.noarch
rubygem-polkit-0.1.2-3.3.i586
polkit-0.99-5.6.1.i586
libpolkit0-0.99-5.6.1.i586

Stimmt aber, dass das schon vorher als Fehler aufgetreten ist. Das hatte ich übersehen.
Kann der Fehler an der Shell liegen, wenn der Login-Prozess bis “Have a lot of fun…” durchläuft?
Ich habe exitcode 254 gegooglt, aber keine Erklärung gefunden, was das genau ist.

Ich kenne mich mit dem “polkit” framework nicht so aus, in meiner Installation liegen folgende Pakete:

: ~> rpm -qa | grep polkit
gconf-polkit-3.2.0-2.2.2.i586
polkit-kde-kcmmodules-1-0.98.1+git20110929-1.2.i586
polkit-default-privs-12.1-10.11.1.noarch
gnome-settings-daemon-polkit-datetime-3.2.1-2.2.1.i586
libpolkit-qt-1-1-0.99.1-16.1.2.i586
polkit-gnome-0.104-2.1.2.i586
libpolkit0-0.102-2.2.1.i586
polkit-kde-agent-1-0.99.0-10.1.2.i586
polkit-0.102-2.2.1.i586

Sieht schon etwas anders aus, beachte die Versionsnummern.
SSH legt seine (standardmäßig) Meldungen in /var/log/messages ab -

grep -i ssh /var/log/messages

Hier noch meine repos:

: ~> zypper lr -d
# | Alias                                     | Name                               | Aktiviert | Aktualisieren | Priorität | Typ    | URI                                                                    | Dienst
--+-------------------------------------------+------------------------------------+-----------+---------------+-----------+--------+------------------------------------------------------------------------+-------
1 | Aktualisierungen-für-openSUSE-11.4-11.4-0 | Aktualisierungen für openSUSE 12.1 | Ja        | Ja            |   99      | rpm-md | http://ftp4.gwdg.de/pub/opensuse/update/12.1                           |       
2 | Packman                                   | Packman                            | Ja        | Ja            |   99      | rpm-md | http://packman.mirrors.skynet.be/pub/packman/suse/12.1                 |       
3 | XFCE_12.1                                 | XFCE 12.1                          | Ja        | Ja            |   99      | rpm-md | http://ftp5.gwdg.de/pub/opensuse/repositories/X11:/xfce/openSUSE_12.1/ |       
4 | repo-non-oss                              | openSUSE-12.1-Non-Oss              | Ja        | Nein          |   99      | yast2  | http://ftp4.gwdg.de/pub/opensuse/distribution/12.1/repo/non-oss/       |       
5 | repo-oss                                  | openSUSE-12.1-Oss                  | Ja        | Nein          |   99      | yast2  | http://ftp4.gwdg.de/pub/opensuse/distribution/12.1/repo/oss/           |       

Zeig mal bitte Deine repos.

mal ein paar Fragen zur Vorgehensweise:

du bist während und nach dem Update (zypper up oder zypper dup) immer konstant mit dem server via ssh verbunden (tmux, screen, etc. wird nicht verwendet?).
nachdem das Update Fertig ist wird die Session mit exit, etc. beendet oder einfach das putty-fenster geschlossen?

welche Fehlermeldung zeigt dir “putty” bzw. opensuse beim ssh login an?

Meine Repos stehen auf der ersten Seite schon. Habe die nicht geändert. Gehe davon aus, dass die aber vom Hoster (Strato) eingetragen sind, damit sie aus Performance-Gründen auf die Mirrors in der eigenen Serverfarm zeigen und nicht zu opensuse.org

Ansonsten ja, ich bin während des Update (mit Zypper update oder yast2 Online Aktualisierung) mittels ssh verbunden.
Rein die Konsole (Eingabeaufforderung würde man unter Windows sagen).
Ich habe keine graphische Oberfläche, nutze kein tmux oder screen (warum sollte ich, kann ja mehrere ssh Verbindungen aufmachen).

Sobald das update fertig ist, tritt der Fehler auf. Meine bestehende Verbindung ist nicht betroffen, aber ich kann keine neuen Verbindungen mehr aufbauen.

Putty zeigt keinen Fehler an. Es kommt das obligatorische “Have a lot of fun…” das das Ende des Einlog-vorgangs anzeigt, aber statt dem shell-Prompt erscheint ein separates Windowsfenster, dass mit mitteilt, dass die Verbindung vom Host beendet wurde. Wenn ich OK klicke (einzige Option) ist Putty danach auch ohne Verbindung. Ich kann im Menü die Verbindung neu starten, aber das Ergebnis ist das selbe.

Neben Putty benutzte ich noch “FileZilla”. Für SFTP wird ja auch eine SSH Verbindung über Port 22 benutzt. Anders als Putty bricht Filezilla nicht ab, sondern meldet eben “Connection closed by server with exitcode 254” zurück.

Ich gehe davon aus, dass der Server ein Steuerzeichen sendet, dass die Verbindung beendet. Die Frage ist, warum tut er das?
Da sshd ja normal seinen Output anzeigt, also:

login as:
Using keyboard-interactive authentication.
Password:
Last login: Wed Dec 14 10:31:07 2011 from XXX.XX.XX.XXX
Have a lot of fun...

Würde ich vermuten, dass nach erfolgreichen Authentifizieren entweder die shell nicht gestartet wird (warum auch immer) oder der sshd mitbekommt, dass der Benutzer (ein normaler Nutzer ohne root-Rechte) keinen Remote-Zugriff haben darf und deswegen die Verbindung kommentarlos trennt.

Aber ich weiß nicht, wie ich das prüfen kann.

Du kannst die Meldungen von SSHd in der Datei

/var/log/messages

abgreifen. Aber wie Du schon vermutest gehe auch ich davon aus, dass der sshd hier nicht das Problem ist, eher das, was danach kommt. Also der Terminal-Emulator “tty” oder aber Deine shell (vermutlich “bash”).
Guck erstmal in die messages während Du den Fehler nachstellst, das könnte schon helfen.

Hmm, die motd wird angezeigt, aber die Login-Shell wird nicht gestartet…

grep deinbenutzername /etc/passwd 

Am Ende der Ausgabe sollte normalerweise /bin/bash stehen.

cat /etc/shells

Die /bin/bash Shell sollte enthalten sein.

ls -l /bin/bash

Die Datei sollte mit einer 755 Berechtigung angezeigt werden.

So, nach langer Zeit:

Hatte den Fehler bislang umgangen, indem ich alte Backups eingespielt habe…

Aber heute habe ich, als er wieder aufgetreten ist und ich mich darüber geärgert hatte folgende Lösung gefunden.

Ich habe in /var/log/messages den echten Fehler ausgemacht: am_loginuid(sshd:session): Cannot open /proc/self/loginuid: Read-only file system

Diesen Fehler habe ich dann gegoogelt und es stellt sich raus, dass jemand eine Lösung zu meinem Problem bereits gefunden hatte:
ssh login problem nach neustart | computersalat

Einfach ausgedrückt wird /proc in einem read-only Modus gemountet, was nicht sein sollte. Editieren der /etc/init.d/named hat das aber nach neustart behoben.
Der Tipp hier

if  ! -e "${CHROOT_PREFIX}/proc/meminfo" ]; then
mkdir -p “${CHROOT_PREFIX}/proc”
            mount -tproc -oro,nosuid,nodev,noexec proc ${CHROOT_PREFIX}/proc 2>/dev/null

fi;

ändern auf

if  ! -e "${CHROOT_PREFIX}/proc/meminfo" ]; then
mkdir -p “${CHROOT_PREFIX}/proc”
            mount –bind -o ro /proc “${CHROOT_PREFIX}/proc” 2>/dev/null
fi;