ssh中不能非交互式输入yes和密码,一般来说都用expect 来实现,但是比较麻烦,这就可以用sshpass来进行非交互式操作。
首先sshpass并不在CentOS和RHEL中,而是在Fedora的包中,作为开发版或者可以理解成先行版,Fedora中有很多好用的并且在另外两个中没有的包,其中sshpass就是一个。
要安装sshpass这个东西有2种方法,
1、找到源码包,编译安装。
2、用yum源,这个yum源要包括epel。
国内的话最好用阿里的镜像源。
图中的就是epel源了点帮助就能看到下载方法。
按照版本复制执行就好了。
我用的是7版本的centos
[root@www yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
或者可以点进去,安装这个,地址打上边地址栏的那些。
要安装相应版本的。
[root@www yum.repos.d]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
然后就可以直接yum install sshpass直接安装了。
安装后的使用方法:
[root@localhost /]# sshpass -p 000000 ssh -o StrictHostkeyChecking=no 172.16.12.15 touch /a-file
-p //后边加的是密码
-o StrictHostkeyChecking=no //不开启验证,因为第一次登陆的时候要输入yes嘛,有这个可以跳过yes。
后边的就和ssh一样,直接加指令了。
可以看远程的机器已经创建了这个文件
[root@localhost /]# sshpass -p 123 scp -P 13579 -o StrictHostkeyChecking=no /mysql_backup/20191119-* 172.16.0.29:/tmp/
-P //这个是指定端口信息。
上边的这些指令是可以直接写到脚本中的,非交互式远程访问。