1. 生成github.com對(duì)應(yīng)的私鑰公鑰(本文中文件地址C:\Users\popfisher目錄)
執(zhí)行命令ssh-keygen -t rsa -C email?創(chuàng)建github對(duì)應(yīng)的sshkey,命名為id_rsa_github澄成,密碼123456?
ssh-keygen-t rsa -C774232122@qq.com
2. 同樣的方式生產(chǎn)git.oschina.net的私鑰公鑰(郵箱地址可以相同可以不同胧洒,本文相同)
執(zhí)行命令ssh-keygen -t rsa -C email創(chuàng)建github對(duì)應(yīng)的sshkey,命名為id_rsa_oschina墨状,密碼123456
ssh-keygen-t rsa -C774232122@qq.com
3. 把上面得到的文件拷貝到git默認(rèn)訪問的.ssh目錄(win10在用戶目錄下,本文C:\Users\popfisher.ssh)
除了秘鑰文件之外肾砂,config文件是后面的步驟中手動(dòng)生產(chǎn)的列赎,known_hosts文件是后續(xù)自動(dòng)生產(chǎn)的
4. 把github對(duì)應(yīng)的公鑰和oschina對(duì)應(yīng)的公鑰上傳到服務(wù)器
?GitHub添加SSH key的方式如下圖所示:
5. 在.ssh目錄創(chuàng)建config文本文件并完成相關(guān)配置(最核心的地方)
每個(gè)賬號(hào)單獨(dú)配置一個(gè)Host,每個(gè)Host要取一個(gè)別名镐确,每個(gè)Host主要配置HostName和IdentityFile兩個(gè)屬性即可
Host的名字可以取為自己喜歡的名字包吝,不過這個(gè)會(huì)影響git相關(guān)命令,例如:
Host?mygithub 這樣定義的話源葫,命令如下诗越,即git@后面緊跟的名字改為mygithub
git clone git@mygithub:PopFisher/AndroidRotateAnim.git
HostName?這個(gè)是真實(shí)的域名地址
IdentityFile?這里是id_rsa的地址
PreferredAuthentications配置登錄時(shí)用什么權(quán)限認(rèn)證--可設(shè)為publickey,password publickey,keyboard-interactive等
User?配置使用用戶名
config文件配置如下:
# 配置github.com
Host github.com? ? ? ? ? ? ? ?
? ? HostName github.com
? ? IdentityFile C:\\Users\\popfisher\\.ssh\\id_rsa_github
? ? PreferredAuthentications publickey
? ? User username1
# 配置git.oschina.net
Host git.oschina.net
? ? HostName git.oschina.net
? ? IdentityFile C:\\Users\\popfisher\\.ssh\\id_rsa_oschina
? ? PreferredAuthentications publickey
? ? User username2
?6. 打開Git Bash客戶端(管理員身份運(yùn)行)執(zhí)行測(cè)試命令測(cè)試是否配置成功(會(huì)自動(dòng)在.ssh目錄生成known_hosts文件把私鑰配置進(jìn)去)
7. 測(cè)試成功之后就可以在電腦上同時(shí)使用git多多賬號(hào)同時(shí)操作,互不影響了
補(bǔ)充:同一臺(tái)電腦2個(gè)GitHub賬號(hào)息堂,配置不同sshkey
config 配置如下:
-----------------------------------------------------------
# github account [user1]
Host github.com
HostName github.com
User user1
IdentityFile /c/Users/xxx/.ssh/id_user1_rsa
IdentitiesOnly yes
# github account [user2]
Host github.com
HostName github.com
User user2
IdentityFile /c/Users/xxx/.ssh/id_user2_rsa
IdentitiesOnly yes
-----------------------------------------------------------
在使用時(shí)需要注意嚷狞,不能設(shè)置全局的 username 和 email
# 取消全局 username, email
>git config --global --unset user.name
>git config --global --unset user.email
# 如要在repo中使用 user1 進(jìn)行操作,進(jìn)入repo目錄后,先設(shè)置username 和 email床未,再進(jìn)行其他操作
>git config user.name "user1"
>git config user.email "user1@xx.mail"
# 同樣的褂乍,如果想在repo中切換為 user2 進(jìn)行操作,則重新設(shè)置username和email(同上)后即硼,再進(jìn)行其他操作