SSHPASS – SSH登錄自動鍵入密碼
最近在搞一個SHELL腳本的時候,需要去其它服務器拉取文件,可是發現在腳本里用SSH命令登錄的時候,需要交互式的輸入密碼,這就造成了不能完成大叔所需要的任務,於是,大叔去谷歌了一下,發現了好幾個可以非交互式遠程登錄的工具,大叔就是用了Sshpass完成的。大叔就簡單說一下這個工具的用法吧。
大叔多說幾句,如果是經常使用的服務器,還是推薦大家使用密鑰登錄,這樣不但可以省去這些麻煩也更安全,大叔這是臨時的測試服務器,所以沒有使用密鑰登錄。
安裝
- Ubuntu/Debian:
apt-get install sshpass
- Fedora/CentOS:
yum install sshpass
- Arch:
pacman -S sshpass
使用方法
NAME sshpass - noninteractive ssh password provider SYNOPSIS sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments Options -p password The password is given on the command line. Please note the section titled "SECURITY CONSIDERATIONS" . -f filename The password is the first line of the file filename. -e The password is taken from the environment variable "SSHPASS" .
基本上常用的就這幾個命令,大叔直接舉例來說明
-p 後面直接跟密碼
[root@10- 46 - 164 - 253 ~]sshpass -p '123456' ssh ubuntu@103. 72.246 . 237 Welcome to Ubuntu 16.04 . 5 LTS (GNU/Linux 4.4 . 0 - 112 -generic x86_64) Last login: Wed Feb 13 20 : 47 : 59 2019 from 117.50 . 53.210 ubuntu@10- 8 - 167 - 221 :~ $ exit logout Connection to 103.72 . 246.237 closed.
-f 後面跟密碼文件
#vim pass .txt 123456 sshpass -f pass .txt ssh ubuntu @ 103 . 72 . 246 . 237
-e 需要配合指定環境變量,變量為SSHPASS
export SSHPASS= 123456 sshpass -e ssh ubuntu@ 103.72.246.237
說一下SCP拉取文件吧
sshpass -p '123456' scp ubuntu@ 103.72.246.237 :/home/fklds.txt ~/
另外,需要注意三點
1、如果是自定義端口,可以直接在主機後面加,也可以使用ssh的-p 參數
sshpass -p '123456' ssh ubuntu@ 103.72.246.237:6666 或者 sshpass -p '123456' ssh -p 6666 ubuntu@ 103.72.246.237
2、如果是首次連接的遠程主機,並且需要下載公鑰的話,需要配合ssh參數使用,否則會沒有任合反饋
sshpass -p '123456' ssh -o StrictHostKeyChecking= no ubuntu@ 103.72.246.237
3、-p 參數的密碼不可以含有特殊字符,需要轉義,因此建議使用文件方式。
大叔結語
大叔只是在測試服務器,因此只是用了最直接的方式來解決,要在腳本中處理大量的交互的話,還是要用expect,大家有興趣的可以多看看,大叔有時間再整理一下。
本文轉自:fx.fklds.com