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

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

Tag,

dein Key für den Benutzer muss in dessen Homeverzeichnis abgelegt sein, also beispielsweise /home/erwin/.ssh/authorized_keys oder ~erwin/.ssh/authorized_keys.

Jeder Benutzer hat seinen eigenen Keystore. Also für root nach /root/.ssh kopieren, für Erwin in ~erwin/.ssh und für Anne in ~anne/.ssh.

Gruß,
Stefan

Ok, die Dateien werde ich anlegen. Muss ich den Wert #AuthorizedKeysFile %h/.ssh/authorized in der Konfigurationsdatei noch speziell anpassen oder einfach nur die Raute weg?

Vielen Dank bisher!

Maza

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!

Maza

Ok, die Dateien werde ich anlegen. Muss ich den Wert
#AuthorizedKeysFile %h/.ssh/authorized in der
Konfigurationsdatei noch speziell anpassen oder einfach nur
die Raute weg?

Weder noch. Der Default steht bereits auf .ssh/authorized_keys. Lediglich das Verzeichnis und die Datei müssen angelegt und die Datei befüllt werden.

Gruß

Oh, ok. Bisher nahm ich an, für Kleinigkeiten nicht als root
zu arbeiten.

Das ist generell ja lobenswert, aber ich bin zu faul ständig zum root zu wechseln, eher passe ich auf was ich tue und tippe.

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

„user“ ist natürlich ein Platzhalter für deinen Benutzernamen. und die Datei und der Ordner existiert auch erst wenn du ihn anlegst.

Pass auf. Du erstellst einen User „Horst“:

adduser Horst

dann legst du das Verzeichnis an:

mkdir /home/horst/.ssh

Und kopierst den Public-Key in

/home/horst/.ssh/authorized_keys

Dann Rechte prüfen:

chown -R horst:horst /home/horst/.ssh

chmod -R 600 /home/horst/.ssh

In der SSH Konfiguration nimmst du einfach nur die # weg. %h ist der Platzhalter bzw. Variable für den User, der sich gerade anmelden will.
Das heißt, Raute raus, das wars. (openSSH ggf. neustarten)

Und schon kannst du dich mittels PuTTY als horst und dem Private Key einloggen.
Von einer Linux Maschine musst du mittels PuTTYgen den Schlüssel ins OpenSSH-Format umwandeln.

Ich hoffe ich hab nichts vergessen :wink:

PERFEKT!

Hat 1a funktioniert!

Jetzt muss ich nur noch herausfinden, wie ich mein sudo Problem gescheit löse.
Bekomme nur die folgende Meldung:

user is not in the sudoers file. This incident will be reported.

Hab unter /etc/sudoers/ geschaut und festgestellt, dass ich meinen user da noch anlegen muss. Aber ist das nicht ein Sicherheitsrisiko?
Denn, wenn die Rechte in der sudoers nicht beschränke, dann kann ich mit sudo doch alles ausführen und quasi auch so immmer root sein.

Welchen vorteil habe ich denn dann, wenn ich nun einen user mit uneingeschränkten sudo Rechten habe?
Ich könnte es ja beschränken, nur weiß ich ja heute nicht, was ich im Laufe der Zeit am Server so machen muss.

Habe mich an die man page von sudo und sudoers gewagt und das ist mal auch ne heftige Lektüre. Das man bei Linux auch immer in die tiefsten tiefen des Kaninchenbaus muss, um etwas zu machen ^^

Wiedermals vielen Dank :smiley:

Maza