我正在使用 AMI 创建 ec2 实例
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,它可以正常工作。
我猜想可能是 (a) su ubuntu 不起作用,或者 (b)(这种可能性较小)在启动顺序的这个阶段 ssh 配置未加载... 但我不知所措。帮忙?
答案1
您的使用方式sudo
不正确。
首先它sudo -u ubuntu
不应该只是sudo ubuntu
。然而即使这样它也不会起作用。
当你跑步时sudo
它时,它会生成一个新的 shell,或者如果给出一个命令,它会在Ubuntu用户。在您的情况下,sudo -u ubuntu
没有要运行的命令,并且由于处于非交互模式,因此也不会生成 shell。它只是退出。
以下几行 -cd
以及git
在上下文中运行用户数据脚本,不在Ubuntu用户,这就是它失败的原因。
例如,你可以这样做:
sudo -u ubuntu sh -c "cd /home/...; git pull ...; ./app.sh"
这将运行Ubuntu用户。
希望有帮助:)