sshpass用法

sshpass用法

  • 在Linux后台中,经常会用到ssh、scp等命令。需要进行认证,手动输入密码,是交互式的过程。

  • 当将ssh、scp等命令做成自动化脚本时,可能需要非交互式的登录过程,此时可以用sshpass。

1 yum安装

yum -y install sshpass

2 明文密码用法示例

2.1 免密码登录

sshpass -p password ssh -p端口 username@host

2.2 远程执行命令

sshpass -p password ssh -p端口 username@host <cmd>

2.3 通过scp上传文件

sshpass -p password scp local_file  -P端口 root@host:remote_file 

2.4 通过scp下载文件

sshpass -p password scp -P端口 root@host:remote_file local_file

3 ssh密码引用文件

  • sshpass支持从文件中导入密码或者从环境变量中导入密码,使用举例:

#从文件读取密码
    $> echo "password" > userpasswd
    $> sshpass -f userpasswd ssh username@x.x.x.x
#从环境变量获取密码(变量名必须是SSHPASS)
    $> export SSHPASS="password"
    $> sshpass -e ssh username@x.x.x.x 
  • sshpass用法:

    sshpass -f userpasswd ssh -p1433 admin@10.145.167.65 'sudo sh -c "echo "sshd:10.145.166.*">>/etc/hosts.allow"'

4 忽略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 -p端口 root@"$host" -o StrictHostKeyChecking=no "$@" 2>/dev/null