В SSH нет простого способа передачи паролей через стандартный ввод, что затрудняет автоматизацию.
Хотя это не идеально с точки зрения безопасности, вы можете автоматизировать аутентификацию пароля SSH в сценариях bash с помощью утилиты sshpass.
Прежде чем мы начнем – использование автоматических паролей для SSH не зря считается плохой практикой.
Почти во всех случаях лучше использовать SSH-ключ, что мы покажем ниже.
Однако у паролей есть преимущество: их легче использовать, запоминать и распространять среди членов команды.
Все это одновременно является недостатком для безопасности, но это тот компромисс, который вы можете выбрать.
Использование sshpass
Обычная команда ssh не имеет флага –password
, чтобы вы могли легко автоматизировать эту процедуру.
Вам придется установить инструмент под названием sshpass для явной обработки этого действия.
Вы можете загрузить его из большинства менеджеров пакетов Linux; для систем на базе Debian, таких как Ubuntu, это:
|
|
Если вы используете sshpass внутри скрипта, вы можете передать его непосредственно с флагом -p
, за которым следует ваша стандартная команда SSH:
|
|
Однако это не очень хорошая практика по нескольким причинам:
- Если он используется вне файла скрипта, показывается пароль в открытом виде в истории команд Linux и других систем. Другие пользователи Linux могут увидеть его.
- Может быть неясно, что в этом файле скрипта скрыт пароль, что может привести к тому, что неправильные разрешения файлов могут раскрыть его.
- Он может быть случайно отслежен в системе контроля версий
В связи с этим пароль следует хранить в файле.
Обязательно установите права на него, чтобы он не был доступен другим пользователям.
|
|
Затем передайте это в sshpass с параметром -f
:
|
|
Настройка ключей SSH вместо этого
Ключи SSH предпочтительнее для большинства систем.
Они гораздо длиннее, а также их труднее случайно утечь, что делает их идеальными для обеспечения безопасности.
Они также способствуют аутентификации на основе идентификации, поскольку SSH-ключи обычно привязаны к машине, на которой они созданы.
SSH хранит ваш открытый ключ в ~/.ssh/id_rsa.pub
, который он использует для всех запросов.
Создать новый файл ключа очень просто:
|
|
Вам нужно добавить его в файл ~/.ssh/authorized_keys
на сервере, к которому вы хотите подключиться.
Существует встроенная команда ssh, которая может легко сделать это за вас:
|
|
После этого пароль больше не будет запрашиваться.
Вы можете скопировать этот ключ на другие машины, но обычно достаточно просто добавить несколько ключей.
Синтаксис
Синтаксис этой команды приведен ниже. Он поддерживает различные варианты.
|
|