shpass 是一個簡單、輕量級的命令行工具,通過它我們能夠向命令提示符本身提供密碼(非交互式密碼驗證)。簡單說就是一個可以讓你將密碼輸入放到命令行運行的工具;
如:sshpass -p 123456 scp /root/file [email protected]:/root/ 就是將運行命令的服務器上root下的file文件scp複製到192.168.88.88的root下,還可以加 -r 參數,傳輸文件夾;
Debian和centos安裝都可以自己的源來安裝:
Debian : apt-get install sshpass ; centos : yum install sshpass ;
我安裝的時候是碰上了centos5.x的系統,大家應該知道centos的yumyuam已經停止更新了,就是不能用了,所以yum安裝是行不通的,於是就下載了安裝包,用安裝包來安裝;
這裏下載的是 sshpass-1.06.tar.gz ;下載到了 /usr/local/src/ 下;
tar xzvf sshpass-1.06.tar.gz //解壓
cd sshpass-1.06 //進入目錄
./configure //執行腳本編譯
報錯了,什麼意思呢;他說是沒有C編譯器;那好,沒有就安裝;
但是忘了這是centos5.x ,yum無法安裝; 不過還好rpm還可以使用,趕緊換安裝包方式安裝;
找了一個以前的iso鏡像,centos5的;
裏面有個centos的文件夾(我這是事先解壓出來的),這個文件夾裏都是centos的包;
搜索找到 gcc 的rpm包 : gcc-4.1.2-55.el5.x86_64.rpm ;
用遠程連接(隨便你用什麼方法)放到服務器上,然後執行 : rpm -ivh gcc-4.1.2-55.el5.x86_64.rpm 安裝;
又報錯.....說是這個gcc包需要一個glibc-devel的包,好,那就去centos裏面找;
找到後上傳到服務器: glibc-devel-2.5-123.x86_64.rpm ;
執行 rpm -ivh glibc-devel-2.5-123.x86_64.rpm 安裝 ;
好,他說這個包又需要 glibc-headers 包;那就接着找包,上傳......
安裝 glibc-headers 又說需要 kernel-headers 包;接着找 kernel-headers ;然後執行命令安裝;
可以了,安裝成功;說明已經不需要其他包了;將需要的包再倒着依次安裝;
安裝 glibc-headers-2.5-123.x86_64.rpm ;
安裝 glibc-devel-2.5-123.x86_64.rpm ;
最後再安裝 gcc-4.1.2-55.el5.x86_64.rpm ;
現在C編譯器已經可以使用了;可以繼續 sshpass的安裝了;
在sshpass目錄下:
./configure
make //make編譯
make install //編譯安裝
ok,這樣就可以使用sshpass命令了;
備註:
我當時的環境是兩個局域網的服務器,而且也都安裝了密鑰,
在使用sshpass命令的時候會出現 Host key verification failed(主機密鑰驗證失敗。)的錯誤;
網上說將 /root/.ssh/known_hosts 裏面的服務器密鑰刪掉或者將這個文件刪掉就可以,個人試了一下,沒成功;
用別的方法解決的;
先用 scp 命令複製文件過去,會問你 yes 還是 no ,再讓你輸入密碼;當這樣傳輸一次成功後,再用這個sshpass命令進行免密傳輸就可以了,這可能是服務器的一種安全驗證機制,原理我也不太清楚