基于ssh密鑰的方式連接github
當(dāng)使用普通的模式連接github的時候,需要在連接的時候輸入github的用戶名和密碼攒驰,在github中提供了另外一種連接方式疯淫,就是基于ssh認證的方式里覆,使用了這種方式之后陪腌,以后連接github都不用再輸入任何的用戶和密碼信息,連接時會自動通過ssh的密鑰進行驗證莫绣。設(shè)置ssh密鑰的流程有:
1畴蒲、在我的文檔的目錄中創(chuàng)建一個.ssh的文件夾
2、在本地生成ssh的私有和公有密鑰
3兔综、在github網(wǎng)站上添加本地生成的密鑰
4饿凛、測試連接
在我的文檔目錄創(chuàng)建一個.ssh的文件夾
找到我的文檔的目錄,在windows系統(tǒng)中一般在C:\Users\xx中软驰,但是需要注意的是在win系統(tǒng)中無法直接在我的電腦里面創(chuàng)建.開頭的目錄涧窒,需要在命令提示符中創(chuàng)建這個目錄。
C:\Users\konghao>mkdir .ssh -->創(chuàng)建.ssh目錄
C:\Users\konghao>dir .ssh
驅(qū)動器 C 中的卷是 系統(tǒng)
卷的序列號是 0000-3D66
C:\Users\konghao 的目錄
2017/03/24 周五 08:31 <DIR> .ssh -->查詢這個目錄
創(chuàng)建密鑰
1锭亏、打開git bash纠吴,如果在git的時候選擇了將git的命令添加到命令提示符中之后,即可在命令提示中使用慧瘤。
2戴已、輸入ssh密鑰的生成命令,輸入命令ssh-keygen -t rsa -b 4096 -C "ynkonghao@gmail.com"
可以生成一個ssh的密鑰锅减。
輸入完成之后會提示Enter file in which to save the key (/c/Users/konghao/.ssh/id_rsa):
這意味著讓你輸入一個密鑰的地址糖儡,這個地址在win中是不能更改的,/c/Users/konghao/.ssh表示的是第一步所創(chuàng)建的.ssh的目錄怔匣,id_rsa表示的是密鑰的文件名握联。這些都是不能更改的,如果希望一臺電腦中有多個密鑰,需要增加新的配置金闽,這個部分大家通過網(wǎng)絡(luò)即可獲取操作方式纯露。
C:\Users\konghao>ssh-keygen -t rsa -b 4096 -C "ynkonghao@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/konghao/.ssh/id_rsa): /c/Users/konghao/.ssh/id_rsa
輸入完成密鑰的地址之后,會有提示讓輸入Enter passphrase (empty for no passphrase):
,這個表示口令代芜,當(dāng)設(shè)置了這個口令之后埠褪,以后每次通過ssh登錄github都需要輸入這個口令,這樣就算本地的私有密鑰文件丟失挤庇,其他人不知道你的口令也無法使用ssh登錄也不會如果輸入以后在連接ssh時還需要輸入這個口令钞速,這樣可以增加它的安全性,但帶來的問題就是每次都得輸入登錄口令嫡秕,操作相對麻煩一些玉工,但ssh提供了ssh-agent可以處理這個問題。
此時如果你不輸入passphrase
直接回車即可淘菩,這樣就完成了ssh密鑰的創(chuàng)建,如果輸入了passphrase
屠升,以后我們每次連接ssh都需要輸入口令潮改。
#輸入添加ssh密鑰的命令
C:\Users\konghao\.ssh>ssh-keygen -t rsa -b 4096 -C "ynkonghao@gmail.com"
Generating public/private rsa key pair.
#輸入密鑰文件的生成地址,如果不輸入就直接生成在/c/Users/konghao/.ssh/中腹暖,其中/c表示win的c盤
Enter file in which to save the key (/c/Users/konghao/.ssh/id_rsa):汇在、
#輸入口令,此處個人是輸入了口令的脏答,為了演示ssh-agent的操作
Enter passphrase (empty For no passphrase):
Enter same passphrase again:
#完成ssh密鑰的創(chuàng)建
Your identification has been saved in /c/Users/konghao/.ssh/id_rsa.
Your public key has been saved in /c/Users/konghao/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Nn0cDnMZ1w5WVv+dh4tkuBTapbnWHbaJhC9lGbtHauc ynkonghao@gmail.com
The keys randomart image is:
+---[RSA 4096]----+
| . .o=|
| +o.o|
| + *. o.|
| + & = .=|
| S O % =.+|
| . o % O =.|
| = O B |
| . o + |
| E |
+----[SHA256]-----+
C:\Users\konghao\.ssh>dir
驅(qū)動器 C 中的卷是 系統(tǒng)
卷的序列號是 0000-3D66
C:\Users\konghao\.ssh 的目錄
2017/03/24 周五 09:58 <DIR> .
2017/03/24 周五 09:58 <DIR> ..
2017/03/24 周五 09:58 3,326 id_rsa #私有密鑰文件
2017/03/24 周五 09:58 745 id_rsa.pub #公有密鑰
2 個文件 4,071 字節(jié)
2 個目錄 187,734,855,680 可用字節(jié)
創(chuàng)建完成之后我們發(fā)現(xiàn)在.ssh文件中多了兩個文件糕殉,這兩個文件就是ssh的登錄密鑰,其中id_rsa表示本地的私有密鑰殖告,而id_rsa.pub表示公有密鑰阿蝶,需要把公有密鑰id_rsa.pub添加到github中。由于我在創(chuàng)建密鑰時輸入了口令黄绩,所以連接ssh都需要輸入口令羡洁,為了可以完成連接,我們需要在github中添加公有密鑰id_rsa.pub
在github上添加公有密鑰
進入github的網(wǎng)站爽丹,點擊自己的頭像筑煮,選擇settings
進入個人設(shè)置之后選擇SSH AND GPG Keys
選擇new SSH Key
打開剛才在.ssh文件夾中生成的id_rsa.pub文件,該文件就是ssh的公共密鑰
在github網(wǎng)站的中添加剛才的密鑰信息粤蝎,首先添加一個標(biāo)題真仲,之后將id_rsa.pub的內(nèi)容拷貝到key的輸入框中。
添加完成之后初澎,在命令提示符中輸入ssh -T git@github.com可以測試是否連接成功秸应,由于在創(chuàng)建密鑰時我輸入了口令,所以驗證的時候會讓我輸入口令。
C:\Users\konghao>ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.255.113' to the list of known hosts.
Enter passphrase for key '/c/Users/konghao/.ssh/id_rsa':
Hi ynkonghao! You've successfully authenticated, but GitHub does not provide shell access.
到此為止ssh的配置已經(jīng)基本完成灸眼,但是由于在創(chuàng)建時我輸入了口令卧檐,這就導(dǎo)致每次連接github都得輸入,稍顯麻煩焰宣,此時我們使用ssh-agent解決這個問題霉囚。這個操作需要在gitbash中進行操作。
在gitbash中首先輸入eval $(ssh-agent)
開啟agent模式匕积,之后輸入ssh-add /c/Users/konghao/.ssh/id_rsa
即可將我的密鑰添加至ssh-agent盈罐,添加完成之后,我們再次進行驗證就不用輸入口令了闪唆。但該操作都是在ssh-agent中使用的盅粪,只要關(guān)閉窗口下次依然需要輸入口令進行驗證,這樣就算在命令提示符中也不起作用悄蕾。所以如果非特殊的環(huán)境票顾,不一定非要設(shè)置ssh的驗證的口令。
$ eval $(ssh-agent)
Agent pid 6748 ##進入代理模式
konghao@SD-201702261156 MINGW64 ~
$ ssh-add /c/Users/konghao/.ssh/id_rsa
Enter passphrase for /c/Users/konghao/.ssh/id_rsa:
Identity added: /c/Users/konghao/.ssh/id_rsa (/c/Users/konghao/.ssh/id_rsa)
konghao@SD-201702261156 MINGW64 ~
$ ssh -T git@github.com ##此時就不需要輸入驗證口令帆调,但重新啟動窗口還需要重新設(shè)置agent
Hi ynkonghao! You've successfully authenticated, but GitHub does not provide shell access.
需要注意的是奠骄,當(dāng)設(shè)置了ssh之后,我們以后訪問github就不能再使用https://github.com/ynkonghao/xxxx.git來訪問番刊,而需要使用git@github.com:ykonghao/xxx來訪問含鳞。
github設(shè)置網(wǎng)頁類型倉庫
在實際的開發(fā)中我們可能會有這樣的一種特殊需求,就是把自己的圖片上傳到github中芹务,之后在項目中引用這些圖片蝉绷,此時如果直接使用github上的圖片地址(如:https://github.com/ynkonghao/test/01.png)來訪問并不會直接打開這些圖片的,而是會打開github的地址枣抱,此時需要在地址后增加?raw=true的參數(shù)才能直接打開圖片(https://github.com/ynkonghao/test/01.png?raw=true)熔吗。
github為每個用戶提供了一個網(wǎng)頁類型的倉庫,只要設(shè)置了這個倉庫沃但,我們就可以更加快捷的來訪問github上自己的資源磁滚,注意每個用戶只能設(shè)置一個網(wǎng)頁倉庫。
首先基于用戶名創(chuàng)建一個倉庫宵晚,假設(shè)我的用戶名是kh121,那我們就需要創(chuàng)建一個kh121.github.io的倉庫垂攘,之后進入倉庫的settings
找到github pages的選項,在這個選項中選擇一個主題即可淤刃,當(dāng)然主題也可以自己定義和設(shè)置
選擇一個主題之后晒他,github的page就算設(shè)置完成了
此時通過https://kh121.github.io即可訪問我們定義的倉庫主頁,我們以后就可以在該倉庫中添加自己所需要的內(nèi)容逸贾,此時我們clone一下工廠陨仅,然后推送一張圖片上去津滞,然后直接通過類似的地址https://kh121.github.io/img/01.jpg即可訪問圖片。
##克隆工廠到本地
E:\study\git_2016\11>git clone https://github.com/kh121/kh121.github.io
Cloning into 'kh121.github.io'...
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
E:\study\git_2016\11>cd kh121.github.io
##創(chuàng)建一個img的文件夾存儲文件
E:\study\git_2016\11\kh121.github.io>mkdir img
E:\study\git_2016\11\kh121.github.io>git add .
E:\study\git_2016\11\kh121.github.io>git commit -m "test img"
[master 3e123bc] test img
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 img/01.jpg ##文件名是01.jpg
##將文件推送到服務(wù)端
E:\study\git_2016\11\kh121.github.io>git push origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 825.44 KiB | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To https://github.com/kh121/kh121.github.io
4e233c5..3e123bc master -> master
當(dāng)創(chuàng)建完頁面并選擇主題之后可以通過修改index.md這個文件來修改自己的網(wǎng)頁灼伤,為了方便期間触徐,個人在這個文件中加入了一個倉庫的超鏈接。
[My GitHub Repository](https://github.com/kh121/kh121.github.io)
此時再次打開https://kh121.gihub.io會發(fā)現(xiàn)多了這樣一個連接
你同樣也可以根據(jù)markdown的語言來調(diào)整自己的個人網(wǎng)頁狐赡。
最后我們同樣也可以將一個github的新工廠加入到這個網(wǎng)頁工廠中進行顯示撞鹉,操作也非常簡單,就是創(chuàng)建工廠和選擇主題即可颖侄。此處我創(chuàng)建了一個page的工廠
之后選擇一個主題鸟雏,之后通過https://kh121.github.io/page即可訪問
簡單總結(jié)
這一部分的內(nèi)容就到此為止了,基于ssh的驗證基本上是每個github的使用者必須使用的一個手段览祖,另外基于github的網(wǎng)頁工廠可以根據(jù)自己的需求來進行考量孝鹊。