首先確認已安裝Git,能夠經過 git –version
命令能夠查看當前安裝的版本。php
Mac OSX 中都已經安裝了Git。可是,Git的版本未必是最新的。html
能夠經過命令 git clone https://github.com/git/git
進行更新java
Git共有三個級別的config文件,分別是system、global和local
。git
在當前環境中,分別對應github
%GitPath%\mingw64\etc\gitconfig文件
$home.gitconfig文件
%RepoPath%.git\config文件shell
其中%GitPath%
爲Git的安裝路徑,%RepoPath%
爲某倉庫的本地路徑。ruby
因此 system 配置整個系統只有一個,global 配置每一個帳戶只有一個,而 local 配置和git倉庫的數目相同,而且只有在倉庫目錄才能看到該配置。bash
大體思路
,創建兩個密鑰,不一樣帳號配置不一樣的密鑰,不一樣倉庫配置不一樣密鑰。服務器
1. 清除 git 的全局設置(針對已安裝 git)
新安裝 git 跳過。ssh
若以前對 git 設置過全局的 user.name
和 user.email
。
相似 (用 git config --global --list
進行查看你是否設置)
$ git config --global user.name "你的名字" $ git config --global user.email "你的郵箱"
必須刪除該設置
$ git config --global --unset user.name "你的名字" $ git config --global --unset user.email "你的郵箱"
2. 生成新的 SSH keys
1)GitHub 的鑰匙
指定文件路徑,方便後面操做:~/.ssh/id_rsa.gitlab
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "abc@qq.com"
直接回車3下,什麼也不要輸入,就是默認沒有密碼。
注意 github 和 gitlab 的文件名是不一樣的。
2)GitLab 的鑰匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "abcdef@qq.com"
2)Gitee 的鑰匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "abcdef@qq.com"
3)完成後會在~/.ssh / 目錄下生成如下文件
- id_rsa.github
- id_rsa.github.pub
- id_rsa.gitlab
- id_rsa.gitlab.pub
3.添加識別 SSH keys 新的私鑰
親測Mac下,新增一個 id_rsa.gitee,沒加進去 也識別到了。 因此此步驟可忽略,若有問題刪除全部密鑰 從新按步驟操做一遍。
默認只讀取 id_rsa,爲了讓 SSH 識別新的私鑰,須要將新的私鑰加入到 SSH agent 中
$ ssh-agent bash $ ssh-add ~/.ssh/id_rsa.github $ ssh-add ~/.ssh/id_rsa.gitlab $ ssh-add ~/.ssh/id_rsa.gitee
4. 多帳號必須配置 config 文件(重點)
若無 config 文件,則需建立 config 文件
建立config文件
$ touch ~/.ssh/config
config 裏須要填的內容
親測能夠不縮進,因此方便看,建議縮進。
最簡配置
Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa.github
完整配置
#Default gitHub user Self
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa.github #Add gitLab user Host git@gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_rsa.gitlab # gitee Host gitee.com Port 22 HostName gitee.com User git IdentityFile ~/.ssh/id_rsa.gitee # other settings Host git@git.startdt.net Port 22 HostName http://git.startdt.net User git IdentityFile ~/.ssh/lab_rsa.startdt
下面對上述配置文件中使用到的配置字段信息進行簡單解釋:
-
Host
它涵蓋了下面一個段的配置,咱們能夠經過他來替代將要鏈接的服務器地址。
這裏可使用任意字段或通配符。
當ssh的時候若是服務器地址能匹配上這裏Host指定的值,則Host下面指定的HostName將被做爲最終的服務器地址使用,而且將使用該Host字段下面配置的全部自定義配置來覆蓋默認的/etc/ssh/ssh_config配置信息。 -
Port
自定義的端口。默認爲22,可不配置 -
User
自定義的用戶名,默認爲git,可不配置 -
HostName
真正鏈接的服務器地址 -
PreferredAuthentications
指定優先使用哪一種方式驗證,支持密碼和祕鑰驗證方式 -
IdentityFile
指定本次鏈接使用的密鑰文件
5.在 github 和 gitlab 網站添加 ssh
Github
直達地址:https://github.com/settings/keys
過程以下:
- 登陸 Github
- 點擊右上方的頭像,點擊
settings
- 選擇
SSH key
- 點擊
Add SSH key
在出現的界面中填寫 SSH key 的名稱,填一個你本身喜歡的名稱便可。
將上面拷貝的~/.ssh/id_rsa.xxx.pub
文件內容粘帖到 key 一欄,在點擊 「add key」 按鈕就能夠了。
添加過程 github 會提示你輸入一次你的 github 密碼 ,確認後即添加完畢。
Gitlab
直達地址:https://gitlab.com/profile/keys
- 登陸 Gitlab
- 點擊右上方的頭像,點擊
settings
- 後續步驟如 Github
Gitee / 碼雲
直達地址:https://gitee.com/profile/sshkeys
- 登陸 Gitee
- 點擊右上方的頭像,點擊
設置
- 後續步驟如 Github
添加過程 碼雲 會提示你輸入一次你的 Gitee 密碼 ,確認後即添加完畢。
6.測試是否鏈接成功
因爲每一個託管商的倉庫都有惟一的後綴,好比 Github 的是 git@github.com:*。
因此能夠這樣測試:
ssh -T git@github.com
而 gitlab 的能夠這樣測試:
ssh -T git@gitlab.corp.xyz.com
若是能看到一些 Welcome 信息,說明就是 OK 的了
- ssh -T git@github.com
- ssh -T git@gitlab.com
- ssh -T git@gitee.com
$ ssh -T git@github.com Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts. Hi dragon! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T git@gitlab.com The authenticity of host 'gitlab.com (35.231.145.151)' can't be established. ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSn. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts. Welcome to GitLab, @dragon! $ ssh -T git@gitee.com The authenticity of host 'gitee.com (116.211.167.14)' can't be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrp+KkGYoFgbVr17bmjeyc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'gitee.com,116.211.167.14' (ECDSA) to the list of known hosts. Hi 我是x! You've successfully authenticated, but GITEE.COM does not provide shell access.
結果若是出現這個就表明成功:
- GitHub -> successfully
- GitLab -> Welcome to GitLab
- Gitee -> successfully
測試 clone 項目
$ git clone git@gitlab.com:d-d-u/java-xxx.git Cloning into 'java-basic'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done.
7.操做過程出現的問題/報錯
tilde_expand_filename: No such user
檢查是否成功的時候,報錯:tilde_expand_filename: No such user .
$ ssh -T git@github.com tilde_expand_filename: No such user .
解決方法:
此問題是由於寫錯了文件路徑
或者 大小寫沒寫對
,刪除從新配置,或者複製個人改好粘貼進去。