# 為何要用 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

### 2. 左側找到deploy keys

### 3. 右方 add deploy key

### 4. 新增 ssh key,並修改 ssh config
新增ssh key方法: (你可以自己選擇想要的key名稱,將自動生成private & public key)
```
ssh-keygen
```
新增完後,將你所產生的key name加入config,並修改Host
#### 這個很重要!!!,因為你要clone的時候你會把public key放上去,那你就要用對應的Host

### 5. 然後將剛剛產生的ssh key新增至網頁上settings
#### 注意! 每台電腦 "每個專案repo" 請新增一個專屬ssh key。

### 6. clone專案下來
```
git clone git@{Host}:nexuni/ai-voice-assistant.git
```

### Done.
# 如何更改 git remote?

如上圖,即使你把key加上去,但你會發現仍然沒有權限。

也可以使用 ``` ssh -T git@{Host} ``` 測試你是否有ssh權限,由於你若有換 deploy key 你就可以用Host去拉
**若仍沒有權限,那你就得先看你的git remote當初怎麼拉的!**
```
git remote -v
```
會看到如下,此repo當初是用github.com(ssh remote name去拉的,但一些原因現在不能只用Host->github.com去拉,所以要更改Host

因此,你要先確認你加入 ```~/.ssh/config```你的Host是啥,像我這個就是用par-starter

透過以下cmd去更改remote url
```
# {以下這邊表你的Host}
git remote set-url origin git@{par-starter}:nexuni/par-starter.git
```
此時,再透過 ``` git remote -v ``` 確認是否更新

看到Host改了,大功告成。