指定特定的 ssh key 解決想要在共享環境中存取 github private repo。

前言、情境

很久之前有寫過一篇關於 git 使用 ssh key 的文章 107.03.02 git push 免帳號密碼 | ssh key。隨著時間過去,使用情況可能變得複雜,例如,一個團隊共享執行環境。

這篇使用的方式能夠解決: 無法使用 github tokens 去 clone 是 collaborator 但不是自己的 private repo (Cloning private repositories that you don’t own is not possible using GitHub tokens.)。

首先,如果是要開發,建議是使用 fork 的方式複製一份到自己的帳號底下,這樣就可以使用 tokens 來 clone (不需要往下看)。但如果是要下載別人帳號底下的程式碼,那麼目前只能使用 ssh key 解決。使用的是個人環境有自己的 ssh key 也可以直接下載 (不需要往下看)。情境比較特殊些,這裡是使用 git clone, push 時指定特定的 ssh key 解決,但或許有其他方法。

產生 ssh key

要再共享的環境中產生 key 時,強烈建議使用 passphrase,讓使用 key 時需要額外的密碼。產生後一樣按照 107.03.02 git push 免帳號密碼 | ssh key 的方法把 key 放到 github 上。

ssh-keygen -t rsa -f ~/.ssh/KEY_NAME
# It is recommended that you set a passphrase.
# Next, add the public key to your GitHub settings.

Git

  • requirements: Git 2.3.0

git clone with specific ssh key

GIT_SSH_COMMAND='ssh -i ~/.ssh/KEY_NAME -o IdentitiesOnly=yes' git clone git@github.com:USERNAME/REPO.git

git push with specific ssh key

GIT_SSH_COMMAND='ssh -i ~/.ssh/KEY_NAME -o IdentitiesOnly=yes' git push

References

  • ⊛ Back to top
  • ⊛ Go to bottom