sshpass 用法举例
关于sshpass
背景
在Linux后台中,经常会用到ssh、scp等命令。需要进行认证,手动输入密码,是交互式的过程。
当将ssh、scp等命令做成自动化脚本时,可能需要非交互式的登录过程,此时可以用sshpass。
使用举例
使用-p
参数指定登录密码
# 免密码登录
$ sshpass -p password ssh username@host
# 远程执行命令
$ 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支持从文件中导入密码或者从环境变量中导入密码,使用举例:
#从文件读取密码
$> echo "password" > userpasswd
$> sshpass -f userpasswd ssh username@x.x.x.x
#从环境变量获取密码
$> export SSHPASS="password"
$> sshpass -e ssh username@x.x.x.x