sshpass可以快速的登陆到任意主机,而不用输入密码,在运维工作中,要写很多的自动化脚本,要远程登陆到别的主机上去,也是使用的《详解SSH原理》这篇文章中说的“公钥免密登陆”的办法,但是使用“公钥免密登陆”的办法是需要生成公私钥对,同时还涉及到公钥分发,对于一些运维新手来说,经常在这两步犯错误;后来,我又想起了那个使用sshpass命令的工具,自己一直未曾使用过这个工具,今天就用这篇文章来对sshpass命令一探究竟。
sshpass是什么?
在我们编写自动化SHELL脚本的时候,免不了需要自动化登陆远程主机,除了上面说的“公钥免密登陆”方法外,还有这里要说的sshpass方法。
sshpass是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证)。SSH直接使用TTY访问,以确保密码是用户键盘输入的。sshpass在专门的TTY中运行SSH,以误导SSH相信它是从用户接收到的密码,从而实现非交互式密码验证。使用sshpass是不安全的,因为所有系统上的用户在命令行中通过简单的“ps”命令就可看到密码。所以,还是建议使用《详解SSH原理》这篇文章中说的“公钥免密登陆”的办法。
离线安装sshpass
在CentOS中,离线DVD系统包中是不自带sshpass程序的,为了能离线安装sshpass,我们只能通过编译源码进行安装。我们通过以下简单的几步可以完成sshpass的安装。得到sshpass-1.06.tar.gz源码包后,就开始编译安装吧。# 解压源码包
tar -xzf sshpass-1.06.tar.gz
# 建立安装目录
mkdir sshpass
# 指定安装目录进行编译
cd sshpass-1.06
./configure --prefix=/home//sshpass
make && make install
su - root
cp /home//sshpass/bin/sshpass /usr/bin/sshpass
使用sshpass -V命令检查是否安装正确。
sshpass简单使用
在使用sshpass命令之前,我们需要对/etc/ssh/ssh_config进行修改,将#StrictHostKeyChecking ask修改为StrictHostKeyChecking no;然后service sshd restart重启SSH服务。常用方式一:免密登陆远程主机# 其中-p选项后面指定密码
sshpass -p '123456' ssh @192.168.1.2
# 从文件的读取密码进行远程登陆
sshpass -f ~/passwd.txt ssh @192.168.1.2
常用方式二:免密传送文件sshpass -p '123456' scp ~/sshpass/bin/sshpass @192.168.1.2:~/
总结
一个小小的命令又是一篇文章,真是学无止境啊!对于这篇文章,以及这篇文章中的sshpass命令,总结完以后,我个人觉的就是“实用”;对于我们提升日后的工作效率将会有很大的帮助。知识不在于小,而在于精悍,在于实用,sshpass这个命令就特别符合,工具虽小,但是实用就好。希望我这里的总结能够帮助到你。
本文来自投稿,不代表访得立场,如若转载,请注明出处:http://www.found5.com//view/510.html