Назад | Перейти на главную страницу

Ошибка доступа Git в сценарии запуска экземпляра EC2 (Ubuntu)

Я создаю экземпляр ec2 из AMI, используя

aws ec2 run-instances [lots of arguments] --user-data file://my_sh_file.sh

my_sh_file.sh выглядит так:

su ubuntu   # fails with or without this
cd /home/ubuntu/my_working_dir
git pull origin master
. app_startup_script.sh

Git не может подключиться к этому журналу ошибок (из /var/log/cloud-init-output.log):

Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Если я вхожу в систему (как ubuntu) и вызываю git pull, все работает нормально.

Я предполагаю, что либо (а) su ubuntu не работает, либо (б) (это кажется менее вероятным), что конфигурация ssh не загружена в этот момент в последовательности загрузки ... но я в тупике. Помогите?

Как вы используете sudo Неправильно.

Прежде всего это должно быть sudo -u ubuntu не просто sudo ubuntu. Однако даже тогда это не сработает.

Когда ты бежишь sudo он порождает новую оболочку или, если дана команда, запускает эту команду под убунту пользователь. В твоем случае sudo -u ubuntu не имеет команды для запуска, и поскольку он находится в неинтерактивном режиме, он также не запускает оболочку. Он просто выходит.

Следующие строки - cd и git - затем запустить в контексте Данные пользователя сценарий, не под убунту пользователь, поэтому он не работает.

Вы можете сделать это, например:

sudo -u ubuntu sh -c "cd /home/...; git pull ...; ./app.sh"

Это запустит все команды под убунту пользователь.

Надеюсь, это поможет :)