Linux下sshpass工具介绍(用于非交互的ssh操作)

Admin 2019-05-13 17:52:08 Linux命令

下载地址

http://sourceforge.net/projects/sshpass/

安装

tar zxvf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure --prefix=/opt/sshpass
make
make install

使用

sshpass 和ssh,scp,sftp一起使用

# sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@192.168.1.15 "ls -t | head -n 1"
# sshpass -p 123456 scp -o StrictHostKeyChecking=no /root/abc.sh 192.168.2.35:/root

-p:指定ssh的密码

-o StrictHostKeyChecking=no 避免第一次登录出现公钥检查。也就是避免出现


sshpass用于非交互的ssh密码验证

ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取。

# sshpass -h
 Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename Take password to use from file
   -d number Use number as file descriptor for getting password
   -p password Provide password as argument (security unwise)
   -e Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin
   -h Show help (this screen)
   -V Print version information
At most one of -f, -d, -p or -e should be used

 sshpass [-f|-d|-p|-e] [-hV] command parameters 中的 command parameters 和使用交互式密码验证的使用方法相同

从命令行方式传递密码

# sshpass -p user_password ssh user_name@192.168.3.2
# sshpass -p user_password scp -P22 192.168.3.2:/home/work/s .

从文件读取密码

# echo "user_password" > user.passwd
# sshpass -f user.passwd ssh user_name@192.168.3.2

从环境变量获取密码

# export SSHPASS="user_password"
# sshpass -e ssh user_name@192.168.3.2

实例:

export SSHPASS='123456'
sshpass -e "ssh 10.0.0.1 -l work -p 16000 './update.sh'"
相关文章
最新推荐