Source code for https://byzoni.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.4 KiB

title date draft tags categories description image
Как автоматизировать вход в систему по SSH, если необходимо использовать пароль 2021-12-15T12:08:34+05:00 false [ssh ubuntu devsecops debian] [Security] Утилита sshpass используется для реализации автоматизированной аутентификации на основе паролей.

В SSH нет простого способа передачи паролей через стандартный ввод, что затрудняет автоматизацию.

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

Прежде чем мы начнем – использование автоматических паролей для SSH не зря считается плохой практикой.

Почти во всех случаях лучше использовать SSH-ключ, что мы покажем ниже.

Однако у паролей есть преимущество: их легче использовать, запоминать и распространять среди членов команды.

Все это одновременно является недостатком для безопасности, но это тот компромисс, который вы можете выбрать.

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

Обычная команда ssh не имеет флага –password, чтобы вы могли легко автоматизировать эту процедуру.

Вам придется установить инструмент под названием sshpass для явной обработки этого действия.

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

sudo apt-get install sshpass

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

sshpass -p 'password' ssh user@remote

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

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

В связи с этим пароль следует хранить в файле.

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

echo "password" > password_file
chmod 600 password_file

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

sshpass -f password_file ssh user@remote

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

Ключи SSH предпочтительнее для большинства систем.

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

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

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

Создать новый файл ключа очень просто:

ssh-keygen -t rsa

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

Существует встроенная команда ssh, которая может легко сделать это за вас:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

После этого пароль больше не будет запрашиваться.

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

Синтаксис

Синтаксис этой команды приведен ниже. Он поддерживает различные варианты.

sshpass [-f filename|-d number|-p password|-e] [options] command arguments