ssh-Hosts für alle Benutzer auf dem Computer global machen

15

SSH verfügt also über diese Dateien, mit denen Einstellungen für einen bestimmten Benutzer konfiguriert werden.

~/.ssh/authorized_keys
~/.ssh/config
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
~/.ssh/known_hosts

Ich möchte einige dieser Dateien wie configund globalisieren known_hosts. Damit andere Benutzer (einschließlich root ) die konfigurierten Hosts gemeinsam nutzen können.

Was wäre der beste Weg, dies zu tun?

Stefan
quelle

Antworten:

21

Für ~/.ssh/configSie können relevante systemweite Einstellungen legen Sie in / etc / ssh / ssh_config nach der Manpage :

ssh (1) ruft Konfigurationsdaten aus den folgenden Quellen in der folgenden Reihenfolge ab:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers (~ / .ssh / config)
  3. Systemweite Konfigurationsdatei (/ etc / ssh / ssh_config)

Für jeden Parameter wird der erste erhaltene Wert verwendet. Die Konfigurationsdateien enthalten Abschnitte, die durch Hostspezifikationen voneinander getrennt sind. Dieser Abschnitt gilt nur für Hosts, die einem der in der Spezifikation angegebenen Muster entsprechen.

Beachten Sie, dass nur der erste Wert verwendet wird. Dies bedeutet, dass der Benutzer die systemweiten Konfigurationsoptionen immer lokal überschreiben kann.

Für ~/.ssh/known_hostsSie verwenden können /etc/ssh/ssh_known_hostsdurch die GlobalKnownHostsFile Konfigurationsoption oder eine andere Datei angegeben:

GlobalKnownHostsFile

Gibt eine Datei an, die anstelle von / etc / ssh / ssh_known_hosts für die globale Hostschlüsseldatenbank verwendet werden soll.

Ich bin mir nicht sicher, ob es für die anderen Dateien möglich ist, aber ich stelle mir vor, Sie könnten mit Symlinks etwas anfangen, wenn Sie wirklich auch private Schlüssel für Benutzer freigeben möchten .

Steven D
quelle
1
Sie haben einen Tippfehler in Ihrem GlobalKnownHostsFile-Angebot.
cjm 30.10.10 um 23:52
1
Sie können UserKnownHostsFile setzen = / dev / null ssh findet niemals einen gültigen Schlüssel in der Datei known_hosts des Benutzers, kann jedoch einen temporären Schlüssel akzeptieren.
Janning
1
@Janning, es sieht so aus, als gäbe es tatsächlich eine IgnoreUserKnownHostsOption dafür (Werte yesoder no).
kael
Beachten Sie, dass die globale /etc/ssh/ssh_known_hostsDatei weltlesbar sein muss. Ich habe ssh-keygen -Hf /etc/ssh/ssh_known_hostsmeine nach dem manuellen Hinzufügen von Einträgen erneut aufgewärmt, und es scheint, dass sie auf Nur-Eigentümer festgelegt wurde.
kael
1

Da root sehr mächtig ist, würde ich einen root-Cron-Job verwenden, um die Dateien von anderen Benutzern zu kopieren. Bekannte Hosts und autorisierte Schlüssel können einfach angehängt werden. Wenn sich alles auf einer Partition befindet, gibt es die Hardlink-Option. Sie sind sich nicht sicher, ob Symlinks für die Dateien funktionieren, aber Sie können es auch versuchen, indem Sie sie an einem gemeinsamen, aber sicheren Ort ablegen.

Xenoterracid
quelle
2
Es würde Benutzer daran hindern, ihre eigenen Hosts hinzuzufügen, was meiner Meinung nach unbeabsichtigt ist.
Maciej Piechotka
Ich habe vergessen, ob eine Hardlink-Datei die gleichen Berechtigungen haben muss, aber ich vermute, dass dies der Fall ist. Sie können die Datei jedoch mit cron kopieren und dann sicherstellen, dass die Perms korrekt sind.
Xenoterracid