sshpass-Linux命令之非交互SSH密码验证
sshpass-Linux命令之非交互SSH密码验证
https://www.cnblogs.com/kaishirenshi/p/7921308.html
ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。
它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
当然明文密码不安全啦,使用场景比较有限。
使用前提:对于未连接过的主机。而又不输入yes进行确认,需要进行sshd服务的优化:
# vim /etc/ssh/ssh_config StrictHostKeyChecking no # vim /etc/ssh/sshd_config GSSAPIAuthentication no UseDNS no # service sshd restart
Centos安装
# 源码包安装 wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz tar xvzf sshpass-1.05.tar.gz cd sshpass-1.05.tar.gz ./configure make make install # yum安装 yum -y install sshpass
使用
#明文密码 [root@136 ~]# sshpass -p 123456 ssh root@192.168.0.137 Last login: Wed Apr 16 15:35:22 2018 from 192.168.0.136 [root@137 ~]# exit logout Connection to 192.168.0.137 closed. #文件密码-f filename #后跟保存密码的文件名,密码是文件内容的第一行。 [root@136 ~]# cat 1.txt 123456 [root@137 ~]# sshpass -f 1.txt ssh root@192.168.0.137 Last login: Fri Apr 18 13:48:20 2014 from 192.168.0.136 [root@137 ~]# exit logout Connection to 192.168.0.137 closed. #密码设置变量 #-e #将环境变量SSHPASS作为密码 [root@136 ~]# export SSHPASS=123456 [root@136 ~]# sshpass -e ssh root@192.168.0.137 Last login: Fri Apr 18 13:51:45 2018 from 192.168.0.136 #从远程主机上拉取文件到本地 #sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/