Table of Contents
sshpass
Принцип работы
SSH использует прямой доступ к tty, чтобы убедиться, что пароль действительно введен пользователем с интерактивной клавиатуры. sshpass запускает SSH в выделенном tty, обманывая ssh, заставляя его думать, что он получает пароль от интерактивного пользователя.
Установка
apt install sshpass
Синтаксис sshpass
Краткое описание команды sshpass:
sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments
Где:
-ppassword # Пароль задается в командной строке. -ffilename # Паролем является первая строка имени файла. -dnumber # number -- файловый дескриптор, унаследованный sshpass от runner. Пароль считывается из дескриптора открытого файла. -e # Пароль берется из переменной окружения "SSHPASS".
Examples
Чтобы лучше понять всю мощь sshpass, рассмотрим несколько примеров с несколькими различными утилитами, включая SSH, Rsync, Scp и GPG.
ssh
Используем sshpass для входа на удаленный сервер с помощью SSH. Предположим, пароль – P@$$w0rd
Использование опции -p
(это считается наименее безопасным вариантом, и его не следует использовать):
sshpass -p P@$$w0rd ssh vasyn@10.10.10.14
<WRAP center round tip 90%> Nota Bene! Следует учесть, что если до этого пользователь не заходил на удаленный хост через ssh, авторизация с sshpass не пройдет, так как не был принят fingerprint (При настройке SSH-сервера создается уникальная комбинация символов) </WRAP> Но это все же можно обойти вот такой конструкцией
sshpass -p P@$$w0rd ssh -o StrictHostKeyChecking=no vasyn@10.10.10.14
Использование опции -f
(паролем является первая строка в файле):
echo 'P@$$w0rd' > pass_file chmod 0400 pass_file sshpass -f pass_file ssh -o StrictHostKeyChecking=no vasyn@10.10.10.14
Использование опции -e
(обычно используем как переменную):
export SSHPASS=P@$$w0rd sshpass -e ssh -o StrictHostKeyChecking=no vasyn@10.10.10.14
rsync
Примеры аналогичны приведенными выше, только со спецификой кухни rsync
С переменной:
export SSHPASS=P@$$w0rd rsync -avz --rsh="sshpass -e ssh -l vasyn" /home/username/source/ 10.10.10.14:/home/vasyn/rsync_file
С парольным файлом
rsync -avz --rsh="sshpass -f pass_file ssh -l vasyn" /home/username/source/ 10.10.10.14:/home/vasyn/rsync_file
scp
sshpass -e scp name_check.sh vasyn@10.10.10.14:/home/vasyn/
gpg
Также можно использовать sshpass с файлом зашифрованным gpg.
При использовании опции -f
файл с паролем представлен в виде открытого текста. Давайте посмотрим, как можно зашифровать файл с помощью gpg и использовать его.
Сначала создадим файл следующим образом:
echo 'P@$$w0rd' > .sshpasswd
Затем зашифруйте его с помощью gpg:
gpg -c .sshpasswd # Удаляем файл, содержащий открытый текст rm .sshpasswd
Используем зашифрованный фал вместе с sshpass
gpg -d -q .sshpasswd.gpg | sshpass ssh vasyn@10.10.10.14 ls -l