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                        //执行脚本编译 ![](https://s4.51cto.com/images/blog/201807/26/650899cb057b3f45417e786dbf245fab.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 报错了,什么意思呢;他说是没有C编译器;那好,没有就安装; 但是忘了这是centos5.x ,yum无法安装; 不过还好rpm还可以使用,赶紧换安装包方式安装; 找了一个以前的iso镜像,centos5的; ![](https://s4.51cto.com/images/blog/201807/26/41745a2dcf9308bfc154cdb0d745e24b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 里面有个centos的文件夹(我这是事先解压出来的),这个文件夹里都是centos的包; 搜索找到 gcc 的rpm包  :  gcc-4.1.2-55.el5.x86_64.rpm  ; 用远程连接(随便你用什么方法)放到服务器上,然后执行 :   rpm -ivh gcc-4.1.2-55.el5.x86_64.rpm     安装; ![](https://s4.51cto.com/images/blog/201807/26/67190ffa1173babfa500a6fda39d9e22.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 又报错.....说是这个gcc包需要一个glibc-devel的包,好,那就去centos里面找; 找到后上传到服务器:   glibc-devel-2.5-123.x86_64.rpm  ; 执行  rpm -ivh glibc-devel-2.5-123.x86_64.rpm  安装 ; ![](https://s4.51cto.com/images/blog/201807/26/9ba92f78fbcec95c1a25a291b5bc6d3c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 好,他说这个包又需要 glibc-headers 包;那就接着找包,上传...... ![](https://s4.51cto.com/images/blog/201807/26/6a26656823c1ddbca95251a921e23ca6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 安装 glibc-headers 又说需要 kernel-headers 包;接着找  kernel-headers ;然后执行命令安装; ![](https://s4.51cto.com/images/blog/201807/26/52c7be68e0d76e20a6f7a3edc478b4e1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 可以了,安装成功;说明已经不需要其他包了;将需要的包再倒着依次安装; 安装  glibc-headers-2.5-123.x86_64.rpm ; ![](https://s4.51cto.com/images/blog/201807/26/890f25714b4320ae9bdb581c1d3725f8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 安装  glibc-devel-2.5-123.x86_64.rpm   ; ![](https://s4.51cto.com/images/blog/201807/26/c9c29446577b29ac2b5a00be8159a341.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 最后再安装  gcc-4.1.2-55.el5.x86_64.rpm  ; ![](https://s4.51cto.com/images/blog/201807/26/c3f14a3c9190fd38443ce0bd50ff647e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 现在C编译器已经可以使用了;可以继续 sshpass的安装了; 在sshpass目录下: ./configure           make                //make编译 make install      //编译安装 ok,这样就可以使用sshpass命令了; 备注: 我当时的环境是两个局域网的服务器,而且也都安装了密钥, 在使用sshpass命令的时候会出现       Host key verification failed(主机密钥验证失败。)的错误; ![](https://s4.51cto.com/images/blog/201807/26/a0d88ba90f8e415fef47d4c812b32ad9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 网上说将  /root/.ssh/known_hosts  里面的服务器密钥删掉或者将这个文件删掉就可以,个人试了一下,没成功; 用别的方法解决的; 先用 scp 命令复制文件过去,会问你  yes 还是 no ,再让你输入密码;当这样传输一次成功后,再用这个sshpass命令进行免密传输就可以了,这可能是服务器的一种安全验证机制,原理我也不太清楚