목록에 지정된 서버에서 일부 스크립트를 실행하려고 하는데 지정된 사용자로 로그인하는 데 문제가 있습니다. 이를 명확히 하기 위해 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 액세스 권한을 갖기를 원합니다.