У меня есть несколько клиентских компьютеров (например, ноутбуки, настольные компьютеры и т. Д.), И я подключаюсь к нескольким серверным компьютерам, которыми управляю, и подключаюсь к ним всем через SSH. Я могу представить несколько схем управления ключами SSH, которые имеют смысл, и мне любопытно, что делают другие.
Вариант 1: одна глобальная пара открытых / закрытых ключей.
Я бы сгенерировал одну пару открытых / закрытых ключей и поместил закрытый ключ на каждую клиентскую машину и открытый ключ на каждую серверную машину.
Вариант 2: одна пара ключей на сервер.
Я бы сгенерировал одну пару ключей на каждом сервере и поместил каждый закрытый ключ на свои клиентские машины.
Вариант 3: одна пара ключей на клиентский компьютер.
У каждого клиентского компьютера будет уникальный закрытый ключ, и у каждого серверного компьютера будут открытые ключи для каждого клиентского компьютера, с которого я хотел бы подключиться.
Вариант 4: одна пара ключей на пару клиент / сервер
Полностью за бортом?
Какой из них лучше? Есть ли другие варианты? Какие критерии вы используете для оценки правильной конфигурации?
источник
Я использую решение, которое немного сложнее, но очень универсально, так как я хочу сохранить некоторое разделение в ключах идентификации SSH, используемых для серверов моей домашней сети, офисных серверов, консалтинговых клиентских сетевых серверов и других различных систем, на которых у меня есть учетные записи.
Теперь это говорит о том, что я работаю с рабочих станций Linux почти исключительно, поэтому у меня есть USB-ключ, который настроен с использованием шифрования LUKS, и мой оконный менеджер X11 вместе с демоном HAL обнаруживают зашифрованный диск LUKS и запрашивают пароль для расшифровки, когда он вставляется и пытается быть установленным Храня это на зашифрованном диске, как я делаю, я никогда не храню свои ключи SSH на любой рабочей станции.
Затем в моем
~/.ssh/config
файле есть следующая конфигурация :% D переводится быть домашний каталог пользователя с помощью OpenSSH и в ~ / .ssh каталога Я создал keys.d в качестве символической ссылки на путь к каталогу на зашифрованном диске USB , когда он правильно установлен.
% Л выражение переводится как локальный клиентские машины имя хоста и % U будут переведены на имя пользователя локального клиента.
Эта конфигурация позволяет SSH искать ключ, используя 3 различных выражения. Например, если бы имя пользователя моего локального клиента было,
jdoe
а имя моего локального клиентского компьютера былоexamplehost
бы таким, оно выглядело бы в следующем порядке, пока не обнаружил ключ, который существовал и был принят удаленным сервером.Вы даже можете использовать выражение % r для поиска ключа, определенного для имени пользователя удаленного сервера, или % h для имени хоста удаленного сервера, точно так же, как были использованы % u и % l .
Обновление: теперь я фактически использую gn-agent GnuPG с совместимостью с ssh-agent, чтобы просто читать и использовать ключ аутентификации с моей смарт-карты OpenPGP v2.
источник
Я бы исключил оба варианта 1 (из которых я подозреваю, что один должен быть вариантом 2 ;-), потому что закрытые ключи являются конфиденциальными данными, и имеет смысл хранить их в как можно меньшем количестве мест). Лично я никогда не копировал бы закрытый ключ с одного компьютера на другой (или даже из одного файла в другой на том же компьютере), за исключением, может быть, резервного копирования. Хотя в отличие от большинства ключей шифрования, если ключ SSH теряется, это не конец света (просто создайте новый, вы не потеряете данные).
источник
Вариант 3 и использовать что-то вроде Puppet для управления ключами.
источник
Вариант 3
Это также позволяет вам контролировать, к каким серверам клиент может получить доступ. например, если клиент X нуждается в доступе к серверам A и B, но C или D, вы копируете его открытый ключ только на эти хосты.
источник