ssh登陸不能在命令行中指定密碼。sshpass的出現,解決了這一問題。sshpass用於非交互SSH的密碼驗證,一般用在sh腳本中,無須再次輸入密碼。
它允許你用 -p 參數指定明文密碼,然后直接登錄遠程服務器,它支持密碼從命令行、文件、環境變量中讀取。
其默認沒有安裝,需要手動安裝,方法如下:
sshpass下載地址:http://sourceforge.net/projects/sshpass/ 下載為一個 tar.gz的壓縮包。
$ tar -zxvf sshpass-1.05.tar.gz
$ cd sshpass-1.05
$ ./configure --prefix=/opt/sshpass #指定安裝目錄
$ make
$ make install
$ cp /opt/sshpass/bin/sshpass /usr/bin/
經過以上步驟,sshpass安裝完成,輸入命令 sshpass 如出現如下提示即安裝成功:
2.用法介紹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-p password
#后跟密碼
[root@zhu ~]
# sshpass -p 123456 ssh root@192.168.56.102
Last login: Wed Apr 16 15:35:22 2014 from 192.168.56.1
[root@jiang ~]
# exit
logout
Connection to 192.168.56.102 closed.
-f filename
#后跟保存密碼的文件名,密碼是文件內容的第一行。
[root@zhu ~]
# cat 1.txt
123456
[root@zhu ~]
# sshpass -f 1.txt ssh root@192.168.56.102
Last login: Fri Apr 18 13:48:20 2014 from 192.168.56.101
[root@jiang ~]
# exit
logout
Connection to 192.168.56.102 closed.
-e
#將環境變量SSHPASS作為密碼
[root@zhu ~]
# export SSHPASS=123456
[root@zhu ~]
# sshpass -e ssh root@192.168.56.102
Last login: Fri Apr 18 13:51:45 2014 from 192.168.56.101
[root@jiang ~]
# exit
logout
Connection to 192.168.56.102 closed.
|
#從命令行方式傳遞密碼 -p指定密碼
$ sshpass -p '123456' ssh user_name@host_ip
$ sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/
如在多台主機執行命令:
1
2
3
4
5
6
7
|
[root@zhu ~]
# cat a.sh
#!/bin/bash
for
i
in
$(
cat
/root/1
.txt)
do
echo
$i
sshpass -p123456
ssh
root@$i
'ls -l'
done
|