💾 Archived View for byzoni.org › gemlog › 2021-12-15-sshpass.gmi captured on 2023-01-29 at 03:08:17. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-12-17)

-=-=-=-=-=-=-

⏪ Вернуться к gemlog

2021-12-15

В 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

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

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

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

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