成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Git自由之章 - 關(guān)于SSH 公鑰

IamDLY / 544人閱讀

摘要:關(guān)于首先是一種網(wǎng)絡(luò)協(xié)議,用于計算機之間的加密登錄。第二種級別是基于公開密匙加密機制的安全驗證。前者是私鑰,注意保管,后者是公鑰如下添加到登錄之后。

簡述

什么是 Git 的 ssh key?這個問題其實我也很困惑,所以我才專門分享這篇關(guān)于 ssh key 的文章,著重分析了解什么是 ssh key,它有什么用,怎么能用好它?本文主要由從網(wǎng)上收集資料加上自己的經(jīng)驗匯總而成的經(jīng)驗干貨,可以說的實戰(zhàn)經(jīng)驗之談,但其中也有一些錯漏,歡迎指正。

關(guān)于 ssh key

首先ssh是一種網(wǎng)絡(luò)協(xié)議,用于計算機之間的加密登錄。

我們使用ssh登錄服務(wù)器時,一般常見的會使用用戶名/密碼方式登錄,也可以使用ssh key實行免密碼登錄,一般現(xiàn)在這種方式被Git服務(wù)器使用的比較多。

簡單來說,SSH提供了兩種級別的安全驗證:

第一種級別是基于密碼的安全驗證,知道賬號和密碼,就可以登陸到遠程主機。

Team的開發(fā)工作中,就是使用這種方式登陸編譯服務(wù)器,或者開發(fā)機器。因為是在內(nèi)網(wǎng)中,這種級別的安全驗證已經(jīng)足夠了。

第二種級別是基于Public-key cryptography (公開密匙加密)機制的安全驗證。

原理如下圖所示:

其優(yōu)點在于無需共享的通用密鑰,解密的私鑰不發(fā)往任何用戶。

即使公鑰在網(wǎng)上被截獲,如果沒有與其匹配的私鑰,也無法解密,所截獲的公鑰是沒有任何用處的。

ssh key 的配置使用方案(一)

這是根據(jù) Github 提供的 help 文檔教程:

首先進到 .ssh 目錄下:

$ cd ~/.ssh
# Checks to see if there is a directory named ".ssh" in your user directory

使用ssh-keygen產(chǎn)生新的key:

$ ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key using the provided email. 
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/you/.ssh/id_rsa).

使用默認的文件名直接enter, 按提示輸入密碼(如果不提供密碼,SSH將無密碼連接,如果private key泄露可能會有安全問題):

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

密匙產(chǎn)生成功:

Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/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 [email protected]

上傳public key到Github賬戶

登錄github

點擊右上方的Accounting settings圖標

選擇 SSH key

點擊 Add SSH key

在出現(xiàn)的界面中填寫SSH key的名稱,填一個你自己喜歡的名稱即可,然后將上面拷貝的~/.ssh/id_rsa.pub文件內(nèi)容粘帖到key一欄,在點擊“add key”按鈕就可以了。

添加過程github會提示你輸入一次你的github密碼

設(shè)置SSH使用HTTPS的403端口

在局域網(wǎng)中SSH的22端口可能會被防火墻屏蔽,可以設(shè)置SSH使用HTTPS的403端口。

測試HTTPS端口是否可用:

$ ssh -T -p 443 [email protected]
Hi username! You"ve successfully authenticated, but GitHub does not
provide shell access.

編輯SSH配置文件 ~/.ssh/config 如下:

Host github.com
  Hostname ssh.github.com
  Port 443

測試是否配置成功:

$ ssh -T [email protected]
Hi username! You"ve successfully authenticated, but GitHub does not
provide shell access.
ssh key 的配置使用方案(二)

這里是利用ssh key實現(xiàn)免密碼登錄服務(wù)器

生成ssh key

ssh-keygen -t rsa -C "your name"

這樣默認會在本地的~/.ssh目錄下生成id_rsa,id_rsa.pub兩個文件:

id_rsa是私鑰。

id_rsa.pub是公鑰。

使用ssh key

ssh key方式登錄遠程服務(wù)器

我們需要把id_rsa.pub拷貝到遠程服務(wù)器的~/.ssh下面。

并改名為authorized_keys,這樣我們就可以使用key的方式登錄了。

$ ssh [email protected]
Enter passphrase for key "~/.ssh/id_rsa":

這樣我們輸入shh key的密碼就可以登錄了。

ssh key方式使用git clone代碼

如果我們使用的是github/gitcafe, 只需要把id_rsa.pub的內(nèi)容拷貝出來。

在github的setting里面添加即可, 我們就可以使用ssh 方式clone代碼了。

//請修改為你自己的git地址
git clone [email protected]:chenyangcun/mydouban.git

多站點使用不同的ssh key

默認ssh登錄時使用的是id_rsa文件,我們也可以指定其他文件。

首先我們生成不同的key:

ssh-keygen -t rsa -C "user1" -f user1
ssh-keygen -t rsa -C "user2" -f user2

我們生成user1,user2兩個不同的ssh key,然后我們在.ssh下創(chuàng)建config文件。

輸入:

Host company
  HostName company.com
  User git
  IdentityFile ~/.ssh/user1

Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/user2

這樣訪問company.com就會使用user1, 訪問github.com就會使用user2。

同一站點使用不同的ssh key

我們有時候需要在同一站點使用不同的ssh key, 比如使用gitcafe的pages服務(wù)。

想要創(chuàng)建兩個站點,但是gitcafe上不允許不同的用戶使用同一個ssh key。

我們在config文件里做相應(yīng)的修改

Host gitcafe-site1
  HostName gitcafe.com
  User git
  IdentityFile ~/.ssh/user1

Host gitcafe-site2
  HostName gitcafe.com
  User git
  IdentityFile ~/.ssh/user2

然后我們更改git參考的遠程地址

#site1
$ git remote remove origin 
$ git remote add origin git@gitcafe-site1:user1/user1.git

#site2
$ git remote remove origin 
$ git remote add origin git@gitcafe-site2:user2/user2.git

關(guān)鍵是把gitcafe.com改為gitcafe-site1和gitcafe-site2

如果使用hexo, 在hexo的config文件中,把deploy的遠程地址改成gitcafe-site1這樣的形式即可:

deploy:
type: git
repo: git@gitcafe-site1:user1/user1.git
ssh key 的配置使用方案(三)

這里以配置github的ssh key為例子。

1. 配置git用戶名和郵箱

git config user.name "用戶名"
git config user.email "郵箱"

在config后加上 --global 即可全局設(shè)置用戶名和郵箱。

2. 生成ssh key

ssh-keygen -t rsa -C "郵箱"

然后根據(jù)提示連續(xù)回車即可在~/.ssh目錄下得到id_rsa和id_rsa.pub兩個文件,id_rsa.pub文件里存放的就是我們要使用的key。

3.上傳key到github

clip < ~/.ssh/id_rsa.pub

復(fù)制key到剪貼板

登錄github

點擊右上方的Accounting settings圖標

選擇 SSH key

點擊 Add SSH key

4. 測試是否配置成功

ssh -T [email protected]

如果配置成功,則會顯示:

Hi username! You’ve successfully authenticated,
but GitHub does not provide shell access.

解決本地多個ssh key問題

有的時候,不僅github使用ssh key,工作項目或者其他云平臺可能也需要使用ssh key來認證,如果每次都覆蓋了原來的id_rsa文件,那么之前的認證就會失效。

這個問題我們可以通過在~/.ssh目錄下增加config文件來解決。

下面以配置搜狐云平臺的ssh key為例。

1. 第一步依然是配置git用戶名和郵箱

git config user.name "用戶名"
git config user.email "郵箱"

2. 生成ssh key時同時指定保存的文件名

ssh-keygen -t rsa -f ~/.ssh/id_rsa.sohu -C "email"

上面的id_rsa.sohu就是我們指定的文件名,這時~/.ssh目錄下會多出id_rsa.sohu和id_rsa.sohu.pub兩個文件,id_rsa.sohu.pub里保存的就是我們要使用的key。

3. 新增并配置config文件

添加config文件

如果config文件不存在,先添加;存在則直接修改:

touch ~/.ssh/config

在config文件里添加如下內(nèi)容(User表示你的用戶名)

Host *.cloudscape.sohu.com
    IdentityFile ~/.ssh/id_rsa.sohu
    User test

4. 上傳key到云平臺后臺(省略)

5. 測試ssh key是否配置成功

ssh -T [email protected]

成功的話會顯示:

Welcome to GitLab, username!

至此,本地便成功配置多個ssh key。

日后如需添加,則安裝上述配置生成key,并修改config文件即可。

gitlab 上配置使用 ssh key

這里主要講述在 gitlab 上配置使用 ssh key

客戶端生成ssh-key

如果已經(jīng)有sshkey,可用之前的。

在客戶端執(zhí)行命令 ssh-keygen -t rsa -C "for xxx"

-C 選項后是備注,可隨意。

命令執(zhí)行后會要求輸入key存儲的文件名和passphrase:

輸入一個特有的文件名,否則使用默認的 id_rsa。

passphrase。不輸入也可以。輸入之后,提交的時候要輸入這個passphrase

完成后在 ~/.ssh/ 會生成2個文件:

id_rsa 和 id_rsa.pub。(前者是私鑰,注意保管,后者是公鑰)

如下:

[huqiu@101 liaohuqiu]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/huqiu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

添加ssh-key到gitlab

登錄之后: Profile Settings => SSH-Keys => Add SSH key。

輸入之前生成的公鑰,標題隨意:

基本使用介紹

配置好sshkey之后,你就可以在命令行下使用git命令進行操作了。強烈建議使用命令行而不是使用圖形界面客戶端。

創(chuàng)建項目:

創(chuàng)建完成:

基本操作

clone(克?。?/p>

add(跟蹤)

commit(提交)

push(推送)

clone(克?。?/em>

[huqiu@101 git]$ git clone [email protected]:huqiu/test.git
Cloning into "test"...
warning: You appear to have cloned an empty repository.
Checking connectivity... done

進入目錄

[huqiu@101 git]$ cd test/
[huqiu@101 test]$ ll
total 0

創(chuàng)建一個文件

[huqiu@101 test]$ echo "### hello, test" > README.md

為項目配置用戶名和郵箱,用戶名和郵箱會進入到日志

[huqiu@101 test]$ git config user.name liaohuqiu
[huqiu@101 test]$ git config user.email [email protected]

add(跟蹤),添加文件到本地庫

[huqiu@101 test]$ git add README.md

*commit(提交)*
[huqiu@101 test]$ git commit -a -m "add README"
[master (root-commit) 1095bd8] add README
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

push(推送)

    [huqiu@101 test]$ git push origin master
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To [email protected]:huqiu/test.git
     * [new branch]      master -> master

提交完成后記錄:

項目的文件情況:

關(guān)于 github與gitlab 多個 ssh key 的處理方案

這里主要是處理 github 的 ssh key 與 gitlab 的 ssh key 的沖突和相互覆蓋問題

如果你以前用 github 的 ssh key ,后來又多了一個 gitlab 的賬號,那么在綁定 gitlab 的 ssh key 的時候,你會發(fā)現(xiàn) 原來的 github 的 ssh key 被覆蓋了,這就是問題所在,怎么能實現(xiàn)兩者同時綁定呢:

在.ssh目錄下新建一個config文件配置一下,就能解決gitlab與github的ssh key的沖突。

生成并添加第一個ssh key

cd ~/.ssh
ssh  ssh-keygen -t ras -C "[email protected]"

這時可以一路回車,不輸入任何字符,將自動生成id_rsa和id_rsa.pub文件。

生成并添加第二個ssh key

$ ssh-keygen -t rsa -C "[email protected]"

注意,這時不能一路回車,否則郵箱將覆蓋上一次生成的ssh key,給這個文件起一個名字, 比如叫 id_rsa_github, 所以相應(yīng)的也會生成一個 id_rsa_github.pub 文件。

此時查看.ssh下的目錄文件,發(fā)現(xiàn)多了id_rsa_github和id_rsa_github.pub兩個文件。

添加私鑰

$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa_github

修改配置文件

在 ~/.ssh 目錄下新建一個config文件

touch config

并添加以下內(nèi)容

# gitlab
Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

給github/gitlab上添加ssh key

查看ssh key執(zhí)行cat id_rsa_github.pub內(nèi)容,將文本內(nèi)容拷貝到https://github.com/settings/ssh。

生成ssh key的方法可以去看官方教程,這里不再贅述。

測試

$ ssh -T [email protected]

如果輸出:

Hi xuyuan923! You"ve successfully authenticated, 
but GitHub does not provide shell access.

說明成功的連上github了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21704.html

相關(guān)文章

  • Git自由之章 - 本地倉庫的基本操作

    摘要:終端提示注意對生成定的秘鑰進行重命名輸入名稱。如果某些文件已經(jīng)被納入了版本管理中,則修改是無效的。 簡述 Git 是目前很流行的版本控制工具,很多開發(fā)團隊在使用。本人也在使用這個工具,發(fā)覺相比于傳統(tǒng)的SVN,確實好用很多,而且它還有很大的自由屬性,這一點深得我的欣賞。這次的分享主要是分享關(guān)于Git的基礎(chǔ),關(guān)于本地倉庫的基本操作。(不懂本地倉庫的概念可以上網(wǎng)查一些關(guān)于 Git 的代碼倉庫...

    XFLY 評論0 收藏0
  • git webhooks 實現(xiàn)自動拉取代碼

    摘要:而利用的功能,能夠讓我們省去這一步,下面我就以碼云的為例,實現(xiàn)服務(wù)端的代碼自動同步部署。查看是哪個用戶執(zhí)行該命令參考文章使用腳本遠程部署項目利用實現(xiàn)自動部署代碼碼云通過實現(xiàn)自動同步代碼部署執(zhí)行系統(tǒng)外部命令函數(shù) 當進行開發(fā)的環(huán)境在本地,而運行的環(huán)境要在服務(wù)端時,每一次提交代碼都需要在服務(wù)端pull一次。而利用git的hooks功能,能夠讓我們省去這一步,下面我就以碼云的webhooks為...

    marek 評論0 收藏0
  • 如何在服務(wù)器上搭建hexo博客

    原文鏈接 隨著Vateral主題的開發(fā)接近了尾聲,在對主題速度優(yōu)化的時候發(fā)現(xiàn)之前用的githubpage問題多多:首先就是因為在國內(nèi)的原因,訪問速度本身就很慢,曾經(jīng)有次加載一張16kb的圖標時間耗費了26s?。??其次,在對資源做CDN托管加速時,域名是需要備案的,顯然githubpage也是做不了的;所以果斷舍棄了這個把hexo搭建到了我的阿里云服務(wù)器上 總體來說還是比把hexo搭建到github...

    MycLambert 評論0 收藏0

發(fā)表評論

0條評論

IamDLY

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<