在EC2 user data中設定SSH以執行git clone

最近開始在摸 EC2 Auto Scaling Group,動態加開機器需要事先寫好部署指令(寫在user data)
當然包括要去 clone 程式碼的部分

環境是 Ubuntu 20.04

別看上面這一段 code 很短,坑還蠻多的

ssh-add: Could not open a connection to your authentication agent

比方說 eval `ssh-agent -s` 跟 ssh-add ~/.ssh/key 要在同一個 bash script 執行。
主要原因是前者會設定環境變數讓後者使用,如果後者吃不到就會拋錯誤

ssh-add: Permission denied

接著 ssh-agent 的檔案權限是 rws(所以即使不加 sudo 也是以 root 執行),但 ssh-add 不是。
如果在執行 ssh-add 的時候,明明 .ssh 資料夾下的 key 權限都設定好了,卻一直 permission denied,也許就需要改成執行 sudo ssh-add

git clone: Host key verification failed

接著要是沒有事先執行 ssh-keyscangit clone 會拋出 host key verification failed 錯誤
(因為使用 SSH 連線,而首次連到某 host,會向你確認對方的 public key fingerprint,並加入 known_hosts) 

承上,在 Stack Overflow 查到的建議大多是使用 ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 來解決,但通常也不少人指出這樣有中間人攻擊的風險。

解決方式是跟對方的 system administrator 要 public key 並紀錄到 known_hosts,
至於 bitbucket.org 的是公開在這裡,github.com 也有公開他們的公鑰指紋當作判斷


參考

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *