sshpass-Linux命令之非交互SSH密碼驗證


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  in  $( cat  /root/1 .txt)
do
     echo  $i
     sshpass -p123456  ssh  root@$i  'ls -l'
done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM