目录
1.3 实例3:从密码文件读取文件内容作为密码去远程连接主机
前言
ssh登陆不能在命令行中指定密码,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
一、sshpass简介
应用范围: 可以在命令行直接使用密码来进行远程连接和远程拉取文件
。
使用前提: 对于未连接过的主机。而又不输入yes进行确认,需要进行sshd服务的优化:
# vim /etc/ssh/ssh_config StrictHostKeyChecking no
# vim /etc/ssh/sshd_config GSSAPIAuthentication no
UseDNS no
# service sshd restart
sshpass 命令的安装:
# yum -y install sshpass
1.1 实例1:直接远程连接某台主机:
命令:sshpass -p xxx ssh root@192.168.161.100
sshpass -p xxx ssh root@192.168.161.100 'w' -o StrictHostChecking=no 免输入yes
注:若是第一次连接直接用sshpass -p 123456 ssh root@192.168.161.100会连接不上
实例:本地执行远程机器的命令:
命令: sshpass -p xxx ssh root@192.168.161.100 "ethtool eth0"
1.2 实例2:远程连接指定ssh的端口:
命令:sshpass -p 123456 ssh -p 1000 root@192.168.161.100
(当远程主机不是默认的22端口时候)
1.3 实例3:从密码文件读取文件内容作为密码去远程连接主机
命令:sshpass -f xxx.txt ssh root@192.168.161.100
1.4 实例4:从远程主机上拉取文件到本地
命令: sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/
1.5 实例5:
sshpass不可以直接接带特殊字符意义的密码,需要转义或者用小括号,或者指定文件的方式来连接都可以规避这个问题。
附录:sshpass的安装Ubuntu:
apt-get install sshpass
1.6 源码包安装
centos:
# 源码包安装
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
tar xvzf sshpass-1.05.tar.gz
cd sshpass-1.05.tar.gz
./configure
make
make install
# yum安装
yum -y install sshpass