User Tools

Site Tools


sshpass

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
sshpass.txt · Last modified: 2023/04/06 10:28 (external edit)