github同一帳戶+多個庫

目標

  1. 個人狀況是,既要向本身的public庫提交代碼,又要向別人的private庫提交代碼
  2. 網上搜到的狀況一:github上有多個帳號,都要向本身的庫提交代碼
  3. 網上搜到的狀況二:多個git託管源(好比github、bitbucket、gitlab、oschina、coding.net)上有不一樣的帳號,分別提交到對應的git託管源

問題描述

  1. 以前在本機用ssh-keygen生成了~/.ssh/id_rsa和id_rsa.pub,放到了本身的Account->Settings->SSH and GPG keys裏。別人的庫Settings->Deploy keys裏想添加這個公鑰,會報"key is already in use"
  2. 不添加公鑰,push代碼時會報"Permission denied"

解決方法

其實都是大同小異,關鍵是不一樣的庫生成不一樣的key-pair,並配置config保證找到正確的私鑰:git

  1. 對不一樣的庫生成不一樣的key-pair,好比本身全部的庫用默認的id_rsa,別人的庫用id_rsa_projectName
ssh-keygen -t rsa -C "test@gmail.com" // 注意修改key-pair的名字
ssh-add -K ~/.ssh/id_rsa // 我試下來彷佛不用加到ssh-agent裏?
ssh-add -K ~/.ssh/id_rsa_projectName
ssh-add -l
  1. 編輯~/.ssh/config,保證ssh在push的時候能找到正確的私鑰
    ```
    vi ~/.ssh/configgithub

    Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa
    #ProxyCommand=nc -X 5 -x localhost:1086 %h %pssh

    Host projectName.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_projectNamegitlab

    ssh -T git@github.com //測試一下,看配置是否正確
    ssh -T git@projectName.github.com
    ```
  2. 別人的庫要注意:
git clone git@projectName.github.com:UserName/projectName.git //新clone時
或者修改項目中的.git/config文件
[remote "origin"]
        url = git@projectName.github.com:UserName/projectName.git

參考

相關文章
相關標籤/搜索