Как автоматизировать вход по SSH, если необходимо использовать пароль — CloudSavvy IT

Баш Шелл

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

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

Использование SSHPass

Обычная команда ssh не имеет флага —password, чтобы вы могли легко автоматизировать это. Вам нужно будет установить инструмент под названием sshpass, чтобы справиться с этим явным образом. Вы можете скачать его из большинства менеджеров пакетов Linux; для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install sshpass

Если вы используете sshpass из файла сценария, вы можете передать его напрямую с помощью флага -p, за которым следует стандартная команда SSH:

sshpass -p ‘пароль’ ssh user @ remote

Однако это не очень хорошая практика по нескольким причинам:

  • Если используется вне файла сценария, он предоставляет открытый пароль для истории команд Linux и других систем. Другие пользователи Linux могут увидеть это.
  • Может быть неясно, что в этом файле сценария закопан пароль, что может привести к неправильным разрешениям на доступ к файлу.
  • Он может случайно отслеживаться в системе контроля версий и не позволяет изменять пароль, используемый на клиентах.

По этой причине вам следует вместо этого сохранить пароль в файле. Обязательно установите для него разрешения, чтобы он не был доступен другим пользователям.

echo «пароль»> файл_паролей chmod 600 файл_паролей

Затем передайте это в sshpass с помощью -f:

sshpass -f файл_пароля ssh user @ remote

Настройка ключей SSH вместо

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

SSH хранит ваш открытый ключ в ~ / .ssh / id_rsa.pub, который он использует для всех запросов. Создать новый ключевой файл несложно:

ssh-keygen

Вам нужно добавить это в файл ~ / .ssh / authorized_keys на сервере, к которому вы хотите подключиться. Есть встроенная команда SSH, которая может легко сделать это за вас:

ssh-copy-id -i ~ / .ssh / id_rsa.pub пользователь @ хост

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *