免密码 ssh 登录,大家都知道用 rsa/dsa 证书即可。但是某些设备并不支持证书登录,如部分型号的硬件防火墙。那么如何实现免交互式输入 ssh 密码呢,这里介绍下 sshpass 这个小工具。

01.Introduction

sshpass 是一个轻量级(16K)的 CLI 工具,可以实现 ssh 免输入密码(非交互式)登录远程服务器,这样就可以在本地脚本或者 cron 任务中远程登录服务器执行命令。

在别人的博文中看到使用 sshpass ,本地系统上其他用户用 ps -ef 命令可以看到明文的密码,不过我测试发现密码部分其实被替换为 zzzzzzz 了,也许是版本不同的原因。本文中版本为 1.0.6

02.HowTO

帮助:

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 -p 111111 ssh root@192.168.1.1 "echo 'hello world!'"