Linuxメッシュ相互信頼処理方式

基本素材

CentOS7.7最小限のクローズselinuxファイアウォール

通常、ansibleやpsshなどのバッチツールを使用するための重要な前提条件は、制御側と制御側の間の一方向の機密性のない相互信頼、またはOracle RACまたはGPFSファイルシステムを実行する場合の2つのマシン間の双方向の相互信頼の必要性です。前者の場合、通常は仮想マシンテンプレートを作成するときは、テンプレートに直接入力するだけです。後者の場合、通常、ホストの数はそれほど多くなく、手動で生成するだけで十分です。最近では、数十のホスト間でメッシュ相互信頼を行うことが求められています。どのホストから他のすべてのホストまで、相互信頼が必要です。この場合、スクリプトが必要です。

全体的な手順:

1.各ホストが秘密鍵を生成します2.制御ホストが秘密鍵を収集します3.制御ホストによって収集されたauthorized_keysとknown_hostsをすべてのホストに配布します


スクリプトを実行する前に、次の準備を行う必要があり
ます。1。他のすべてのホストがssh接続できることを確認するための制御マシンを見つけます
。2。制御マシンにソフトウェアパッケージyum install -y sshpassをインストールします。3。txt
ファイルを準備し、各ホストの相互信頼IPとパスワードを設定します。 txtファイルに1行保存します(ホストパスワードがすべて同じ場合は、スクリプトに書き込みます。この場合、IPのみが保存され、スクリプトでパスワードを個別に取得する必要がないため、問題が回避されます)。
例は次のとおりです。今回は区切り文字で@を使用します。 、実際のパスワードと競合する場合は、
10.1.1.2
@ 123456 10.1.1.3@567890を置き換えることができます

スクリプトは次のとおりです。

#生成所有主机密钥,并完成秘钥收集
for i in `cat ip.txt`
do
ip=`echo $i |awk -F "@" '{print $1}'
password=`echo $i |awk -F "@" '{print $2}'
sshpass -p $password ssh $ip -o StrictHostKeyChecking=no "mv /root/.ssh/{id_rsa,id_rsa.pub} /tmp;ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '';cat /root/.ssh/id_rsa.pub"|grep ssh-rsa>>/root/.ssh/authorized_keys
done
#分发authorized_keys及known_hosts
for i in `cat ip.txt`
do
ip=`echo $i |awk -F "@" '{print $1}'
password=`echo $i |awk -F "@" '{print $2}'
sshpass -p $password scp /root/.ssh/{authorized_keys,known_hosts} root@$ip:/root/.ssh/
done

スクリプトの実行後に複数のホストをランダムに選択して、パスワードなしのログインをテストします

おすすめ

転載: blog.csdn.net/finalkof1983/article/details/110824708