shpass 是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证)。简单说就是一个可以让你将密码输入放到命令行运行的工具;
如:sshpass -p 123456 scp /root/file [email protected]:/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 //执行脚本编译
报错了,什么意思呢;他说是没有C编译器;那好,没有就安装;
但是忘了这是centos5.x ,yum无法安装; 不过还好rpm还可以使用,赶紧换安装包方式安装;
找了一个以前的iso镜像,centos5的;
里面有个centos的文件夹(我这是事先解压出来的),这个文件夹里都是centos的包;
搜索找到 gcc 的rpm包 : gcc-4.1.2-55.el5.x86_64.rpm ;
用远程连接(随便你用什么方法)放到服务器上,然后执行 : rpm -ivh gcc-4.1.2-55.el5.x86_64.rpm 安装;
又报错.....说是这个gcc包需要一个glibc-devel的包,好,那就去centos里面找;
找到后上传到服务器: glibc-devel-2.5-123.x86_64.rpm ;
执行 rpm -ivh glibc-devel-2.5-123.x86_64.rpm 安装 ;
好,他说这个包又需要 glibc-headers 包;那就接着找包,上传......
安装 glibc-headers 又说需要 kernel-headers 包;接着找 kernel-headers ;然后执行命令安装;
可以了,安装成功;说明已经不需要其他包了;将需要的包再倒着依次安装;
安装 glibc-headers-2.5-123.x86_64.rpm ;
安装 glibc-devel-2.5-123.x86_64.rpm ;
最后再安装 gcc-4.1.2-55.el5.x86_64.rpm ;
现在C编译器已经可以使用了;可以继续 sshpass的安装了;
在sshpass目录下:
./configure
make //make编译
make install //编译安装
ok,这样就可以使用sshpass命令了;
备注:
我当时的环境是两个局域网的服务器,而且也都安装了密钥,
在使用sshpass命令的时候会出现 Host key verification failed(主机密钥验证失败。)的错误;
网上说将 /root/.ssh/known_hosts 里面的服务器密钥删掉或者将这个文件删掉就可以,个人试了一下,没成功;
用别的方法解决的;
先用 scp 命令复制文件过去,会问你 yes 还是 no ,再让你输入密码;当这样传输一次成功后,再用这个sshpass命令进行免密传输就可以了,这可能是服务器的一种安全验证机制,原理我也不太清楚