git ssh配置

王冰冰發表於2024-03-12

一個人自己用

  1. 在GitHub/GitLab新增ssh公鑰
  2. 將私鑰放在本地~/.ssh下面,名字無所謂。
  3. push你的倉庫,git push xxxx
    如果正好一切都很巧合的話,就能push成功。

,他就會自動找一個私鑰使用。
這適用於只有一個github使用者,自己對付用一下的情況。github依靠不同的私鑰來區分登入的使用者,所有的使用者用的都是同一個網址。

如果你想知道預設會使用哪個私鑰,你就ssh -T git@github.com可以看一下返回的歡迎資訊說的是誰。

多個使用者

gitlab根據私鑰區分不同的使用者,上面你在push的時候git實際上是隨便找了個私鑰試了試,只不過.ssh目錄下只有一個私鑰,正好可以。

如果你有多個私鑰,可就不一定這麼巧合能正好使用你的私鑰了。那怎麼辦呢?我們可以測試一下:

$ ssh -i /home/ubuntu/.ssh/id_rsa.alice -T git@github.com
Hi alice! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -i /home/ubuntu/.ssh/id_rsa.bob -T git@github.com
Hi bob! You've successfully authenticated, but GitHub does not provide shell access.

ssh這裡可以使用不同的私鑰來登入不同的使用者。那麼我們寫到.ssh/config中兩個Host即可

Host gitolite-as-alice
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa.alice
  IdentitiesOnly yes

Host gitolite-as-bob
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_dsa.bob
  IdentitiesOnly yes

然後用這兩個Host作為git倉庫的remote url即可。

git remote add alice git@gitolite-as-alice:whatever.git
git remote add bob git@gitolite-as-bob:whatever.git

相關文章