ssh非交互式(二):sshpass;最后附批量分发ssh公钥命令
其实想在 一 中说下 expect ,但是介于 expect 语法比较麻烦,所以我就直接说下今天这个小命令 sshpass。该命令配置相对 expect 简单不少。
一,安装sshpass
从网站上下载代码,http://sourceforge.net/projects/sshpass/
tar -zxvf sshpass-1.05.tar.gz cd sshpass-1.05 ./configure make && make install
二、sshpass命令参数
# sshpass --help sshpass: invalid option -- '-' 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 -P prompt Which string should sshpass search for to detect a password prompt -v Be verbose about what you're doing -h Show help (this screen) -V Print version information At most one of -f, -d, -p or -e should be used
三、sshpass结合ssh一起使用
sshpass -p 'password' ssh 192.168.36.236
四、sshpass远程执行一条命令
重置下密码
sshpass -p 'password' ssh 192.168.36.236 'echo 'password' | passwd --stdin root'
五、解决第一次登陆机器的交互式问题
sshpass -p 'password' ssh -o StrictHostKeyChecking=no 192.168.36.236 'echo 'password' | passwd --stdin root'
六、sshpass 结合 ssh-copy-id 实现批量分发ssh公钥
# localhost 是IP地址,远程用户默认当前执行命令的用户
sshpass -p 'password' ssh-copy-id -i /root/.ssh/id_rsa.pub -oStrictHostkeyChecking=no localhost
# 实现批量的话,自己写一个IP地址的文件,for循环就好了
for item in $(cat hosts_list.txt);
do shell ....
备注:
-p 指定远程的用户密码
-i 参数指定要分发的公钥
-o 关闭hostkeycheck
这次就先说到这,至于sshpass源码的解析,大家可以自行搜索。主要是我也不会,,,
本文来自博客园, 作者:Star-Hitian, 转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/articles/8253005.html

浙公网安备 33010602011771号