sshpass не работает должным образом

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

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

sshpass -p '123' scp [email protected]:/home/sayuj/examples.desktop ~/Desktop/

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

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

sshpass -p '123' ssh [email protected]

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


person Sayuj    schedule 28.06.2011    source источник


Ответы (5)


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

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

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

sshpass источник

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

person Temujeen    schedule 06.07.2011
comment
Я испытываю такое же зависание в CentOS 6.7, используя версию 1.05, которая новее упомянутой исправленной версии — кто-нибудь еще нашел то же самое? - person Oliver Dungey; 29.01.2016

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

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

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

распаковать с помощью:

tar xvzf sshpass-1.05.tar.gz

строить:

cd sshpass-1.05
./configure
make

и используйте созданный бинарный файл sshpass.

person mmm    schedule 06.06.2012

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

sshpass -p $PASSWORD ssh -o stricthostkeychecking=no user@domain "command1;command2;"
person Alex Montoya    schedule 11.07.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

person Luis H Cabrejo    schedule 16.12.2018

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

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

person Sridhar    schedule 25.07.2013
comment
ОП говорит, что он может успешно копировать файлы, используя scp. Он открывает сеанс SSH, чего он не может сделать. - person Ben Butler-Cole; 13.05.2014