web-dev-qa-db-ja.com

EC2インスタンス起動スクリプトでGitアクセスが失敗する(Ubuntu)

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構成がロードされていないかのどちらかだと思います...しかし私は困惑しています。助けて?

4
Omroth

Sudoの使用方法が正しくありません。

まず第一に、それはSudo -u ubuntuだけでなくSudo ubuntuでなければなりません。しかし、それでも機能しません。

Sudoを実行すると、新しいシェルが生成されます。コマンドが指定されている場合は、buntユーザーの下でそのコマンドが実行されます。あなたの場合、Sudo -u ubuntuには実行するコマンドがなく、非対話型モードであるため、シェルも生成されません。単に終了します。

次の行--cdおよびgit-は、buntユーザーの下ではなく、serDataスクリプトのコンテキストで実行されます。そのためです。失敗します。

たとえば、これを行うことができます。

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

buntユーザーの下ですべてのコマンドが実行されます。

お役に立てば幸いです:)

3
MLu