SSH в скриптах: sshpass

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SSH в скриптах: sshpass

Непрочитанное сообщение Olej » 01 фев 2022, 00:57

Об этом уже было: удалённый SSH...
Но это настолько важно и часто, что стоит отдельной темы! - как устанавливать SSH соединение без запроса пароля соединения?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SSH в скриптах: sshpass

Непрочитанное сообщение Olej » 05 авг 2022, 16:54

Olej писал(а):
01 фев 2022, 00:57
как устанавливать SSH соединение без запроса пароля соединения?

Код: Выделить всё

olej@R420:~$ aptitude show sshpass
Пакет: sshpass                                   
Версия: 1.06-1
Состояние: установлен
Установлен автоматически: нет
Приоритет: дополнительный
Раздел: universe/utils
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: amd64
Размер в распакованном виде: 30,7 k
Зависит: libc6 (>= 2.15)
Рекомендует: ssh-client
Описание: Non-interactive ssh password authentication
 SSH's (secure shell) most common authentication mode is called "interactive keyboard password authentication", so called both because it is
 typically done via keyboard, and because openssh takes active measures to make sure that the password is, indeed, typed interactively by the
 keyboard. Sometimes, however, it is necessary to fool ssh into accepting an interactive password non-interactively. This is where sshpass
 comes in. 
 
 SECURITY NOTE: There is a reason openssh insists that passwords be typed interactively. Passwords are harder to store securely and to pass
 around securely between programs. If you have not looked into solving your needs using SSH's "public key authentication", perhaps in
 conjunction with the ssh agent (RTFM ssh-add), please do so before being tempted into using this package.
Домашняя страница: http://sourceforge.net/projects/sshpass

Код: Выделить всё

olej@HP-Compaq:~$ which sshpass
/usr/bin/sshpass
Синтаксис:

Код: Выделить всё

$ sshpass -p <password> ssh ...
... и дальше все параметры вызова ssh как обычно.
Или так же - для команд передачи файлов:

Код: Выделить всё

$ sshpass -p <password> sftp ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SSH в скриптах: sshpass

Непрочитанное сообщение Olej » 10 май 2023, 21:28

Olej писал(а):
05 авг 2022, 16:54
как устанавливать SSH соединение без запроса пароля соединения?
А как это станет работать с адресами IPv6 :?:

Код: Выделить всё

olej@R420:~$ host ygg.linux-ru.lib
ygg.linux-ru.lib has IPv6 address 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771
Это сеанс прямого подключения по SSH:

Код: Выделить всё

olej@R420:~$ ssh olej@221:58c9:9a6:99be:f3d:c1ac:2b5b:9771
olej@221:58c9:9a6:99be:f3d:c1ac:2b5b:9771's password: 
Linux 277938.local 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 10 19:05:07 2023 from 193.28.177.65
...
А теперь зашиваю это в скрипт:

Код: Выделить всё

olej@R420:~$ cat ./ssh.ygg.linux-ru.lib 
sshpass -p xxxxxx ssh olej@221:58c9:9a6:99be:f3d:c1ac:2b5b:9771
И подключение из любого скрипта без запроса пароля:

Код: Выделить всё

olej@R420:~$ ./ssh.ygg.linux-ru.lib 
Linux 277938.local 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 10 19:21:16 2023 from 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f
Смотрим там подключения:

Код: Выделить всё

olej@277938:~$ who
olej     tty1         2023-03-29 11:16
olej     pts/0        2023-05-10 13:53 (193.28.177.65)
olej     pts/2        2023-05-10 19:04 (193.28.177.65)
olej     pts/3        2023-05-10 19:05 (193.28.177.65)
olej     pts/5        2023-05-10 19:21 (21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f)
olej     pts/6        2023-05-10 19:24 (21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SSH в скриптах: sshpass

Непрочитанное сообщение Olej » 11 май 2023, 21:52

Olej писал(а):
01 фев 2022, 00:57
как устанавливать SSH соединение без запроса пароля соединения?
Есть одна (неприятная) фишка в использовании sshpass:
- если в ~/ssh/known_hosts ещё нет записи относительно целевого хоста, или она поменялась (бывает при перенастройках хоста)...
- то команда ssh запросит формирование такой записи, или скажет что она поменялась и подскажет как исправить (см. сюда удалённый SSH)...
- но sshpass глухо завершися ошибкой:

Код: Выделить всё

olej@esprimop420:~/2023$ nslookup linux-ru.ru
Server:		1.1.1.1
Address:	1.1.1.1#53

Non-authoritative answer:
Name:	linux-ru.ru
Address: 90.156.230.27
Хост есть, но конект с ощибкой, и странной диагностикой:

Код: Выделить всё

olej@esprimop420:~/2023$ time sshpass -p zzzzzz sftp olej@90.156.230.27:backup-11.05.2023_20-21.tgz
Host key verification failed.

real	0m0,505s
user	0m0,012s
sys	0m0,005s

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SSH в скриптах: sshpass

Непрочитанное сообщение Olej » 11 май 2023, 21:55

Olej писал(а):
11 май 2023, 21:52
Хост есть, но конект с ощибкой, и странной диагностикой:
Этому делу легко помочь (но это если угадать что происходит) - один простой коннект в протоколе SSH:

Код: Выделить всё

olej@esprimop420:~/2023$ ssh olej@90.156.230.27 hostname
The authenticity of host '90.156.230.27 (90.156.230.27)' can't be established.
ECDSA key fingerprint is SHA256:Zy7Qjz2Pd0ylCA6jUOGLpiY9ORdHUD9YZsuJ55epLok.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '90.156.230.27' (ECDSA) to the list of known hosts.
olej@90.156.230.27's password: 
277938.local
Всё! Дальше можно пользоваться sshpass:

Код: Выделить всё

olej@esprimop420:~/2023$ time sshpass -p zzzzzz sftp olej@90.156.230.27:backup-11.05.2023_20-21.tgz
Connected to 90.156.230.27.
Fetching /home/olej/backup-11.05.2023_20-21.tgz to backup-11.05.2023_20-21.tgz
real	2m5,028s
user	0m0,226s
sys	0m0,322s

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей