當前位置: 首頁>>編程語言>>正文


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/zh-tw/article/120.html,未經允許,請勿轉載。