python 中sshpass的使用

 

如何用SSH连接远程服务器有两种方式

1.利用远程软件控制:sshclient、Puttty、secureCRT等

2、终端命令 ssh -p 22 root@服务器ip  密码需要手工交互式输入(22: 端口号 root: 用户名)

    ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,可以 -p 参数指定明文密码,然后直接登录远程服务器,支持密码从命令行、文件、环境变量中读取。

 

其默认没有安装,需要手动安装,方法如下:

sshpass下载地址:http://sourceforge.net/projects/sshpass/ 下载为一个 tar.gz的压缩包。

$ tar -zxvf sshpass-1.05.tar.gz

$ cd sshpass-1.05

$ ./configure --prefix=/opt/sshpass #指定安装目录

$ make

$ make install

$ cp /opt/sshpass/bin/sshpass /usr/bin/

 

输入命令 sshpass 如下提示即安装成功:

 

2.用法介绍

# 免密码登录
$ sshpass -p password ssh username@host
sshpass -p A123456 ssh root@192.168.56.102
#从文件获取密码
$sshpass -f userpasswd.txt  ssh root@192.168.56.102
#从环境变量获取密码
 $> export SSHPASS="password"
 $> sshpass -e ssh username@x.x.x.x 
# 远程执行命令 $ 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
# 循环执行多台机器的命令
for in $(cat /root/1.txt)
do
echo $i
sshpass -p123456 ssh root@$i 'ls -l'
done
 

忽略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 

 

posted @ 2018-08-16 16:34  yoyo008  阅读(2536)  评论(0编辑  收藏  举报