背景:在多台机器上同步一个文件,尤其是刚开始重装系统或没有ansible这样的运维工具,比如想批量给升级一下yum源,用rz 是可以的,如果十来台还成,上五十台就有点麻烦了。sshpass是个好东西,结合scp和shell能完成很多台机器的文件的拷贝,然后结合sudo把文件挪动到root才能去的地方。其实还有一个expect脚步也有这个自动捕获输出并自动输入密码。但如果是第一次连接,expect可能捕获的输出可能是yes啥的输出,spawn这个命令也是expect的rpm包的一个命令,但都得yum安装,这个引出新的安装问题,http://justwinit.cn/post/5089/,还是讲sshpass包。
关于sshpass:
rpm -qf /usr/bin/sshpass
sshpass-1.05-1.el6.x86_64
sshpass-1.06-1.el6.x86_64
sshpass: 用于非交互的ssh 密码验证
ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取
实践如下:
cd /home/xiangdong
vi /home/xiangdong/ssh.passwd
同样,因为密码一样,可以起多个这样的免密拷贝,包括命令执行:
如果说ansible 的command命令不行,那就用那个raw更底层一些,如下,做解压:
来自:http://jackxiang.com/post/8807/
$> sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
sshpass [-f|-d|-p|-e] [-hV] command parameters 中的 command parameters 和使用交互式密码验证的使用方法相同
#从命令行方式传递密码
$> sshpass -p user_password ssh user_name@192.168..1.2
$> sshpass -p user_password scp -P22 192.168.1.2:/home/test/t .
#从文件读取密码
$> echo "user_password" > user.passwd
$> sshpass -f user.passwd ssh user_name@192.168..1.2
#从环境变量获取密码
$> export SSHPASS="user_password"
$> sshpass -e ssh user_name@192.168..1.2
[oldboy@backup ~]$ sshpass -p 123456 ssh 172.16.1.31
#第一次操作可能没反应,可用下述参数解决
[root@backup ~]# sshpass -p 123456 ssh -p 22 172.16.1.31 -o StrictHostKeyChecking=no
Warning: Permanently added '172.16.1.31' (RSA) to thelist of known hosts.
Last login: Fri Jun 10 15:32:52 2016 from 10.0.0.1
[root@nfs01 ~]# logout
或
[root@backup ~]# sshpass -p 123456 ssh 172.16.1.31 -o StrictHostKeyChecking=no
Last login: Fri Jun 10 15:57:47 2016 from 172.16.1.41
[root@nfs01 ~]# logout
2、2、1#直接带密码连接服务器
[root@backup ~]# sshpass -p 123456 ssh 172.16.1.31
Last login: Fri Jun 10 15:57:35 2016 from 172.16.1.41
[root@nfs01 ~]# logout
2、2、2#以文件形式保存密码连接服务器
[root@backup ~]# echo "123456">ssh.passwd
[root@backup ~]# sshpass -f ssh.passwd ssh 172.16.1.31
Last login: Fri Jun 10 16:00:06 2016 from 172.16.1.41
[root@nfs01 ~]# logout
Connection to 172.16.1.31 closed.
2、2、3#将密码写入变量
[root@backup ~]# export SSHPASS="123456"
[root@backup ~]# sshpass -e ssh 172.16.1.31
Last login: Fri Jun 10 16:05:14 2016 from 172.16.1.41
[root@nfs01 ~]# logout
Connection to 172.16.1.31 closed.
2、2、4#同理远程拉取、推送文件、执行命令等操作scp,rsync均可。
[root@backup ~]# sshpass -f ssh.passwd scp /etc/hosts172.16.1.31:/root/
[root@nfs01 ~]# pwd
/root
[root@nfs01 ~]# ls -l hosts
-rw-r--r-- 1 root root 158 Jun 10 16:13 hosts
[root@backup ~]# sshpass -f ssh.passwd ssh 172.16.1.31 ls /root/
anaconda-ks.cfg
hosts
install.log
install.log.syslog
3、总结
sshpass的优点:简单易用,速度会比expect快很多。
sshpass的缺点:-p参数密码是明文显示,可以通过history查看。-f参数则需要对面文件进行权限限制,保证他人无法查看。-e参数别人也可以查到IP。
来自:http://blog.51cto.com/ylcodes01/1789306
源码位置:http://sourceforge.net/projects/sshpass/
摘录自:http://m.blog.csdn.net/article/details?id=7293274
关于sshpass:
rpm -qf /usr/bin/sshpass
sshpass-1.05-1.el6.x86_64
sshpass-1.06-1.el6.x86_64
sshpass: 用于非交互的ssh 密码验证
ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取
实践如下:
cd /home/xiangdong
vi /home/xiangdong/ssh.passwd
同样,因为密码一样,可以起多个这样的免密拷贝,包括命令执行:
如果说ansible 的command命令不行,那就用那个raw更底层一些,如下,做解压:
来自:http://jackxiang.com/post/8807/
$> sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
sshpass [-f|-d|-p|-e] [-hV] command parameters 中的 command parameters 和使用交互式密码验证的使用方法相同
#从命令行方式传递密码
$> sshpass -p user_password ssh user_name@192.168..1.2
$> sshpass -p user_password scp -P22 192.168.1.2:/home/test/t .
#从文件读取密码
$> echo "user_password" > user.passwd
$> sshpass -f user.passwd ssh user_name@192.168..1.2
#从环境变量获取密码
$> export SSHPASS="user_password"
$> sshpass -e ssh user_name@192.168..1.2
[oldboy@backup ~]$ sshpass -p 123456 ssh 172.16.1.31
#第一次操作可能没反应,可用下述参数解决
[root@backup ~]# sshpass -p 123456 ssh -p 22 172.16.1.31 -o StrictHostKeyChecking=no
Warning: Permanently added '172.16.1.31' (RSA) to thelist of known hosts.
Last login: Fri Jun 10 15:32:52 2016 from 10.0.0.1
[root@nfs01 ~]# logout
或
[root@backup ~]# sshpass -p 123456 ssh 172.16.1.31 -o StrictHostKeyChecking=no
Last login: Fri Jun 10 15:57:47 2016 from 172.16.1.41
[root@nfs01 ~]# logout
2、2、1#直接带密码连接服务器
[root@backup ~]# sshpass -p 123456 ssh 172.16.1.31
Last login: Fri Jun 10 15:57:35 2016 from 172.16.1.41
[root@nfs01 ~]# logout
2、2、2#以文件形式保存密码连接服务器
[root@backup ~]# echo "123456">ssh.passwd
[root@backup ~]# sshpass -f ssh.passwd ssh 172.16.1.31
Last login: Fri Jun 10 16:00:06 2016 from 172.16.1.41
[root@nfs01 ~]# logout
Connection to 172.16.1.31 closed.
2、2、3#将密码写入变量
[root@backup ~]# export SSHPASS="123456"
[root@backup ~]# sshpass -e ssh 172.16.1.31
Last login: Fri Jun 10 16:05:14 2016 from 172.16.1.41
[root@nfs01 ~]# logout
Connection to 172.16.1.31 closed.
2、2、4#同理远程拉取、推送文件、执行命令等操作scp,rsync均可。
[root@backup ~]# sshpass -f ssh.passwd scp /etc/hosts172.16.1.31:/root/
[root@nfs01 ~]# pwd
/root
[root@nfs01 ~]# ls -l hosts
-rw-r--r-- 1 root root 158 Jun 10 16:13 hosts
[root@backup ~]# sshpass -f ssh.passwd ssh 172.16.1.31 ls /root/
anaconda-ks.cfg
hosts
install.log
install.log.syslog
3、总结
sshpass的优点:简单易用,速度会比expect快很多。
sshpass的缺点:-p参数密码是明文显示,可以通过history查看。-f参数则需要对面文件进行权限限制,保证他人无法查看。-e参数别人也可以查到IP。
来自:http://blog.51cto.com/ylcodes01/1789306
源码位置:http://sourceforge.net/projects/sshpass/
摘录自:http://m.blog.csdn.net/article/details?id=7293274
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/9255/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2018-6-12 15:40
评论列表