sshpass无法正常工作

时间:2011-06-28 06:26:03

标签: ubuntu ssh scp sshpass

我正在使用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 个答案:

答案 0 :(得分:7)

新的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

答案 1 :(得分:2)

我找到了解决方案:

问题是新版本的ssh客户端仍然有sshpass的旧版本(从2008年未更改)。

您可以找到补丁here

sshpass source

您需要的只是修补源代码(只需1行添加和1个小更改),编译和安装(不要忘记在之前删除包)。

答案 2 :(得分:0)

也许您需要像这样的-o stricthostkeychecking=no

sshpass -p $PASSWORD ssh -o stricthostkeychecking=no user@domain "command1;command2;"

答案 3 :(得分:0)

最后,由于相同的问题,我最终使用rsync而不是scp。我被迫使用此有用的命令,因为Im备份了路由器的配置和连接到这些路由器的计算机的数据。路由器使用的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

答案 4 :(得分:-1)

您可以使用rsync,如下所述:

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