使用Github,也許大家覺得比較麻煩的就是在每次push的時候,都需要輸入用戶名和密碼。如果使用SSH,就可以記住用戶名,並創建屬於自己的密碼來保證安全操作,還有神奇的一招可以“不用輸入密碼”哦。下面將介紹如何創建SSH Keys並將公鑰加到GitHub賬戶中,使用SSH Keys在本機和GitHub之間建立一個安全的連接。
一、Windows環境下生成SSH key且連接GitHub
第一步、看看是否存在SSH密鑰(keys)
首先,我們需要看看是否看看本機是否存在SSH keys,打開Git Bash,並運行:
1
|
$cd ~/.ssh#
|
檢查你本機用戶home目錄下是否存在.ssh目錄
如果,不存在此目錄,則進行第二步操作,否則,你本機已經存在ssh公鑰和私鑰,可以略過第二步,直接進入第三步操作。
第二步、創建一對新的SSH密鑰(keys)
輸入如下命令:
1
2
3
4
|
$ssh-keygen -t rsa -C "your_email@example.com"
#這將按照你提供的郵箱地址,創建一對密鑰
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
|
直接回車,則將密鑰按默認文件進行存儲。此時也可以輸入特定的文件名,比如/c/Users/you/.ssh/github_rsa
接着,根據提示,你需要輸入密碼和確認密碼(說到這里,如果你很放心,其實可以不用密碼,就是到輸密碼的地方,都直接回車,所以每次push就只管回車就行了。所謂的最安全的密碼,就是沒有密碼 – – 哈哈)。相關提示如下:
1
2
|
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
|
輸入完成之后,屏幕會顯示如下信息:
1
2
3
4
|
Your identification has been saved in /c/Users/you/.ssh/id_rsa.
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
|
第三步、在GitHub賬戶中添加你的公鑰
運行如下命令,將公鑰的內容復制到系統粘貼板(clipboard)中。
1
|
clip < ~/.ssh/id_rsa.pub
|
接着:
1. 登陸GitHub,進入你的Account Settings.
2. 在左邊菜單,點擊”SSH Keys”.
3. 點擊”Add SSH key”按鈕.
4. 粘貼你的密鑰到key輸入框中.
5. 點擊”Add Key”按鈕。
6. 再彈出窗口,輸入你的GitHub密碼,點擊確認按鈕。
7. 到此,大功告成了!
第四步、測試
為了確認我們可以通過SSH連接GitHub,我們輸入下面命令。輸入后,會要求我們提供驗證密碼,輸入之前創建的密碼就ok了。
1
|
$ssh -T git@github.com
|
你可能會看到告警信息,如下:
1
2
3
|
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。
如果看到下面信息,就說明一切完美!
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
二、Mac環境下生成SSH key且連接GitHub
第一步、看看是否存在SSH密鑰(keys)
首先,我們需要看看是否看看本機是否存在SSH keys,打開終端(Terminal),並運行:
$cd ~/.ssh
# 檢查你本機用戶home目錄下是否存在.ssh目錄
如果,不存在此目錄,則進行第二步操作,否則,你本機已經存在ssh公鑰和私鑰,可以略過第二步,直接進入第三步操作。
第二步、創建一對新的SSH密鑰(keys)
輸入如下命令:
1
2
3
4
|
$ssh-keygen -t rsa -C "your_email@example.com"
#這將按照你提供的郵箱地址,創建一對密鑰
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
|
直接回車,則將密鑰按默認文件進行存儲。此時也可以輸入特定的文件名,比如/Users/you/.ssh/github_rsa
接着,根據提示,你需要輸入密碼和確認密碼。相關提示如下:
1
2
|
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
|
輸入完成之后,屏幕會顯示如下信息:
1
2
3
4
|
Your identification has been saved in /Users/you/.ssh/id_rsa.
Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
|
第三步、在GitHub賬戶中添加你的公鑰
運行如下命令,將公鑰的內容復制到系統粘貼板(clipboard)中。
pbcopy < ~/.ssh/id_rsa.pub
接着:
1. 登陸GitHub,進入你的Account Settings.
2. 在左邊菜單,點擊”SSH Keys”.
3. 點擊”Add SSH key”按鈕.
4. 粘貼你的密鑰到key輸入框中.
5. 點擊”Add Key”按鈕。
6. 再彈出窗口,輸入你的GitHub密碼,點擊確認按鈕。
7. 到此,大功告成了!
第四步、測試
為了確認我們可以通過SSH連接GitHub,我們輸入下面命令。輸入后,會要求我們提供驗證密碼,輸入之前創建的密碼就ok了。
$ ssh -T git@github.com
你可能會看到告警信息,如下:
1
2
3
|
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。
如果看到下面信息,就說明一切完美!
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
【注意】
如果前面沒有將生成的密鑰存放在默認的文件id_rsa中(而是my_rsa中),那么ssh -T git@github.com命令就需要添加參數來執行。如下:
$ ssh -T -i my_rsa git@github.com
三、單機如何控制不同的SSH Keys連不同的Git環境?
其實,一套SSH密鑰是可以用在不同的SSH環境的.
但是如果由於某種要求,需要用不同的SSH密鑰連接不同的Git環境。假設具體場景是,已經建了密鑰github_rsa,還需要創建work_rsa連接工作環境git倉庫,那么,可以按下面操作進行:
1. 創建另一對密鑰work_rsa.
$ssh-keygen -t rsa -C “work@mail.com”
#保存密鑰為work_rsa
2. 添加新身份信息
$ssh-add ~/.ssh/work_rsa
3. 配置.ssh/config
我們需要通過Host別名,將不同的賬號區分開來。
1
2
3
4
5
6
7
8
9
|
Host me.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_rsa
Host work.comp.com
HostName comp.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/work_rsa
|