Рейтинг:0

SSH-аутентификация без копирования/вставки открытого ключа

флаг cn

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

Основная проблема, которую я пытаюсь решить здесь:

  • Есть несколько серверов у нескольких облачных провайдеров.
  • Всякий раз, когда новый человек присоединяется к команде, мы должны копировать его открытые ключи на все серверы, чтобы они могли войти в систему.
  • Этот процесс повторяющийся и громоздкий, и я хотел удалить эту часть копирования и вставки с помощью какого-то специального механизма аутентификации.

Я изучил:

  • SSH-аутентификация на основе Google-аутентификатора

    • Это требует настройки среды на всех серверах, чтобы она могла работать, и это нормально, но все серверы будут иметь свои собственные ключи, и пользователям придется регистрироваться на всех серверах один за другим.
    • Кроме того, в приложении Google Authenticator будет присутствовать несколько TOTP, по одному для каждого сервера, что может вызвать путаницу, и этот опыт выглядит не очень хорошо.
    • Если часть сопоставления токенов может быть каким-то образом выгружена на центральный сервер, а ssh-серверы просто должны передать токен на этот сервер, тогда этот метод может работать.
  • Я видел это на серверах Azure: для сервера Azure, если вход на основе Azure включен, то всякий раз, когда пользователь пытается войти на сервер (после выполнения команды ssh в терминале), открывается браузер, и пользователь просят ввести туда адрес электронной почты и пароль, и при успешном входе им предоставляется токен. Затем пользователь должен ввести токен в терминал, чтобы получить доступ к серверу.

    • Я пытаюсь найти, как называется эта технология, и есть ли бесплатная версия?
  • Создание пользователя Linux с паролем, а затем совместное использование имени пользователя/пароля в команде, чтобы они могли его использовать. Затем им можно поделиться на Lastpass с именем пользователя и IP. Этот подход не помогает при аудите, но он может сработать, и я оставил его на крайний случай.

Спасибо!

Рейтинг:1
флаг us
  1. Привет, если я понял вашу проблему, я думаю, что ее можно решить, создав простой скрипт с использованием защищенной копии файла OpenSSH. SCP команда.

  2. Если всей команде нужны одинаковые разрешения для одних и тех же серверов, я рекомендую:

    • создайте файл author_keys на своем компьютере.
    • обновить этот файл по командам нужно вручную. (можно использовать скрипт для этих двух).
  3. Создайте скрипт для автоматического копирования обновленных author_keys с вашего компьютера на ваши серверы:

    • SCP для работы нужны права доступа к серверам, поэтому скрипт должен запускаться с вашего или любого другого управляющего компьютера.
  4. Найдите скрипт в /usr/локальные/sbin/. на вашем компьютере, чтобы иметь возможность запускать скрипт из любого каталога на вашем компьютере.

  5. Дайте скрипту права на выполнение командой chmod a+x /usr/local/sbin/имя_сценария.

    • Сценарий:
#/бен/баш!

читать -p "Пожалуйста, введите путь:" -r r1

scp $r1 имя_пользователя@serverip:/home/имя_пользователя/.ssh/authorized_keys
#scp $r1 имя_пользователя@serverip:/home/имя_пользователя/.ssh/authorized_keys
#scp $r1 имя_пользователя@serverip:/home/имя_пользователя/.ssh/authorized_keys
#добавьте больше серверов, если нужно....
# вы также можете использовать переключатель, чтобы указать, какие серверы являются релевантными для нового пользователя.

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

scp -P sshPort $r1 username@serverip:/home/username/.ssh/authorized_keys.

Пример изображения скрипта, работающего на моем собственном сервере: введите описание изображения здесь

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

Надеюсь, это поможет тебе, приятель.

Пожалуйста, прокомментируйте, если что-то не понятно или вам нужна дополнительная помощь по этому делу.

Pallav Jha avatar
флаг cn
Привет @CrazyTux - спасибо за ответ. В настоящее время я ищу способ отделить логику аутентификации ssh от пользовательской базы, чтобы удалить такие шаги, как копирование/вставка или передача ключей. В настоящее время я изучаю аутентификацию на основе LDAP, чтобы после создания учетной записи пользователя все серверы использовали ее для аутентификации.

Ответить или комментировать

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