统计各节点ssh免密登录授权信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计各节点ssh免密登录授权信息相关的知识,希望对你有一定的参考价值。
为了维护方便,生产环境ansible到其他所有节点所有账号做了免密登录,根据安全需求,现需要统计所有节点所有账号的ssh免密登录授权信息。为了省时省力,将以ansible+shell的形式实现,如下:1、准备好ansible的hosts文件,根据账号名称分成多个组,其中root组包括所有节点的IP地址。
2、准备一个文件包括所有节点的IP地址
3、playbook文件,authfile.yml
--- - hosts: root gather_facts: false remote_user: root tasks: - name: cp root auth file shell: source ~/.bash_profile && source /etc/profile && mkdir -p /tmp/myauthdir && cp /root/.ssh/authorized_keys /tmp/myauthdir/`hostname`_root.txt - hosts: sumapay gather_facts: false remote_user: root tasks: - name: cp sumapay auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/sumapay/.ssh/authorized_keys /tmp/myauthdir/`hostname`_sumapay.txt - hosts: sumapay25 gather_facts: false remote_user: root tasks: - name: cp sumapay25 auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/sumapay25/.ssh/authorized_keys /tmp/myauthdir/`hostname`_sumapay25.txt - hosts: glassfish gather_facts: false remote_user: root tasks: - name: cp glassfish auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/glassfish/.ssh/authorized_keys /tmp/myauthdir/`hostname`_glassfish.txt
4、shell脚本文件,authfile.sh
#!/bin/bash #授权文件归集目录 authfile_dir="authfile" #在各节点生成"主机名_用户"格式的授权文件 ansible-playbook -i /etc/ansible/hosts authfile.yml #拷贝各节点生成后的授权文件 cpauthfile(){ if [[ ! -d $authfile_dir ]];then mkdir $authfile_dir fi for i in `cat ip.txt` do scp [email protected]${i}:/tmp/myauthdir/* $authfile_dir done } #过滤个授权文件免密登录主机,并生成列表 create_table(){ if [[ -s filename.txt ]];then echo > filename.txt fi for i in `ls $authfile_dir` do echo $i|awk -F "." '{print $1}' >> filename.txt cat $authfile_dir/$i|awk '{print $3}'|sort -u >> filename.txt echo "" >> filename.txt done } cpauthfile create_table
5、执行authfile.sh,生成filename.txt文件,包含所有节点、所有用户的ssh免密登录授权信息。
以上是关于统计各节点ssh免密登录授权信息的主要内容,如果未能解决你的问题,请参考以下文章