sshpass не работает должным образом - PullRequest
5 голосов
/ 28 июня 2011

Я использую sshpass для передачи неинтерактивного пароля в Ubuntu 11.04.

когда я использую sshpass с scp

sshpass -p '123' scp sayuj@192.168.1.51:/home/sayuj/examples.desktop ~/Desktop/

отлично работает

но он не работает с ssh

sshpass -p '123' ssh sayuj@192.168.1.51

В чем может быть проблема и как ее исправить?

Ответы [ 5 ]

7 голосов
/ 06 июня 2012

Новая версия sshpass 1.05 работает с последней версией клиента ssh.Он включен в Ubuntu 12.04 Precise Pangolin.

Для более старых версий Ubuntu (или других дистрибутивов Linux) вы можете получить из:

http://sourceforge.net/projects/sshpass/files/sshpass/1.05/

untar с:

tar xvzf sshpass-1.05.tar.gz

build:

cd sshpass-1.05
./configure
make

и использовать созданный двоичный файл sshpass .

2 голосов
/ 06 июля 2011

Я нашел решение:

Проблема в том, что новая версия клиента ssh все еще имеет и старую версию sshpass (с 2008 года не изменено).

Вы можете найти патч здесь

sshpass источник

Все, что вам нужно, это просто пропатчить исходники (всего 1 строка add и 1 small change), скомпилировать и установить (не забудьте удалить пакет раньше).

0 голосов
/ 16 декабря 2018

Наконец-то я использовал rsync вместо scp только из-за той же проблемы. Я был вынужден использовать эту полезную команду, потому что я копирую конфигурации маршрутизаторов и данные компьютеров, подключенных к этим маршрутизаторам. Маршрутизаторы используют очень ограниченное количество команд linux, и эта команда доступна на моделях, которые мы используем. Мы попытались использовать ключи SSH, но у маршрутизаторов нет постоянной памяти, после повторной инициализации все ключи SSH стираются.

Таким образом, команда для rsync здесь с включенной опцией -e, также я использую порт 2222, опция -p позволяет вам изменять порты.

sshpass -p 'password' rsync -vaurP -e 'ssh -p 2222'  backup@???.your.ip.???:/somedir/public_data/temp/ /your/localdata/temp

Вы можете защитить еще больше, как я сделал, заменив пароль для однострочного файла, используя скрипт bash для многосерверной среды. Альтернативой является использование опции -f, чтобы пароль не отображался в истории bash -f "/path/to/passwordfile"

Если вы хотите обновить только измененные файлы, вам следует использовать эти параметры -h -v -r -P -t , как описано здесь https://unix.stackexchange.com/questions/67539/how-to-rsync-only-new-files

Кстати, если вы хотите сделать восстановление, просто поменяйте источник по цели. Не нужно много менять, из той же командной оболочки вы можете сделать это, изменив порядок каталогов назначения и источника, убедитесь, что у пользователя есть цель с тем же паролем, чтобы принять rsync

0 голосов
/ 11 июля 2018

Может быть, вам нужно -o stricthostkeychecking=no, как это

sshpass -p $PASSWORD ssh -o stricthostkeychecking=no user@domain "command1;command2;"
0 голосов
/ 25 июля 2013

Вы можете использовать rsync, как указано ниже:

rsync --rsh="sshpass -p 123 ssh -l sayuj" 192.168.1.51:/home/sayuj/examples.desktop ~/Desktop/

...