SSH-Authentifizierung für zweiten Benutzer

Sehr geehrte Meister des Linux,

seit kurzem bin ich stolzer Mieter eines vServers und habe hierzu vollen Root-Zugang. Da mir die Sicherheit des Systems sehr am Herzen liegt, bin ich schon seit einigen Wochen tüchtig am lesen, lernen und verstehen.

Da ein Großteil der Arbeit am Server über SSH erfolgt, möchte ich das Anmeldeverfahren auf den Server gerne von Passwortabfrage auf Publickey Authentifizierung umstellen. Die Grundlagen habe ich soweit auch erfasst.

Anleitungen gibt es im Netz zu Hauf. Ich habe mir verschiedene angeschaut und natürlich die Kommentierungen, um das ganze auch zu begreifen.

Mittels Puttygen habe ich einen Public und Private Key erstellt. Den Publickey habe ich auf dem Server in die Datei .ssh/authorized_key gepackt.

Ich habe mich dazu als root eingeloggt (noch mit Passwort) und habe die Datei mit „vi“ zur Bearbeitung geöffnet.
Danach habe ich die sshd_config unter /etc/ssh/ angepasst:

„PermitRootLogin yes (noch)“
„RSAAuthentication yes“
„PubkeyAuthentication yes“
„ChallengeResponseAuthentication no“
„PasswordAuthentication no“
„UsePAM no“

(PS: was bedeutet folgender Eintrag in der Config? „#AuthorizedKeysFile %h/.ssh/authorized_keys“)

Nach einem ssh Neustart funktionierte das Anmelden auf den Server mittels den Keys dann auch auf Anhieb.

Da man ja nicht als root permanent auf dem Server arbeiten soll, wollte ich noch einen zweiten Benutzer mit eingeschränkten Rechten hinzufügen und ebenfalls die Anmeldung mittels der Keys lösen.

Also, noch einmal mit Putty Keys erstellt und den Pub Key in .ssh/authorized_key gepackt.
Gespeichert ,ssh neugestartet, ausgelogght, Putty samt Key für den eingeschränkten gestartet und den Login versucht. Der Versuch, mich mit dem Benutzer anzumelden, schlug fehl. Dann versuchte ich, mich als root, jedoch mit dem Key für den eingeschränkten Benutzer, auf dem Server anzumelden. Gesagt getan. Funktionierte.

Also erst einmal 1+1 zusammengerechnet und zur Erkenntnis erlangt, dass scheinbar alle unter .ssh/authorized_keys gespeicherten Keys für den Benutzer root bestimmt sind.

Demnach müsste es doch eine Lösung geben, eine eigene authorized_keys Datei für die anderen Benutzer zu haben. Ich habe mich also mit dem Benutzer eingeloggt und versucht via „vi .ssh/authorized_keys“ zu öffnen. Das klappe zwar. Jedoch konnte ich den Key nicht abspeichern. Ich erhielt immer die Fehlermeldung „e212: can’t open file for writing“. Darum das gleiche mit dem sudo probiert. Dazu musste ich dann auch mein Passwort eingeben. Nach der Eingabe passierte jedoch nichts. Es kam ständig nur „Sorry, try again“.

So langsam verzweifle ich. Will doch nur die sichere Anmeldung für alle Benutzer verwenden. Was kann ich da tun? Wo muss der Key hin?! Und warum geht sudo nicht?

Ich bin ratlos.

Grüße,

Maza

kann ich dir leider nicht weiterhelfen
gruß
joey

Hallo zurück,

es sieht so aus als tätest du eine Reihe kleiner Anfänger-Fehler, dessen Bedeutung du übersiehst und somit nicht recht auf den Grund der Probleme kommst.

Fakt ist, du kannst mehrere Benutzer anlegen, und pro Benutzer einen authorized_key anlegen.
Fakt ist aber auch, dass das keinen Sinn macht.
Warum sollte man nicht als Root arbeiten? Wir reden hier nicht von einem Desktop-System.
Das ist ein virtueller Rootserver, auf dem man meistens NUR Dinge tut, die sowieso Rootrechte benötigen. Rumspielen und probieren sollte man woanders :wink:

Aber zu deinem Problem, denn es geht ja auch um das Verständnis.

  1. „.ssh/authorized_keys“ ist als Pfadangabe zu wenig. Ich weiß nicht ob du /home/user/.ssh/ meinst, oder /root/.ssh

  2. #AuthorizedKeysFile %h/.ssh/authorized_keys
    Das bedeuted, dass openSSH für den jeweiligen User (%h) den Public Key in dem angegebenen Verzeichnis findet. Natürlich die Raute am Anfang wegnehmen.

  3. ~/.ssh/authorized_keys MUSS folgende Rechte haben:
    -rw------- 1 root root 391 Jan 24 01:54 authorized_keys
    -> also chmod 600 / chown root:root

  4. und ganz wichtig: Fehlermeldungen und komplette Angaben machen.
    > „Der Versuch, mich mit dem Benutzer anzumelden, schlug fehl“
    Hilft nicht wirklich :wink:

Hoffe etwas geholfen zu haben, ansonsten viel Spaß mit deinem Server :wink:

Grüße,
Silvio

Fakt ist, du kannst mehrere Benutzer anlegen, und pro Benutzer
einen authorized_key anlegen.
Fakt ist aber auch, dass das keinen Sinn macht.

Oh, ok. Bisher nahm ich an, für Kleinigkeiten nicht als root zu arbeiten. Etwa wann ich einen VoiceServer installieren möchte. Dafür hätte ich einen Benutzer, mit dem ich bei Bedarf über sudo die nötigen Rechte schon erhalten würde.

Warum sollte man nicht als Root arbeiten? Wir reden hier nicht
von einem Desktop-System.
Das ist ein virtueller Rootserver, auf dem man meistens NUR
Dinge tut, die sowieso Rootrechte benötigen. Rumspielen und
probieren sollte man woanders :wink:

Das hast du allerdings recht.

Aber zu deinem Problem, denn es geht ja auch um das Verständnis.

  1. „.ssh/authorized_keys“ ist als Pfadangabe zu wenig. Ich
    weiß nicht ob du /home/user/.ssh/ meinst, oder /root/.ssh

Gemeint ist /root/.ssh
Eine solchen Pfad und Datei z.B. unter /home/user/.ssh habe ich nicht gefunden. Existiert nicht.

  1. #AuthorizedKeysFile %h/.ssh/authorized_keys
    Das bedeuted, dass openSSH für den jeweiligen User (%h) den
    Public Key in dem angegebenen Verzeichnis findet. Natürlich
    die Raute am Anfang wegnehmen.

Ok. Also ist dieser Wert wichtig dafür, dass ich den anderen Benutzer ebenfalls einen authorized_keys anlegen kann und ssh somit weiß das sie existieren und wo sie sich befinden. Soweit im Ansatz richtig?

Muss ich hier dann jeden user anstelle des %h anführen oder reicht %h

  1. und ganz wichtig: Fehlermeldungen und komplette Angaben
    machen.
    > „Der Versuch, mich mit dem Benutzer anzumelden, schlug fehl“
    Hilft nicht wirklich :wink:

Mit meinem Benutzer hatte ich folgendes in der Annahme versucht, dass der Pfad .ssh unter /home/user/.ssh und die Datei authorized_keys unter dem Pfad bereits existiert:

vi .ssh/authorized_keys

vi hat dann Editor geöffnet. Jedoch konnte ich nichts speichern. Einzige Fehlermeldung, die ich erhielt war, kam im Editor selbst rot unterlegt:

„E212: Can’t open file for writing“

Zunächst dachte ich, dass mir die nötige Rechte fehlten und ich mit sudo versuchen sollte.

sudo vi .ssh/authorized_keys

Es wurde das Passwort (ich gehe stark davon aus vom root) verlangt. Das habe ich angegeben. Es kam nur ein „Sorry, try again“.
Ich bin mir jedoch nach dem etwa 10. Versuch sicher: an dem PW kann es nicht liegen :wink:

Jetzt allerdings glaube ich ein wenig schlauer zu sein. Unter /home/user existiert noch kein .ssh und auch kein authorized_keys

Ich werde jetzt einmal versuchen, diese mir anzulegen und die nötigen Rechte zu vergeben. Natürlich auch die Raute vor dem Wert #AuthorizedKeysFile %h/.ssh/authorized_keys in der Konfigurationsdatei entfernen.

Vielen Dank für die bisherige Hilfe!

Vorab:
Ich nutze für meine ssh-Zug"ange nicht Public-Key-Authenfizierung, jedoch ist mir das Prinzip wohl bekannt.
Erwarten Sie daher keine detaillierte Beschreibung, da ich nicht vorhabe, es jetzt, nur um Ihre Frage zu beantworten, aufzusetzen.

Unten mache ich jedoch Anmerkunge, die Ihnen vielleicht weiterhelfen.

Sehr geehrte Meister des Linux,

seit kurzem bin ich stolzer Mieter eines vServers und habe
hierzu vollen Root-Zugang. Da mir die Sicherheit des Systems
sehr am Herzen liegt, bin ich schon seit einigen Wochen
tüchtig am lesen, lernen und verstehen.

Da ein Großteil der Arbeit am Server über SSH erfolgt, möchte
ich das Anmeldeverfahren auf den Server gerne von
Passwortabfrage auf Publickey Authentifizierung umstellen. Die
Grundlagen habe ich soweit auch erfasst.

Anleitungen gibt es im Netz zu Hauf. Ich habe mir verschiedene
angeschaut und natürlich die Kommentierungen, um das ganze
auch zu begreifen.

Mittels Puttygen habe ich einen Public und Private Key
erstellt. Den Publickey habe ich auf dem Server in die Datei
.ssh/authorized_key gepackt.

alternativ kann man auch unter Linux/Unix machen mit:
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa

Dies nur als Hinweis, da das Erzeugen der Schlüsselpaare offenbar nicht Ihr Problem war.

Ich habe mich dazu als root eingeloggt (noch mit Passwort) und
habe die Datei mit „vi“ zur Bearbeitung geöffnet.
Danach habe ich die sshd_config unter /etc/ssh/ angepasst:

„PermitRootLogin yes (noch)“
„RSAAuthentication yes“
„PubkeyAuthentication yes“
„ChallengeResponseAuthentication no“
„PasswordAuthentication no“
„UsePAM no“

(PS: was bedeutet folgender Eintrag in der Config?
#AuthorizedKeysFile %h/.ssh/authorized_keys“)

Nach einem ssh Neustart funktionierte das Anmelden auf den
Server mittels den Keys dann auch auf Anhieb.

Meiner Meinung nach ist es keine gute Idee ist sich überhaupt als root einzuloggen.
Heutzutage verwendet man eigentlich immer ein user und nur wenn man für ein Kommando root-Reche braucht ruft man dieses mit sudo auf.

Da man ja nicht als root permanent auf dem Server arbeiten
soll, wollte ich noch einen zweiten Benutzer mit
eingeschränkten Rechten hinzufügen und ebenfalls die Anmeldung
mittels der Keys lösen.

Also, noch einmal mit Putty Keys erstellt und den Pub Key in
.ssh/authorized_key gepackt.

Stellen Sie sicher, dass Sie das .ssh Verzeichnis im Verzeichnis des users angelegt haben und dies auch während sie als user eingelogged waren.
(nachdem Sie als root auf dem Rechner sind einfach mit dem ‚su‘-Komando sich als user einloggen
)
Dann noch die Zugriffsrechte anpassen
chmod 700 ~/.ssh

Gespeichert ,ssh neugestartet, ausgelogght, Putty samt Key für
den eingeschränkten gestartet und den Login versucht. Der
Versuch, mich mit dem Benutzer anzumelden, schlug fehl. Dann
versuchte ich, mich als root, jedoch mit dem Key für den
eingeschränkten Benutzer, auf dem Server anzumelden. Gesagt
getan. Funktionierte.

Das deutet darauf hin, dass Sie vermutlich den Key im Verzeichnis von root abgelegt haben, satt im user-Verzeichnis

Also erst einmal 1+1 zusammengerechnet und zur Erkenntnis
erlangt, dass scheinbar alle unter .ssh/authorized_keys
gespeicherten Keys für den Benutzer root bestimmt sind.

Die keys sind immer für dem in dessen Home-Verzeichnis liegen.

Demnach müsste es doch eine Lösung geben, eine eigene
authorized_keys Datei für die anderen Benutzer zu haben. Ich
habe mich also mit dem Benutzer eingeloggt und versucht via
„vi .ssh/authorized_keys“ zu öffnen. Das klappe zwar. Jedoch
konnte ich den Key nicht abspeichern. Ich erhielt immer die
Fehlermeldung „e212: can’t open file for writing“. Darum das
gleiche mit dem sudo probiert. Dazu musste ich dann auch mein
Passwort eingeben. Nach der Eingabe passierte jedoch nichts.
Es kam ständig nur „Sorry, try again“.

Der user kann die .ssh/authorized_keys des root-users vermutlich zum lesen "offnen auber selbstverständlich nicht zum schreiben. (das w"ahre ein echtes
Sicherheitsproblem)

Die .ssh/authorized_keys f"ur den User muss in dessen Homeverzeichnis
gespeichert werden.
dort hat der user auch Schreibrechte, so dass Ihr Problem dort nicht auftreten sollte.

So langsam verzweifle ich. Will doch nur die sichere Anmeldung
für alle Benutzer verwenden. Was kann ich da tun? Wo muss der
Key hin?! Und warum geht sudo nicht?

Was geht an sudo nicht?
Der user kann sudo nur verwenden, wenn der user-account in einer Gruppe mit entsprechenden Rechten ist. Normal user sollten ja kein sudo verwenden können.

Ich bin ratlos.

Grüße,

Maza

Meine Diagnose ist also:

  • Eventuell haben Sie die Dateien versehentlich nicht als user im user-Verzeichnis angelegt

Ich hoffe diese E-Mail hilft ihnen weiter. Wenn nicht, schreiben Sie gerne noch einmal.