2016.11.13 Update: SSH Agent Forwarding 有安全性問題,請用 ProxyCommand
取代,請參考 SSH Agent Forwarding considered harmful
SSH agent forwarding 可以讓開發者將 Local 端的 SSH Key Pair 帶到另外一台機器進行傳送,也就是說你不用將 SSH Key 複製到遠端 Server 再進行跳板動作,原本在 AWS 維護多台 EC2 主機,都會固定有一台跳板機,大家都把自己需要登入遠端機器的 SSH Key 複製到跳板機,這做法其實沒有很安全,又需要多下一個指令進行跳板。
個人電腦 -—> EC2 跳板機 -—> EC2 Server
大家都會把 Key Pair 存放到跳板機,安全性堪憂,只要這台主機被 Hack,或者是內部員工登入,拿別人的 Key Pair 登入其它主機,不就可以搞破壞?所以此篇教學主要教大家如何設定 SSH agent forwarding,讓憑證只存放在自己電腦,而不需上傳到 EC2 跳板機
。這樣跳板機就真的只是跳板機,不需要存放任何憑證資料,每小時設定清空 Ubuntu User 家目錄,避免內部員工放個人資料或憑證,提升主機安全性。
將 Key Pair 放到清單
透過 ssh-add
指令將 Private Key Pair 加入清單
|
|
透過底下指令可以看到清單列表
|
|
這邊注意可以將所有機器的 key pair 都放到 ~/.ssh/keys
目錄,並且設定 400
權限
設定 ~/.ssh/config
方法一: 設定 ~/.ssh/config
檔案,每個 Host 都加上 ForwardAgent yes
參數 (此方法並不安全,請參考 SSH Agent Forwarding considered harmful)
最後執行底下指令就可以直接跳到您要的 EC2 Server
|
|
方法二: 也是設定 ~/.ssh/config
,但是透過 ProxyCommand
而不是 ForwardAgent yes
(建議使用此方法)
ProxyCommand 也不用將 pem 透過 ssh-add
匯入,省下一步指令,接著執行底下指令就可以 ssh 到指定機器,跟方法一比起來更安全又快速
|
|
不用再跳板機多下一個 SSH 登入指令,蠻方便又安全。內部 Host Name 可以透過設定 AWS Private Hosted Zones。