Итак, в нашей компании возникла проблема, из-за которой я рвал волосы на прошлой неделе:
У нас есть сотни серверных ящиков (смесь CentOS6 / 7, если это важно), которые необходимо быстро подключать по SSH на ежедневной основе между командой. Все используют mRemoteNG или SuperPutty, так как возможность сохранять и упорядочивать информацию о подключении, а также подключения с вкладками являются обязательными. В настоящее время каждый использует один SSH-ключ для входа во все ящики. Очевидно, что наша текущая практика - ужасная идея, поэтому мы хотели бы предоставить каждому пользователю отдельную учетную запись и ключ, который будет использоваться во всех ящиках.
Оглядываясь вокруг, кажется, что Kerberos - идеальный вариант для управления несколькими пользователями и обработки аутентификации на большом количестве серверов. К сожалению, у нас, похоже, есть некоторые проблемы с тем, чтобы заставить его работать так, как мы хотим. Нам удалось настроить Kerberos для обработки SSH-соединений для пользователей с паролями, но когда дело дошло до отключения паролей и использования ключей SSH, мы не могли этого понять.
Мы также изучали использование вкладок клавиш Kerberos, однако нам не удалось заставить их работать через PuTTY или найти жизнеспособное решение для сохранения информации о подключении и подключения вкладок с помощью вкладок.
Главный вопрос здесь: можно ли использовать Kerberos для управления пользователями SSH с помощью ключей SSH? Если нет, существует ли сборка PuTTY, которая работает с вкладками Kerberos, или альтернатива, которая может организовывать и иметь соединения с вкладками? Спасибо!
PuTTY 0.61 или новее может использовать билеты Kerberos / GSSAPI (вместо аутентификации с открытым ключом) для аутентификации на SSH-сервере. Чтобы включить это, перейдите в меню конфигурации PuTTY к «Connection | SSH | Auth | GSSAPI» и убедитесь, что «Попытка аутентификации GSSAPI» включена. (Эквивалент клиента OpenSSH для Linux - "ssh -K".)
Есть два способа, которыми PuTTY может получить требуемый билет для выдачи билетов Kerberos:
PuTTY имеет доступ к любому билету, который Windows получила от своего сервера домена Active Directory, когда вы вошли в систему Windows, которая находится в домене. В таком случае для получения билета ничего особенного делать не нужно.
В качестве альтернативы (например, на компьютере с Windows, не входящем в домен), PuTTY также имеет доступ к любым билетам, которые вы получили, запустив графический интерфейс «MIT Kerberos Ticket Manager», который поставляется с пакетом «MIT Kerberos для Windows» от http://web.mit.edu/kerberos/dist/). Просто используйте это, чтобы получить свой билет Kerberos, прежде чем запускать PuTTY. Если запущен «MIT Kerberos Ticket Manager», он автоматически запросит у вас пароль Kerberos, если он нужен PuTTY. Поэтому рекомендуется добавить ярлык «MIT Kerberos Ticket Manager» в папку автозагрузки.
На стороне sshd-сервера:
Получите с вашего KDC и установите в /etc/krb5.keytab серверный keytab.
В /etc/ssh/sshd_config
убедитесь, что у вас есть GSSAPIAuthentication yes
для включения проверки подлинности Kerberos.
Удостоверься что krb5.conf
правильно настроен с обеих сторон, так что библиотеки GSSAPI, используемые putty и sshd, находят одну и ту же область и связываются с одним и тем же KDC (если только ваша область и KCD уже должным образом объявлены через DNS, и в этом случае ничего не нужно добавлять в krb5.conf
).
Во-первых, уточнение. Ключи Kerberos и SSH - это два взаимоисключающих метода аутентификации для SSH. Вы не используете Kerberos с участием Ключи SSH. Вы используете Kerberos вместо того Ключи SSH. Оба позволяют вход по SSH "без пароля". Немного прочтения Протокол Kerberos может быть в порядке.
С Kerberos вам необходимо получить TGT, который доказывает, что вы являетесь тем, кем вы себя называете, прежде чем пытаться подключиться к своей конечной точке. Если вы используете Windows, присоединенную к домену Active Directory, вы автоматически получаете Kerberos TGT для области Active Directory при входе в систему. Но многие организации не утруждают себя настройкой своих хостов Linux для использования области Active Directory Kerberos. Если вы это сделаете, жизнь станет намного проще. Если вы этого не сделаете, это означает, что Windows должна быть настроена так, чтобы знать о другой вашей области Kerberos и о том, как запросить билет. Это также дополнительный шаг для ваших пользователей, потому что им нужно будет отказаться от своего AD TGT и запросить TGT для другой вашей области.
У вас также есть возможность использовать доверительные отношения между областями Kerberos, чтобы (например) пользователи AD могли аутентифицироваться для ресурсов в другой области Kerberos.
Файл ключей Kerberos - это всего лишь файловое представление пароля вашей учетной записи Kerberos. Поэтому при запросе начального TGT вам не нужно вводить пароль, если у вас есть действующий файл keytab. Но это также обычно выходит за рамки вашего SSH-клиента.
Если у вас есть действующий TGT, вам необходимо убедиться, что ваш SSH-клиент настроен на использование GSSAPI. PuTTY поддерживает это из коробки, и я уверен, что большинство других тоже.
Если все настроено правильно, оно должно «просто работать». Но в процессе настройки может произойти множество ошибок. Есть также много сторонних продуктов, которые могут упростить задачу, но я воздержусь от упоминания чего-либо конкретного.
Я знаю, что ssh в cygwin будет поддерживать keytabs.
Следуйте этим инструкциям по настройке kerberos и ssh в cygwin: http://computing.help.inf.ed.ac.uk/kerberos-cygwin
Вместо шага kinit username выполните:
kinit -kt /path/to/keytab username
(Затем ssh как обычно.)