Ubuntu

EC2 實例啟動腳本 (Ubuntu) 中的 Git 訪問失敗

  • June 5, 2019

我正在使用從 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 配置……但我很難過。幫助?

您使用的方式sudo不正確。

首先,它不應該sudo -u ubuntu只是sudo ubuntu. 但是即使那樣它也行不通。

當你執行sudo它時,它會生成一個新的 shell,或者如果給出了一個命令,它會在ubuntu使用者下執行該命令。在您的情況下sudo -u ubuntu,沒有要執行的命令,並且因為它處於非互動模式,所以它也不會產生 shell。它只是退出。

以下行 -cd然後git- 然後在UserData腳本的上下文中執行,而不是在ubuntu使用者下,這就是它失敗的原因。

例如,您可以這樣做:

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

這將在ubuntu使用者下執行所有命令。

希望有幫助:)

引用自:https://serverfault.com/questions/970244