сделать ssh хостами глобальными для всех пользователей компьютера

15

Таким образом, SSH имеет эти файлы, которые настраивают параметры для конкретного пользователя.

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

Я хотел бы глобализировать некоторые из этих файлов, как configи known_hosts. Чтобы другие пользователи (включая root ) могли делиться настроенными хостами.

Каков был бы лучший способ сделать это?

Стефан
источник

Ответы:

21

Поскольку ~/.ssh/configвы можете поместить соответствующие общесистемные настройки в / etc / ssh / ssh_config в соответствии со страницей руководства :

ssh (1) получает данные конфигурации из следующих источников в следующем порядке:

  1. параметры командной строки
  2. файл конфигурации пользователя (~ / .ssh / config)
  3. Общесистемный файл конфигурации (/ etc / ssh / ssh_config)

Для каждого параметра будет использоваться первое полученное значение. Файлы конфигурации содержат разделы, разделенные спецификациями «Host», и этот раздел применяется только для хостов, которые соответствуют одному из шаблонов, приведенных в спецификации.

Обратите внимание, что будет использоваться только первое значение, что означает, что пользователь всегда может переопределить параметры конфигурации всей системы локально.

Для ~/.ssh/known_hostsвы можете использовать /etc/ssh/ssh_known_hostsили другой файл , указанный в опции конфигурации GlobalKnownHostsFile:

GlobalKnownHostsFile

Задает файл для использования в глобальной базе данных ключей хоста вместо / etc / ssh / ssh_known_hosts.

Я не уверен, возможно ли это для других файлов, но я полагаю, что вы могли бы поработать с символическими ссылками, если вы действительно хотите поделиться закрытыми ключами среди пользователей.

Стивен Д
источник
1
В вашей цитате GlobalKnownHostsFile есть опечатка.
CJM
1
Вы можете установить UserKnownHostsFile = / dev / null ssh никогда не найдет действительный ключ в файле users_hosts пользователей, но пользователь все же может принять один временный.
Janning
1
@ Яннинг, похоже, что на самом деле есть IgnoreUserKnownHostsопция для этого (значения yesили no).
Кель
Обратите внимание, что глобальный /etc/ssh/ssh_known_hostsфайл должен быть доступен для чтения всем. Я использовал ssh-keygen -Hf /etc/ssh/ssh_known_hostsперефразировать мой после добавления записей вручную, и кажется, что он был установлен только для владельца.
каэль
1

Поскольку root очень мощный, я бы использовал задание root cron для копирования файлов от других пользователей. Известные Хосты и авторизованные ключи могут быть просто добавлены. Если это все на одном разделе, есть опция hardlink. Не уверен, что символические ссылки будут работать для файлов, но вы также можете попробовать это, вы просто должны поместить их в общее, но безопасное место.

xenoterracide
источник
2
Это помешает пользователям добавлять свои собственные хосты, что, по-моему, является непреднамеренным эффектом.
Мацей Пехотка
Я забываю, должен ли файл жестких ссылок иметь такую ​​же химическую завесу, но я подозреваю, что это так Тем не менее, вы можете скопировать файл с помощью cron, а затем убедиться в правильности перми.
ксенотеррацид