# 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