常用命令
// 用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