日々精進

新しく学んだことを書き留めていきます

プライベートリポジトリをChefからチェックアウトする

手順は以下。
秘密鍵ssh-agentを使ってパスフレーズなどを入力せずssh接続出来るようにする
 ・GithubSSH Keysに公開鍵を登録する
 ・秘密鍵を~/.ssh/に置く
 ・~/.ssh/configに以下を追加

Host github.com
 User git
 port 22
 Hostname github.com
 IdentityFile ~/.ssh/id_rsa
 TCPKeepAlive yes
 IdentitiesOnly yes
 StrictHostKeyChecking no

 ・ssh-agentの起動

    eval `ssh-agent`
    # ssh-add ~/.ssh/id_rsaをautoexpectを使ってスクリプトにしたファイル
    ./ssh-add-key-to-agent.exp

GithubからCloneする

    # なぜかroot権限でないとssh-agentがパスフレーズを入力してくれないので、root権限で実行
    sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK git clone --depth 1 git@github.com:uname/pjtname.git
    # ownerがrootになっているので、ec2-userに変更する
    sudo chown ec2-user:ec2-user ./pjtname/ -R

root権限でないとssh-agentがうまく動かない罠にはまった。。
デバッグ時にssh -vT に助けられました。
これを実行するとデバッグログが出る。
参考:sshで初回ログイン時に「Are you sure you want to continue connecting (yes/no)? 」を抑止する方法 - ablog
 Git clone using ssh agent forwarding and sudo
 Redirecting...