🖧 Как автоматизировать вход в систему по SSH, если необходимо использовать пароль |

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

Мануал

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

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

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

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

🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux

🔐 Настройка входа по 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

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

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

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

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

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

см.также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий