下载地址
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'"