我尝试运行列表中指定的服务器上的一些脚本,但我在以指定用户身份登录时遇到问题。为了澄清这一点,我以 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 能够在不提示输入密码的情况下执行 ssh user1@${SERV},那么您需要 user1 信任 user0。也就是说,需要将user0的公钥添加到user1的authorized_keys文件中。你可以通过运行来做到这一点
ssh-copy-id user1@${SERV}
对于您希望 user0 具有 user1 访问权限的每台服务器。