リストに指定されたサーバーで一部のスクリプトを実行しようとしていますが、指定されたユーザーとしてログインするのに問題があります。これを明確にするために、user0としてserver1にログインし、このスクリプトを実行します。しかし、スクリプトは私の user0 を user1 に切り替え、リストで指定されたサーバーに対して user1 で次の行を実行します。
[user0@server1 home]$ /home/user0/my_script.sh
#!/bin/bash
sudo su - user1
#SERV=(serv1 serv2 serv3)
for HOST in ${SERV[@]}; do
ssh -t user1@${SERV} 'cd /opt/directory1/directory2/var; sudo /opt/custom/scripts/script.sh'
if [[ $?=0 ]]; then
echo "Commnad on $SERV executed!"
else
echo "$SERV do not exist!"
fi
done
問題は、ユーザーをスクリプトを実行しているユーザーからsshを実行するユーザーに切り替えることです(user1にはrsaキーが含まれています)。ただし、スクリプトは常にuser1のパスワードを要求します。
答え1
user0がパスワードを要求せずにuser1@ $ {SERV}をSSHに接続できるようにするには、user1はuser0を信頼する必要があります。つまり、user0の公開鍵をuser1のauthorized_keysファイルに追加する必要があります。以下を実行してこれを実行できます。
ssh-copy-id user1@${SERV}
各サーバーに対して、user0にuser1アクセス権があることを望みます。