Mac自帶terminal,以及比較好用的iTerm2命令行工具,都缺少一個功能,就是遠程SSH鏈接,沒法保存密碼。
一種方法是將本機的ssh_key放到遠程服務器中實現無密碼登陸。這種方法在不少狀況下沒法實現,由於遠程服務器大可能是客戶的。
本文介紹一個簡單、輕量級的命令行工具——sshpass,經過它咱們可以向命令提示符自己提供密碼(非交互式密碼驗證),這樣就能夠實現自動鏈接遠程服務器,並且能自動執行遠程命令。javascript
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -d number Use number as file descriptor for getting password -p password Provide password as argument (security unwise) -e Password is passed as env-var "SSHPASS" With no parameters - password will be taken from stdin -h Show help (this screen) -V Print version information At most one of -f, -d, -p or -e should be used
使用用戶名和密碼登陸到遠程Linux ssh服務器(10.42.0.1),並檢查文件系統磁盤使用狀況,如圖所示。html
$ sshpass -p 'my_pass_here' ssh aaronkilik@10.42.0.1 'df -h'
也能夠使用sshpass 經過scp傳輸文件或者rsync備份/同步文件,以下所示:java
------- Transfer Files Using SCP ------- $ scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html ------- Backup or Sync Files Using Rsync ------- $ rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/
/usr/local/bin/sshpass -p 'xxxx' ssh root@192.168.129.116