Git多個SSH Key的配置(2018-04-22)

常用命令

// 用ssh-keygen命令生成一組新的id_rsa_new和id_rsa_new.pub
ssh-keygen -t rsa -C "youremail@xxx.com"

// 進入ssh 目錄
cd ~/.ssh/
//  查看生成的公鑰
cat id_rsa.pub

//通過指定-K把SSH key導入到密鑰鏈中讼渊。
 ssh-add -K ~/.ssh/id_rsa

// 查看添加結果
ssh-add -l

從github(或者其他git)上克隆項目

有兩種方式分別是Https 和 SSH

Https方式:


  • 實現(xiàn)方式:git clone + 目標地址即可
    git clonehttps://github.com/AFNetworking/AFNetworking.git

SSH方式:


  • 然后你還必須是這個項目的擁有者蛛壳,或者有添加 SSH key 的權限仪搔。
  • 實現(xiàn)方式:同上
    git clone git@github.com:AFNetworking/AFNetworking.git

Https 和 SSH 的區(qū)別:


  • 前者可以隨意克隆github上的項目万俗,而不管是誰的蔬充;而后者則是你必須是你要克隆的項目的擁有者或管理員庭猩,且需要先添加 SSH key 峻厚,否則無法克隆窜司。

  • https url 在push的時候是需要驗證用戶名和密碼的;而 SSH 在push的時候蹲坷,是不需要輸入用戶名的驶乾,如果配置SSH key的時候設置了密碼,則需要輸入密碼的循签,否則直接是不需要輸入密碼的级乐。

SSH使用大發(fā):

  • github上單個倉庫設置SSH Key

  • github用戶設置中的SSH Key (就是你的整個github上的所有倉庫都可以克隆了,只要你把本機生成的SSH Key 添加到個人賬戶上)

    • 設置一個SSH Key
    • 設置多個SSH Key

設置多個SSH Key的目的,為什么這么做县匠,應對那些情況的

  • 先來說一下SSH Key是咋回事风科。公鑰認證,是使用一對加密字符串乞旦,一個稱為公鑰(public key)贼穆,任何人都可以看到其內容,用于加密兰粉;另一個稱為密鑰(private key)故痊,只有擁有者才能看到,用于解密玖姑。通過公鑰認證可實現(xiàn)SSH免密碼登陸愕秫,git的SSH方式就是通過公鑰進行認證的。

  • 應對的情況
    自己github上項目焰络,即要在自己的Mac上能提交代碼戴甩,也要在公司的Mac上能提交代碼。
    公司的Mac上闪彼,要能往公司自己的git服務器上對應項目提交代碼甜孤,也要能往自己github上的項目提交代碼。
    別人github上項目,在自己的Mac上能往上面提交代碼缴川。

  • 解決辦法

    需要在自己的Mac上生成一對SSH Key囱稽,配置到自己的github項目上,在公司的Mac上也要生成一對SSH Key配置到自己的github項目上二跋。
    公司的Mac上战惊,生成一對SSH key配置在公司自己的git服務器對應的項目上,再生成一個對SSH key配置在自己的github項目上扎即。
    在自己的Mac上生成一對SSH Key吞获,配置在對方的github項目上。

SSH Key 生成過程


  • 生成1個SSH Key:
    • ssh key命名的第一種方式:
$ ssh-keygen -t rsa -C "youremail@yourcompany.com” -f ~/.ssh/id_rsa_github

代碼參數(shù)含義:
-t 指定密鑰類型谚鄙,默認是 rsa 各拷,可以省略。
-C 設置注釋文字闷营,比如郵箱烤黍。
-f 指定密鑰文件存儲文件名。

  • ssh key命名的第二種方式:
// "youremail@xxx.com" 是你自己的郵箱
 ssh-keygen -t rsa -C "youremail@xxx.com"

以上代碼省略了 -f 參數(shù)傻盟,因此速蕊,運行上面那條命令后會讓你輸入一個文件名,用于保存剛才生成的 SSH key 代碼

  • 按回車后:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Shinancao/.ssh/id_rsa): id_rsa_TestSSH_github(取個名字)
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in 
id_rsa_TestSSH_github.
Your public key has been saved in 
id_rsa_TestSSH_github.pub.

最好每次生成時都給SSH Key取個名字娘赴,這樣后面在管理時自己也一目了然规哲。我這里的格式是id_rsa_項目名_git提供方,我生成的所有key都遵循這個規(guī)則命名诽表。建議你也有你自己的一種命名方式唉锌,并且保持統(tǒng)一。如果不取名字竿奏,默認的是id_rsa袄简,如果后面生成時不命名,會把這個覆蓋掉泛啸。密碼可以不設置绿语,免得每次提交時還要輸入一次,安全性自己衡量吧平痰。第一次生成key時汞舱,會在~目錄下創(chuàng)建一個.ssh目錄伍纫。

  • 查看你的公鑰然后宗雇, 把id_rsa_TestSSH_github.pub添加到github對應的項目的Deploy keys中。
cat id_id_rsa_TestSSH_github.pub
  • ssh服務器默認是去找id_rsa莹规,現(xiàn)在需要把這個key添加到ssh-agent中赔蒲,這樣ssh服務器才能認識id_rsa_TestSSH_github。
 ssh-add -K ~/.ssh/id_rsa_TestSSH_github

這里為什么加上了一個-K參數(shù)呢?因為在Mac上舞虱,當系統(tǒng)重啟后會“忘記”這個密鑰欢际,所以通過指定-K把SSH key導入到密鑰鏈中。

查看添加結果:

ssh-add -l
  • 創(chuàng)建本地的配置文件 ~/.ssh/config矾兜,編輯如下:
Host TestSSH.github.com
    HostName github.com
    User git
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_TestSSH_github
Host YourProjectName.gitlab.com
    HostName gitlab.com
    User git
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_YourProjectName_gitlab

Host的名字可以隨意取损趋,我這邊按照的規(guī)則是項目名.git服務器來源,接下來會用到這個名字椅寺。測試是否配置正確:

ssh -T git@TestSSH.github.com (就是剛剛你給Host取的名字)

敲一下回車浑槽,如下出現(xiàn)下面的提示就連接成功了:

Hi shinancao/TestSSH! You've successfully authenticated, but GitHub does not provide shell access.

總結一下即是:使用ssh-keygen -t rsa -C "your_email@example.com"命令,為其取一個名字將生成的keyValue存起來(也可以不取返帕,默認是id_rsa和id_rsa.pub桐玻;讓輸入的密碼也是可取可不取);然后將id_rsa.pub中的內容復制到各個平臺(同github設置方法一直荆萤,其他如Gitcafe/Git@OSC等等也是如此)addSSHKey處即可镊靴。文章還有未詳之處。詳情可看[意林的小站]

參考文章


著重參考意林的小站
如何設置添加SSH
MAC下配置多個SSH-KEY

友情鏈接


Git教程
Git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末链韭,一起剝皮案震驚了整個濱河市偏竟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敞峭,老刑警劉巖苫耸,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異儡陨,居然都是意外死亡褪子,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門骗村,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫌褪,“玉大人,你說我怎么就攤上這事胚股×矗” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵琅拌,是天一觀的道長缨伊。 經(jīng)常有香客問我,道長进宝,這世上最難降的妖魔是什么刻坊? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮党晋,結果婚禮上谭胚,老公的妹妹穿的比我還像新娘徐块。我一直安慰自己,他們只是感情好灾而,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布胡控。 她就那樣靜靜地躺著,像睡著了一般旁趟。 火紅的嫁衣襯著肌膚如雪昼激。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天锡搜,我揣著相機與錄音癣猾,去河邊找鬼。 笑死余爆,一個胖子當著我的面吹牛纷宇,可吹牛的內容都是我干的。 我是一名探鬼主播蛾方,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼像捶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桩砰?” 一聲冷哼從身側響起拓春,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亚隅,沒想到半個月后硼莽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡煮纵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年懂鸵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片行疏。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡匆光,死狀恐怖,靈堂內的尸體忽然破棺而出酿联,到底是詐尸還是另有隱情终息,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布贞让,位于F島的核電站周崭,受9級特大地震影響,放射性物質發(fā)生泄漏喳张。R本人自食惡果不足惜续镇,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹲姐。 院中可真熱鬧磨取,春花似錦人柿、人聲如沸柴墩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽江咳。三九已至逢净,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歼指,已是汗流浹背爹土。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踩身,地道東北人胀茵。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像挟阻,于是被迫代替她去往敵國和親琼娘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理附鸽,服務發(fā)現(xiàn)脱拼,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/坷备。)是一個開源的分布式版本控制系統(tǒng)熄浓,...
    君惜丶閱讀 3,517評論 0 13
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,663評論 4 54
  • 姣姣白露夜省撑,悠悠霜漫天赌蔑。 霧濕樓臺中,葉落復一年竟秫。 習習春風起惯雳,冉冉百花紅。 不待三春景鸿摇,勸君莫蹉跎石景。 原創(chuàng) 請勿轉載
    哇w閱讀 308評論 0 1
  • 堅持記錄 改變一生 《今日周五》 會利原創(chuàng)分享第345天 連續(xù)在單位住了兩天,終于周五了拙吉。像學生一樣潮孽,我早...
    王會利閱讀 158評論 3 1