COVER:
https://www.cnblogs.com/kaishirenshi/p/7921308.html
https://www.cnblogs.com/senlinyang/p/7833249.html
sshpass的使用方法
應用范圍:可以在命令行直接使用密碼來進行遠程連接和遠程拉取文件。
實例1:直接遠程連接某臺主機:
命令:sshpass -p xxx ssh root@192.168.11.11
實例2:遠程連接指定ssh的端口:
命令:sshpass -p 123456 ssh -p 1000 root@192.168.11.11 (當遠程主機不是默認的22端口時候)
實例3:從密碼文件讀取文件內容作為密碼去遠程連接主機
命令:sshpass -f xxx.txt ssh root@192.168.11.11
實例4:從遠程主機上拉取文件到本地
命令: sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/
補:
ssh的配置文件位置:vim /etc/ssh/sshd_config
去掉#,修改端口號。
sshpass的安裝:
**Ubuntu**:
apt-get install sshpass
**centos:**
wget [http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz](http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz)
tar xvzf sshpass-1.05.tar.gz
cd sshpass-1.05.tar.gz
./configure
make
make install
MAC
cover:https://blog.csdn.net/joeblackzqq/article/details/46598189
由于有一些場景不能使用ssh私鑰來實現免登,因此需要想其它辦法解決一下這個問題。
安裝sshpass
試圖使用homebrew安裝
$ brew install sshpass
Error: No available formula for sshpass
We won't add sshpass because it makes it too easy for novice SSH users to
ruin SSH's security.
這個萌賣的好。。。。
使用homebrew強制安裝
brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb
成功了。。。
編譯安裝
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
tar xvzf sshpass-1.05.tar.gz
./configure --prefix=/usr/local/Cellar/sshpass/1.05
make
sudo make install
編譯安裝的步驟是從brew的步驟中copy出來的,絕對可行。其中./configure 后面的prefix路徑可以去掉,這樣就會安裝到默認目錄中。
使用方式
sshpass -p 'ssh_password' ssh xxx.xxx.xxx.xxx
可以看到這種方式其實還是要在命令里指定host+密碼登錄,還是不夠方便。期待的方式是只需要指定host即可,密碼神馬的,能自己處理。
簡單的使用方式
寫一個腳本,記錄一些常用的用戶名與密碼,通過簡單的選擇即可完成ssh登錄。
創建一個文件sshp。
#!/bin/bash
cat <<MENU
a => 10.101.81.238
10.101.81.238 => 10.101.81.238
b => 192.168.4.151
192.168.4.151 => 192.168.4.151
c => 192.168.4.2
192.168.4.2 => 192.168.4.2
>>> 請輸入ip或序號 <<<
MENU
echo -n "Your choose:"
read host
case "$host" in
a|10.101.81.238)
exec /usr/local/bin/sshpass -p 123456 ssh root@10.101.81.238 -p22
;;
b|192.168.4.151)
exec /usr/local/bin/sshpass -p 'sdfsdf' ssh root@192.168.4.151 -p22
;;
c|192.168.4.2)
exec /usr/local/bin/sshpass -p 'wfssfs' ssh root@192.168.4.2 -p22
;;
*)
echo "Error, No host"
;;
esac
使用方法
$ sshp
a => 10.101.81.238
10.101.81.238 => 10.101.81.238
b => 192.168.4.151
192.168.4.151 => 192.168.4.151
c => 192.168.4.2
192.168.4.2 => 192.168.4.2
>>> 請輸入ip或序號 <<<
Your choose:a
# ssh login success