Ich versuche, ein GitHub zu machen-git ziehenvon einem PHP-Skript als WWW-Data-Benutzer aus und erhalte die Meldung „Hostschlüsselüberprüfung fehlgeschlagen“. Mein Hauptbenutzer hat den Hostschlüssel registriert, aber mein WWW-Data nicht, da er nicht einmal Zugriff auf das Verzeichnis ~/.ssh hat.
Gibt es unter Ubuntu 18.04 noch eine systemweite known-hosts-Datei? Ich nehme an, es wäre nicht sicher, dem www-data-Benutzer Zugriff auf meine~/.ssh-Verzeichnis?
Antwort1
Wie @GMaster vorgeschlagen hat, scheint die Verwendung von HTTPS anstelle von SSH für einen automatisierten Pull die sinnvollste Wahl zu sein. Wenn Sie jedoch unbedingt das SSH-Protokoll verwenden müssen (warum?), haben Sie einige Optionen für den Umgang mit known_hosts
Anmeldeinformationen:
Erstellen Sie den
~/.ssh
Baum, einschließlich eines vorab ausgefülltenknown_hosts
, imwww-data
Home-Verzeichnis von (in meinem System ist es/var/www
, aber überprüfen Sie Ihr Verzeichnis in/etc/passwd
). Sie können die Datei selbst erstellen, indem Sie eine Verbindung herstellen und den Hostschlüssel manuell überprüfen. Stellen Sie einfach sicher, dass solche Dateien und Verzeichnisse die richtigen Berechtigungen (normalerweise 0700/0600) und Eigentümer haben.Bewahren Sie diese Datei an einem anderen Ort auf (mit den entsprechenden Berechtigungen) und verweisen Sie darauf mit
-o UserKnownHostsFile=/path/to/known_hosts
Probieren Sie für beide oben genannten Ansätze
-o StrictHostKeyChecking
verschiedene Optionen aus und-o UpdateHostKeys
finden Sie ein Gleichgewicht zwischen Sicherheit und Komfort.Als letzte Möglichkeit können Sie die Hostschlüsselüberprüfung für WWW-Daten entweder in
/var/www/.ssh/config
oder mit Befehlszeilenoptionen vollständig deaktivieren-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
. Seien Sie sich jedoch der schwerwiegenden Sicherheitsauswirkungen bewusst, die dies mit sich bringt.
Und, um zu bestätigen, was Sie bereits vermutet haben: Geben Sie unter keinen Umständen www-data (oder einem anderen) Benutzer Zugriff auf Ihre ~/.ssh
. Denken Sie daran, IhrePrivatSchlüssel sind auch da!
Antwort2
Ja, es gibt tatsächlich eine systemweit bekannte Hosts-Datei, die standardmäßig ist /etc/ssh/ssh_known_hosts
. Sie können ausführen man ssh_config
und danach suchen, GlobalKnownHostsFile
um die Standardeinstellung auf Ihrem System anzuzeigen. Sie können den Wert dieser Option auch wie gewohnt (mit -o
) ändern, wenn Sie möchten.