如同apt-get安裝程序時會有-y參數來避免交互輸入一樣,我也希望在ssh登錄時能夠直接附加登錄密碼以避免交互式輸入密碼這一步,網上找了找,方法很多。
比如直接通過密鑰免密碼登錄,不過需要改動很多,感覺很麻煩。這里更想要的是不改動server/client的配置下直接免交互式ssh登錄。
於是我先查看幫助:
這里沒有可用參數能夠附加登錄密碼,於是繼續找辦法。
sshpass
sshpass: 用於非交互的ssh 密碼驗證
ssh登陸不能在命令行中指定密碼,也不能以shell中隨處可見的,sshpass 的出現,解決了這一問題。它允許你用 -p 參數指定明文密碼,然后直接登錄遠程服務器。 它支持密碼從命令行,文件,環境變量中讀取。
辦法找到了,現在先在自己機器上安裝。
對於debian/ubuntu系統來說,安裝方式很簡單:
sudo apt-get install sshpass
對於其他系統來說,可以通過編譯源碼:
1 wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz 2 tar xvzf sshpass-1.05.tar.gz 3 ./configure 4 make 5 sudo make install
也可以直接通過訪問這個來下載sshpass-1.05.tar.gz文件。
./configure 后可以添加參數指定安裝目錄,比如:
./configure --prefix=/usr/local/Cellar/sshpass/1.05
來把sshpass安裝到自己喜歡的位置,如果沒有這個參數,則安裝到默認位置。
安裝好了后,輸入sshpass來查看是否安裝好了:
這樣就可以通過:
sshpass -p [passwd] ssh -p [port] root@192.168.X.X
來登錄遠程主機了。