sshpass不能正常工作

8
我正在使用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个回答

14

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

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

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


2

我在使用比提到的补丁版本更新的1.05版本时,在CentOS 6.7上遇到了相同的卡顿问题 - 还有其他人发现了吗? - Oly Dungey

0
最终,我最终使用了rsync而不是scp,只是因为同样的问题。我被迫使用这个有用的命令,因为我正在备份连接到这些路由器的计算机的路由器配置和数据。路由器使用非常有限的Linux命令,而我们使用的型号上有这个命令。我们尝试使用SSH密钥,但路由器没有永久存储器,一旦它们重新初始化,所有SSH密钥都会被清除。

所以带有启用-e选项的rsync命令在此处,我还使用了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

顺便说一下,如果您想进行还原操作,只需将源和目标反转即可。不需要改变太多,从同一个命令shell中,您可以通过颠倒目标和源目录的顺序来执行它,确保在目标上有一个具有相同密码的用户来接受rsync


-1
您可以按照以下方式使用rsync

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


OP说他可以使用scp成功复制文件。但是他无法打开SSH会话。 - Ben Butler-Cole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接