Лучшая система для управления ключами ssh? [закрыто]

У меня есть несколько клиентских компьютеров (например, ноутбуки, настольные компьютеры и т. Д.), И я подключаюсь к нескольким серверных машинам, которыми я управляю, и я вхожу в них через SSH. Я могу представить себе несколько схем управления ключами ssh, которые имели бы смысл, и мне любопытно, что делают другие.

Вариант 1: Одна глобальная еру открытых/закрытых ключей.

Я бы сгенерировал одну пару открытого/закрытого ключа и поместил закрытый ключ на каждую клиентскую машину, а открытый ключ на каждую серверную машину.

Вариант 2: Одна парка ключей на серверную машину.

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

Вариант 3: Одна парка ключей на клиентскую машину.

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

Вариант 4: Одна пара ключей на пару клиент-сервер

Полностью за бортом?

Какой из них лучше? Есть ли другие варианты? Какие критерии вы используете для оценки правильной конфигурации?

42
задан 19 December 2011 в 13:00
5 ответов

Я использую Опцию 3: Одна пара ключей на клиентскую машину и это имеет большую часть смысла мне. Вот некоторые причины:

  • Если клиент скомпрометирован затем, что ключ (и только что ключ) должен быть удален из серверов.
  • Это достаточно гибко для решения то, к чему я могу получить доступ от где, не предоставляя общий доступ ко всем серверам от всех клиентов.
  • Очень удобно. Существует только 1 ключ для, ssh-добавляют, никакой беспорядок.
  • Легкий настроить и администрировать по Опции 4

Опция 4 хороша, но является просто слишком большой работой. Опция 3 получает Вас 98% там с намного меньшим количеством стычки.

33
ответ дан 28 November 2019 в 19:42
  • 1
    Мне не удается видеть точку Опции 4. Это не служит никакой цели вообще. –  niXar 29 May 2009 в 13:09

Я устранил бы обе Ваших опции 1 s (в которых я подозреваю, что каждый, как предполагалось, был опцией 2 ;-) потому что закрытые ключи являются уязвимыми данными, и имеет смысл удерживать их как можно меньше мест. Я лично никогда не копировал бы закрытый ключ от одного компьютера до другого (или даже от одного файла до другого на том же компьютере), кроме, возможно, для того, чтобы сделать резервные копии. Хотя в отличие от большинства ключей шифрования, если ключ SSH теряется, это не конец света (просто создают новый, Вы не теряете данных).

6
ответ дан 28 November 2019 в 19:42
  • 1
    Да, переименованный к надлежащему " Опция 2" мне нравится правило " никогда не копируйте частный ключ " That' s хорошее правило. –  slacy 28 May 2009 в 08:43

Опция 3 и использование что-то как Марионетка для обработки управления ключами.

1
ответ дан 28 November 2019 в 19:42

Опция 3.

Это также позволяет Вам управлять, к каким серверам клиент может получить доступ. например, если клиент X доступов потребностей к серверам A и B, но C или D, Вы копируете, это - открытый ключ только к тем хостам.

1
ответ дан 28 November 2019 в 19:42

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

Теперь, когда сказанный я работаю от рабочих станций Linux почти исключительно, таким образом, у меня есть флеш-карта, которая является установкой с помощью шифрования LUKS, и мой менеджер окон X11 вместе с демоном HAL обнаруживают зашифрованный диск LUKS и запрашивают пароль дешифрования, когда это вставлено и предпринято, чтобы быть смонтированным. Путем хранения этого на зашифрованном диске путем, который я, я никогда не храню свой SSH, включает любую рабочую станцию.

У меня затем есть следующая конфигурация в моем ~/.ssh/config файл:

Host *
    Protocol 2
    IdentityFile %d/.ssh/keys.d/id_rsa.%l
    IdentityFile %d/.ssh/keys.d/id_dsa.%l
    IdentityFile %d/.ssh/keys.d/%u@%l

%d переводится, чтобы быть корневым каталогом пользователя OpenSSH и в ~/.ssh каталог, я создал keys.d как символьную ссылку на путь к каталогу на зашифрованной Карте памяти, когда это правильно смонтировано.

%l выражение переводится, чтобы быть локальным клиентским именем хоста машин, и %u будет переведен в имя пользователя локального клиента.

То, что делает эта конфигурация, позволяют SSH искать ключ с помощью 3 различных выражений. Например, если имя пользователя моего локального клиента было jdoe и мое локальное клиентское название машины было examplehost это посмотрело бы в следующем порядке, пока это не нашло ключ, который и существовал и был принят удаленным сервером.

/home/jdoe/.ssh/keys.d/id_rsa.examplehost
/home/jdoe/.ssh/keys.d/id_dsa.examplehost
/home/jdoe/.ssh/keys.d/jdoe@examplehost

Вы могли даже использовать %r выражение для поиска ключа, специфичного для имени пользователя удаленного сервера или %h для имени хоста удаленного сервера точно так же, как %u, и %l использовались.

Обновление: Теперь я на самом деле использую gpg-агент GnuPG с совместимостью ssh-агента, чтобы просто считать и использовать аутентификационный ключ от моей смарт-карты OpenPGP v2.

26
ответ дан 28 November 2019 в 19:42
  • 1
    Ничего себе, отличное решение, Спасибо! я люблю универсальную конфигурацию в ~/.ssh/config –  slacy 24 June 2009 в 23:02
  • 2
    It' s доказанный себя довольно удобный для разделения вещей для работы, персональных и консультационных серверов клиентской сети... Я don' t хотят смешать аутентификацию между ними, но также и хотеть, чтобы она была легка для меня. –  Jeremy Bouse 25 June 2009 в 18:56

Теги

Похожие вопросы