# 為何要用 Deploy Key? 1. 自動化部署: 讓伺服器(例如生產環境、CI/CD runner)能自動拉取 (pull) 或部署程式碼,不需要人工輸入帳號密碼或 personal access token(PAT)。 2. 權限最小化: 每個 deploy key 綁定到一個 repository,不會像使用者帳號一樣有過多權限。這降低了安全風險。 3. 不需使用者帳號: 無需用你的 GitHub 帳號登入,避免帳號洩漏或帳號更改影響部署。 4. 安全且獨立管理: SSH 金鑰可以為不同的伺服器或部署任務獨立生成與管理,避免共用密碼或 token。 # 使用流程 #### 注意!若按無repo admin權限,請找你的上級主管處理,謝謝。 ### 1. 至github網站, repo/settings ![截圖 2025-05-26 中午12.15.16](https://hackmd.io/_uploads/r1XMoPbfgg.png) ### 2. 左側找到deploy keys ![截圖 2025-05-26 中午12.19.28](https://hackmd.io/_uploads/rJkZ3PbMle.png) ### 3. 右方 add deploy key ![image](https://hackmd.io/_uploads/H1sS2w-Mxg.png) ### 4. 新增 ssh key,並修改 ssh config 新增ssh key方法: (你可以自己選擇想要的key名稱,將自動生成private & public key) ``` ssh-keygen ``` 新增完後,將你所產生的key name加入config,並修改Host #### 這個很重要!!!,因為你要clone的時候你會把public key放上去,那你就要用對應的Host ![image](https://hackmd.io/_uploads/HJ9qTD-Gee.png) ### 5. 然後將剛剛產生的ssh key新增至網頁上settings #### 注意! 每台電腦 "每個專案repo" 請新增一個專屬ssh key。 ![截圖 2025-05-26 中午12.22.04](https://hackmd.io/_uploads/H13AhcWMle.png) ### 6. clone專案下來 ``` git clone git@{Host}:nexuni/ai-voice-assistant.git ``` ![截圖 2025-05-26 中午12.33.48](https://hackmd.io/_uploads/HJnkldZflg.png) ### Done. # 如何更改 git remote? ![image](https://hackmd.io/_uploads/ByvtTiiF-e.png) 如上圖,即使你把key加上去,但你會發現仍然沒有權限。 ![image](https://hackmd.io/_uploads/BkMM0oiKbg.png) 也可以使用 ``` ssh -T git@{Host} ``` 測試你是否有ssh權限,由於你若有換 deploy key 你就可以用Host去拉 **若仍沒有權限,那你就得先看你的git remote當初怎麼拉的!** ``` git remote -v ``` 會看到如下,此repo當初是用github.com(ssh remote name去拉的,但一些原因現在不能只用Host->github.com去拉,所以要更改Host ![image](https://hackmd.io/_uploads/BJQapiiYbg.png) 因此,你要先確認你加入 ```~/.ssh/config```你的Host是啥,像我這個就是用par-starter ![image](https://hackmd.io/_uploads/HJnk0jiYZx.png) 透過以下cmd去更改remote url ``` # {以下這邊表你的Host} git remote set-url origin git@{par-starter}:nexuni/par-starter.git ``` 此時,再透過 ``` git remote -v ``` 確認是否更新 ![image](https://hackmd.io/_uploads/HyHyJ2iKbl.png) 看到Host改了,大功告成。