当前位置: 首页>>编程语言>>正文


Linux自动密码登陆利器sshpass

通过ssh登陆其他机器时,需要手动输入密码,批量操作多台机器时,非常不便;而借助expect来设置自动输入密码,实现起来也略显复杂。

sshpass可以非常方便地解决自动密码登陆的问题,其常见用法为:

sshpass -p ${yourpassword} ssh ${username}@${ip} "ls -al 0</dev/null"

其中${username}@${ip}是要登录的机器账号和地址,${yourpassword}是该机器的密码。

不过,sshpass一般不是linux系统的标配,需要手动安装。安装起来也比较简单,步骤如下(root账号下):

  1. 下载sshpass, 下载地址:http://sourceforge.net/projects/sshpass/
  2. 解压tar xzvf  sshpass-1.05.tar.gz
  3. cd sshpass-1.05
  4.  ./configure
  5.  make && make install
  6. 安装成功后即可直接通过sshpass命令使用。

下面是通过sshpass来自动遍历多台机器根目录的shell脚本示例:


#!/bin/bash

if [ $# -ne 0 ]
then
	echo "Usage: $0"
	exit 1
fi

mypass="abc123@#$"
ips=(10.71.48.125 10.71.48.126 10.71.48.127 10.71.48.128)
for ip in ${ips[@]}
do
	echo "process ip:${ip}"
	sshpass -p ${mypass} ssh root@${ip} "ls -al / 0</dev/null" 0</dev/null
done

exit 0

注意:ssh第一次登录是,可能会出现下面的提示,这会导致sshpass使用失效, 返回错误码6。

The authenticity of host ‘xxxxxx’ can’t be established

RSA key fingerprint is xxxx

Are you sure you want to continue connecting (yes/no)?

这时候可以vim打开/etc/ssh/ssh_config,添加下面的命令

StrictHostKeyChecking no

这样的话,无论ssh是否第一次登录,sshpass都可以正常执行了。

 

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/120.html,未经允许,请勿转载。