Shell脚本免密码登录远程服务器(方法一)

Linux机器日常运维过程中,经常需要在本地运行脚本执行针对远程主机的命令。正常情况下,ssh登陆远程机器时会提示输入密码,这会影响到脚本的自动执行,(因为shell脚本中没有自动填充密码的命令)。


总的来说,有三个办法来解决问题:


1)使用远程登录工具


2)建立主机间的ssh信任关系


3)用脚本模拟scp命令的密码输入过程,避免每次手工输密码


今天主要来介绍一下第一种方法——使用远程登录工具。那么一般常用的工具有expect以及sshpass,而本文主要介绍的是sshpass。


一、sshpass介绍


ssh登陆不能在命令行中指定密码,需要用户交互输入密码,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。


它支持密码从命令行、文件、环境变量中读取。所以,通过sshpass实现以非交互的形式为ssh提供密码。


二、安装配置


1、下载:


下载地址为:http://sourceforge.net/projects/sshpass/files/sshpass


目前1.0.6是最新版本:


wget http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz


也可以使用sudo apt-get install sshpass来安装。


2、编译安装


#tar xf sshpass-1.06.tar.gz
#cd sshpass-1.05
#./configure

#make && make install


查看安装成功与否:




3、sshpass用法和命令介绍


Shell脚本免密码登录远程服务器(方法一)_第1张图片


三、用法范例


从当前服务器向192.168.67.171服务器下面的liao用户根目录下拷贝一个名叫a.out的文件。

其中,liao用户的密码为liao123

写一个名字为scp的shell脚本:

Shell脚本免密码登录远程服务器(方法一)_第2张图片

保存,chmod +x scp,给scp文件权限。然后./scp 执行该文件。

我们可以看到,在没有执行该脚本之前,171服务器liao用户根目录下的文件是这样的:



执行完之后,根目录的文件多出了a.out,脚本成功通过sshpass工具实现了免密码登录远程服务器。


你可能感兴趣的:(BashShell)