Я пишу скрипт для добавления пользователя в экземпляр aws ec2. Ниже приведен сценарий оболочки.Не удается добавить ключ к удаленному компьютеру для пользователя
file=$2
user=$1
user1="ec2-user"
basekey="/home/user-home/some-folder/test.pem"
keyfile=$3
file1=`cat /home/user-home/.ssh/id_rsa.pub`
for line in `cat $file`
do
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo useradd -m -d /home/$user $user
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo mkdir /home/$user/.ssh
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo touch /home/$user/.ssh/authorized_keys
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 777 /home/$user/.ssh
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 777 /home/$user/.ssh/authorized_keys
scp -i $basekey -o strictHostKeyChecking=no $keyfile [email protected]$line:/home/$user1/
sleep 10
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo cat /home/$user1/id_rsa.pub > /home/$user/.ssh/authorized_keys
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo cat /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 600 /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chown $user.$user /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 700 /home/$user/.ssh
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chown $user.$user /home/$user/.ssh
done
Я получаю ниже ошибки, хотя файл присутствует там.
./dev-enable.sh: line 24: /home/devuser/.ssh/authorized_keys: No such file or directory
Я не могу найти способ интерполирования этой конкретной линии. Я был бы признателен за любую помощь в этом.
Какая линия неудачников? Почему вы «спите» в середине скрипта? Файл '/ home/devuser/.ssh/authorized_keys' явно не существует - что бы вы ожидали от сценария? – l0b0
@ l0b0 Если вы видите, что я делаю экземпляр scp для ec2, который займет 3-4 секунды. Поэтому на этот момент я не хочу, чтобы мой скрипт работал без операции scp. На самом деле есть папка и файл в этом конкретном месте '/ home/devuser/.ssh/authorized_keys', в котором команда не может писать открытый ключ, я пытаюсь добавить. –
Все операции сценария синхронны, поэтому * невозможно * достичь строки до * всех * строк до ее завершения. Вам не нужно «спать» вообще. – l0b0