Situtation:
Jeder der zu dem Punkt kommt weiß, dass diese Probleme nur auftauchen wenn es mehr als einen Benutzer auf dem entsprechendem System gibt.
Im folgendem Fall sieht es so aus:
Wir haben ein lokales System mit einem root user und einem Benutzer, nennen wir ihn "user".
Wir haben ein externes System, das nur über das Internet zu erreichen ist. Dort haben wir nur einen sudo Benutzer namens "admin".
Entsprechend könnte man nun meinen, dass eigentlich egal mit welchem User ich die Keys erstelle, es funktioniert. FALSCH!
Die Authentifizierung mit Schlüsselpaar funktioniert nur mit dem aktuell eingeloggten Benutzer.
Darum funktioniert es lokal auch bei jedem Server, schließlich ist man faul und Sicherheit wird durch die Firewall geregelt und für diesen einen Zweck (zb lokaler Webserver mit nginx), wer braucht da schon andere Benutzer?
Genau da ist das Problem schließlich funktioniert es mit root ja immer.
Also nochmal von vorne: Wir möchten uns jetzt von unserem lokalen System mit dem Benutzer "user" auf dem externen System einloggen per Key Authentifizierung.
Vielleicht fragen sich einige, ja aber wofür dann die Erwähnung des Benutzers auf der anderen Seite? Haha ja natürlich geht es hier wieder in erster Linie um das Monitoring.
Am besten sollte ich wohl den Titel ändern. Das kopfzerbrechende Plugin für Noobs (wie mich) nennt sich nämlich check_by_ssh.
Dieser verlangt einen Benutzer mit der entsprechende Befehl auf dem externen System ausgeführt werden soll.
Aber das ist nur ein Grund und nicht Hauptbestandteil dieses Artikels.
Also gehen wir die einzelnen Schritte durch:
Voraussetzungen:
Any Linux-Based OS, OpenSSL
wir loggen uns am lokalen System als "user" ein.
Wir führen den folgenden Befehl aus und folgen den Anweisungen:
ssh-keygen -b 4096 -t rsa
Wenn der Schlüssel erstellt wurde wird nachfolgender Befehl ausgeführt:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub admin@255.255.255.255
Wenn das dann erfolgreich ist versuchen wir uns folgendermaßen einzuloggen:
ssh admin@255.255.255.255
Hilfe es tut immer noch nicht?!?!?! Natürlich gibt es eine jede Menge Ursachen warum es denn nicht tun könnte. Ich verweiße einfach mal auf die folgenden Links:
https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server
Die zeigen da ziemlich gut wie man die Keys auch manuell kopieren kann etc. Kommt aber bloß nicht auf die dumme Idee, die Passwortauthentifikation zu deaktivieren!
Es werden auch eigentlich keine Agents oder Deamons benötigt, das wäre alles viel zu überdimensioniert für so ein einfaches unterfangen.
Alle Versuche manuell ein Verzeichnis zu erstellen und mit chmod und chown zu versehen haben bei uns nichts gebracht, am Ende war es ein kleiner Fehler in der Serverkonfiguration, der zum Erfolg führte:
Prüft nach ob in /etc/passwd/ der "admin" auch ein entsprechendes Homeverzeichnis hat zB: "/home/admin"
Ansonsten wüsste ich ums verrecken nicht, warum der Schlüsselaustausch nicht funktionieren sollte. Wurde auf mehreren Systemen erfolgreich getestet.
Der User root hat keine SSH Authentifizierung auf dem externen System, diese muss für jeden Benutzer separat eingerichtet werden.