背景
在Linux后臺中莉恼,經(jīng)常會用到ssh、scp等命令速那。需要進行認證俐银,手動輸入密碼,是交互式的過程端仰。
當(dāng)將ssh捶惜、scp等命令做成自動化腳本時,可能需要非交互式的登錄過程荔烧,此時可以用sshpass吱七。
使用舉例
使用-p參數(shù)指定登錄密碼
免密碼登錄
$ sshpass -p password ssh username@host
遠程執(zhí)行命令
$ sshpass -p password ssh username@host <cmd>
通過scp上傳文件
$ sshpass -p password scp local_file root@host:remote_file
通過scp下載文件
$ sshpass -p password scp root@host:remote_file local_file
忽略RSA Key檢查信息
第一次認證時,一般會有RSA key檢查的提示:
The authenticity of host ’10.x.x.x (10.x.x.x)' can't be established. RSA key fingerprint is a4:eb:8c:7d:2a:ef:d6:1c:a3:0c:e8:e5:00:d2:eb:60. Are you sure you want to continue connecting (yes/no)?
可以使用-o StrictHostKeychecking=no
選項來忽略key檢查信息鹤竭。
如:
sshpass -p "$SSH_PASSWD" ssh root@"$host" -o StrictHostKeyChecking=no "$@" 2>/dev/null
其他方式輸入密碼
sshpass支持從文件中導(dǎo)入密碼或者從環(huán)境變量中導(dǎo)入密碼踊餐,使用舉例:
從文件讀取密碼
$> echo "password" > userpasswd
$> sshpass -f userpasswd ssh username@x.x.x.x
從環(huán)境變量獲取密碼
$> export SSHPASS="password"
$> sshpass -e ssh username@x.x.x.x