shpass 是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证)。简单说就是一个可以让你将密码输入放到命令行运行的工具;

如:sshpass  -p  123456  scp   /root/file    root@192.168.88.88:/root/  就是将运行命令的服务器上root下的file文件scp复制到192.168.88.88的root下,还可以加  -r  参数,传输文件夹;
Debian和centos安装都可以自己的源来安装:
                  Debian :    apt-get   install   sshpass       ;      centos :   yum  install  sshpass   ;
我安装的时候是碰上了centos5.x的系统,大家应该知道centos的yumyuam已经停止更新了,就是不能用了,所以yum安装是行不通的,于是就下载了安装包,用安装包来安装;

这里下载的是  sshpass-1.06.tar.gz  ;下载到了 /usr/local/src/  下;

tar xzvf sshpass-1.06.tar.gz               //解压

cd sshpass-1.06                   //进入目录

./configure                        //执行脚本编译
linux之centos5.11安装sshpass牵引出的rpm安装方式
报错了,什么意思呢;他说是没有C编译器;那好,没有就安装;

但是忘了这是centos5.x ,yum无法安装; 不过还好rpm还可以使用,赶紧换安装包方式安装;

找了一个以前的iso镜像,centos5的;
linux之centos5.11安装sshpass牵引出的rpm安装方式

里面有个centos的文件夹(我这是事先解压出来的),这个文件夹里都是centos的包;

搜索找到 gcc 的rpm包  :  gcc-4.1.2-55.el5.x86_64.rpm  ;

用远程连接(随便你用什么方法)放到服务器上,然后执行 :   rpm -ivh gcc-4.1.2-55.el5.x86_64.rpm     安装;
linux之centos5.11安装sshpass牵引出的rpm安装方式

又报错.....说是这个gcc包需要一个glibc-devel的包,好,那就去centos里面找;

找到后上传到服务器:   glibc-devel-2.5-123.x86_64.rpm  ;

执行  rpm -ivh glibc-devel-2.5-123.x86_64.rpm  安装 ;
linux之centos5.11安装sshpass牵引出的rpm安装方式

好,他说这个包又需要 glibc-headers 包;那就接着找包,上传......
linux之centos5.11安装sshpass牵引出的rpm安装方式
安装 glibc-headers 又说需要 kernel-headers 包;接着找  kernel-headers ;然后执行命令安装;
linux之centos5.11安装sshpass牵引出的rpm安装方式
可以了,安装成功;说明已经不需要其他包了;将需要的包再倒着依次安装;

安装  glibc-headers-2.5-123.x86_64.rpm ;
linux之centos5.11安装sshpass牵引出的rpm安装方式
安装  glibc-devel-2.5-123.x86_64.rpm   ;
linux之centos5.11安装sshpass牵引出的rpm安装方式

最后再安装  gcc-4.1.2-55.el5.x86_64.rpm  ;
linux之centos5.11安装sshpass牵引出的rpm安装方式
现在C编译器已经可以使用了;可以继续 sshpass的安装了;

在sshpass目录下:

./configure          

make                //make编译

make install      //编译安装

ok,这样就可以使用sshpass命令了;

备注:

我当时的环境是两个局域网的服务器,而且也都安装了密钥,
在使用sshpass命令的时候会出现       Host key verification failed(主机密钥验证失败。)的错误;
linux之centos5.11安装sshpass牵引出的rpm安装方式
网上说将  /root/.ssh/known_hosts  里面的服务器密钥删掉或者将这个文件删掉就可以,个人试了一下,没成功;

用别的方法解决的;

先用 scp 命令复制文件过去,会问你  yes 还是 no ,再让你输入密码;当这样传输一次成功后,再用这个sshpass命令进行免密传输就可以了,这可能是服务器的一种安全验证机制,原理我也不太清楚