uczynienie hostów ssh globalnym dla wszystkich użytkowników komputera

15

Tak więc SSH ma te pliki, które konfigurują ustawienia dla konkretnego użytkownika.

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

Chciałbym zglobalizować niektóre z tych plików, takie jak configi known_hosts. Aby inni użytkownicy (w tym root ) mogli współużytkować skonfigurowane hosty.

Jaki byłby najlepszy sposób to zrobić?

Stefan
źródło

Odpowiedzi:

21

Dla ~/.ssh/configmożna umieścić odpowiednich ustawień systemowych w / etc / ssh / ssh_config według strony człowieka :

ssh (1) uzyskuje dane konfiguracyjne z następujących źródeł w następującej kolejności:

  1. opcje wiersza poleceń
  2. plik konfiguracyjny użytkownika (~ / .ssh / config)
  3. ogólnosystemowy plik konfiguracyjny (/ etc / ssh / ssh_config)

Dla każdego parametru zostanie wykorzystana pierwsza uzyskana wartość. Pliki konfiguracyjne zawierają sekcje oddzielone specyfikacjami „Host”, a sekcja ta jest stosowana tylko dla hostów, które pasują do jednego z wzorców podanych w specyfikacji.

Pamiętaj, że zostanie użyta tylko pierwsza wartość, co oznacza, że ​​użytkownik zawsze może lokalnie zastąpić opcje konfiguracji całego systemu.

Dla ~/.ssh/known_hostsmożna użyć /etc/ssh/ssh_known_hostslub inny plik określony przez opcję konfiguracji GlobalKnownHostsFile:

GlobalKnownHostsFile

Określa plik do użycia dla globalnej bazy danych kluczy hosta zamiast / etc / ssh / ssh_known_hosts.

Nie jestem pewien, czy jest to możliwe w przypadku innych plików, ale wyobrażam sobie, że możesz wypracować coś z dowiązaniami symbolicznymi, jeśli naprawdę chcesz udostępniać klucze prywatne również użytkownikom.

Steven D.
źródło
1
W cytacie GlobalKnownHostsFile masz literówkę.
cjm
1
Możesz ustawić UserKnownHostsFile = / dev / null ssh nigdy nie znajdzie poprawnego klucza w pliku users_hosts użytkowników, ale użytkownik może zaakceptować jeden tymczasowy.
Janning
1
@Janning, wygląda na to, że faktycznie jest na to IgnoreUserKnownHostsopcja (wartości yeslub no).
kael
Pamiętaj, że /etc/ssh/ssh_known_hostsplik globalny musi być czytelny dla całego świata. Użyłem ssh-keygen -Hf /etc/ssh/ssh_known_hostsdo ponownego użycia mojego po ręcznym dodaniu wpisów, i wygląda na to, że ustawiono go tylko dla właściciela.
kael
1

Ponieważ root jest potężny, użyłbym zadania root cron do skopiowania plików od innych użytkowników. Znane hosty i autoryzowane klucze można po prostu dołączyć. Jeśli wszystko jest na jednej partycji, dostępna jest opcja twardego łącza. Nie jestem pewien, czy dowiązania symboliczne będą działać dla plików, ale możesz też spróbować, musisz po prostu umieścić je w bezpiecznym, współdzielonym miejscu.

ksenoterracid
źródło
2
Uniemożliwiłoby to użytkownikom dodawanie własnych hostów, których IMHO jest niezamierzonym efektem.
Maciej Piechotka
Zapominam, czy plik hardlink musi mieć takie same perms, ale podejrzewam, że tak. Możesz jednak skopiować plik za pomocą crona, a następnie upewnić się, że perms są prawidłowe.
ksenoterrakid,