Git SSH Key 生成及多個Git SSH Key 生成管理

weixin_33936401發表於2016-12-09

單個.ssh檔案rsa  rsa.pub生成:


一 、

設定Git的user name和email:

$ git config --global user.name "zanyang"

$ git config --global user.email "zanyang@gmail.com"


1218708-bba8e2b61e3acfbe.png

二、生成SSH金鑰過程:

1.檢視是否已經有了ssh金鑰:cd ~/.ssh

如果沒有金鑰則不會有此資料夾,有則備份刪除

2.生存金鑰:

$ ssh-keygen -t rsa -C “******.com”

按3個回車,密碼為空。

Your identification has been saved in /home/tekkub/.ssh/id_rsa.

Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.

The key fingerprint is:

………………

最後得到了兩個檔案:id_rsa和id_rsa.pub


1218708-9667dda6955fa6c9.png

3.新增金鑰到ssh:ssh-add 檔名

$ ssh-add ~/.ssh/id_rsa

需要之前輸入密碼。

4.在github上新增ssh金鑰,這要新增的是“id_rsa.pub”裡面的公鑰。

開啟https://github.com/,登陸,然後新增ssh。

5.測試:ssh git@github.com

The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.

ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access

Connection to github.com closed.

三、 開始使用github

1.獲取原始碼:

$ git clone git@github.com:billyanyteen/github-services.git

2.這樣你的機器上就有一個repo了。

3.git於svn所不同的是git是分散式的,沒有伺服器概念。所有的人的機器上都有一個repo,每次提交都是給自己機器的repo

倉庫初始化:

git init

生成快照並存入專案索引:

git add

檔案,還有git rm,git mv等等…

專案索引提交:

git commit

4.協作程式設計:

將本地repo於遠端的origin的repo合併,

推送本地更新到遠端:

git push origin master

更新遠端更新到本地:

git pull origin master

補充:

新增遠端repo:

$ git remote add upstream  你的git地址


多個ssh key管理:


當有多個git賬號的時候,比如一個github,用於自己進行一些開發活動,再來一個gitlab,一般是公司內部的git。這兩者你的郵箱如果不同的話,就會涉及到一個問題,生成第二個git的key的時候會覆蓋第一個的key,導致必然有一個用不了。

我們可以在~/.ssh目錄下新建一個config檔案配置一下,就可以解決問題

具體步驟

生成第一個ssh key(這裡我用於github,用的gmail郵箱)

ssh-keygen -t rsa -C"yourmail@gmail.com"

這裡不要一路回傳,讓你選擇在哪裡選擇存放key的時候寫個名字,比如id_rsa_github,之後的兩個可以回車。

完成之後我們可以看到~/.ssh目錄下多了兩個檔案


1218708-e8e9968b63459be4.png

生成第二個ssh key(這裡我用於gitlab,用的是公司郵箱)

ssh-keygen -t rsa -C"yourmail@gmail.com"

還是一樣不要一路回車,在第一個對話的時候繼續寫個名字,比如id_rsa_gitlab,之後的兩個可以回車。

完成之後我們可以看到如2中圖所標記,一樣出現兩個檔案。(一個公鑰一個私鑰)

開啟ssh-agent

這裡如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)

新增私鑰

ssh-add ~/.ssh/id_rsa_github 

ssh-add ~/.ssh/id_rsa_gitlab

建立並修改config檔案

在windows下新建一個txt文字,然後將名字字尾一起改成config即可

在bash下的話直接touch config即可。

新增一下內容

# gitlab

Host git.iboxpay.com

       HostName git.iboxpay.com//這裡填你們公司的git網址即可

       PreferredAuthentications publickey 

       IdentityFile ~/.ssh/id_rsa_gitlab 

       User zanyang

# github

        Host github.comHostName github.com

        PreferredAuthentications publickey

        IdentityFile ~/.ssh/id_rsa_github

        User L

在github和gitlab上新增公鑰即可,這裡不再多說。


測試:

$ ssh -T git@github.com

PS:如果到這裡你沒有成功的話,別急,教你解決問題的終極辦法--debug

比如測試github,ssh -vT git@github.com

-v 是輸出編譯資訊,然後根據編譯資訊自己去解決問題吧。就我自己來說一般是config裡的host那塊寫錯了

補充一下

如果之前有設定全域性使用者名稱和郵箱的話,需要unset一下

git config --global--unsetuser.name

git config --global--unsetuser.email

然後在不同的倉庫下設定區域性的使用者名稱和郵箱

比如在公司的repository下

git config user.name "yourname"  

git config user.email "youremail"

在自己的github的倉庫在執行剛剛的命令一遍即可。

這樣就可以在不同的倉庫,已不同的賬號登入。

相關文章