---
# System prepended metadata

title: Github SHH key 建立以及加入
tags: [github]

---

# Github SHH key 建立以及加入
### About SSH key passphrases
你可以透過SSH(Secure Shell Protocol)存取及讀寫在GitHub上的repositories，當你透過SSH連接時，在本地端會使用你的私鑰來做驗證。

當你產生一組SSH key時，你可以加上一組密碼短語(passphrase)以更加強此組密碼，無論你何時使用此組密語你都必須要帶上這組密碼短語，如果你有一組密碼短語，但你又不想每次使用時都輸入，你可以將你的密碼短語加到SHH agent，SSH agent協助管理你的SSH keys並且可以記住你的密碼短語。

如果你還未擁有一組SSH key，為了驗證你需要建立一組新的SSH key，但如果你不確定你是否有一組了，你可以確認看看，看[這篇 Checking for existing SSH keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)做參考。

如果你想使用硬體金鑰來驗證登入Github，你必須幫你的硬體建立一組新的SSH key，且當你想用這方式登入時，你必須將硬體金鑰與電腦連接以用來驗證。

### Generating a new SSH key
你可以在本地端建立一組新的SSH key，在建立之後要把此組key加入到GitHub內以用來啟動使用SSH方式來登入驗證Git。

以下步驟:

1. 打開terminal
2. 將下面這段字搭配你的GitHub email貼上並輸入
   `ssh-keygen -t ed25519 -C "your_email@example.com"`
3. 接下來會跳出以下文字
   `> Generating public/private algorithm key pair.`
   `> Enter a file in which to save the key (/Users/you/.ssh/id_algorithm): 按下enter進入下一步`
   `> /Users/xxx/.ssh/id_ed25519 already exists.`
   `> Overwrite (y/n)? 這裡出現這個是因為你之前可能有建立過了，他問你要不要覆寫`
   `> Enter passphrase (empty for no passphrase): [Type a passphrase] 可以選擇要不要加上密碼短語來加強，如果否，就enter下一步`
`> Enter same passphrase again: [Type passphrase again] 如果有使用密碼短語，就再次輸入確認。`

### Adding your SSH key to the ssh-agent
在將SHH key加入到ssh-agent以便管理你的keys前，你應該先確認是否有已存在的SSH key或是建立一個新的。以下將會使用macOS預設的`ssh-add` 指令來將SSH key加入到agent裡，而非是其他外部從macport, homebrew安裝的程式。

1. 將ssh-agent運行在背景
   `$ eval "$(ssh-agent -s)"`
   `> Agent pid 59566`
根據你的裝置環境，你可能需要使用不同的指令，例如，你可能需要先使用`sudo -s -H`來取得系統存取，或是你可能需要使用`exec ssh-agent bash` 或是 `exec ssh-agent zsh`來運行ssh-agent。

2. 如果你的macOS版本是在10.12.2後，你需要修改`~/.ssh/config`檔案以自動將載入ssh-key載入到ssh-agent並且將其儲存在你的鑰匙圈內。
	* 首先，先確認你的預設目錄下是否有`~/.ssh/config`這個檔案
	`$ open ~/.ssh/config`
	`> The file /Users/you/.ssh/config does not exist.`
	* 如果不存在就建立這個檔案
	`$ touch ~/.ssh/config`
	* 打開這檔案並將以下文字加入檔案中，如果你的SSH key檔案為不同名稱，請再自行修改為符合的字樣。
		```shell!
		Host *
		  AddKeysToAgent yes
		  UseKeychain yes
		  IdentityFile ~/.ssh/id_ed25519 -> 請確認自己的file name
		```
		:::info
		* 如果你選擇不將密碼短語加到你的key中，你就要把`UseJeyChain`這行刪掉。
		* 如果你遇到`Bad configuration option: useKeychain`錯誤，請在將以下加到檔案裡面:
			```shell!
			Host *
			  IgnoreUnknown UseKeychain
			```
		:::

3. 將你的SSH private key加到ssh-agent並將你的passpharse存到鑰匙圈內。
```shell!
ssh-add -K ~/.ssh/id_ed25519 --> id_ed25519這部分如有不同，請依照自己的名稱做更換。
```
	
4. 接下來就可以依照[這篇](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)將SSH key加到你的GitHub帳戶囉。(此部分相對簡易，有時間再補中文筆記)

---
###### tags: `github`
###### louis