多賬號配置SSH


簡書地址 : 多賬號配置SSH

博客地址 : 多賬號配置SSH

掘金地址 : 多賬號配置SSH


快捷說明

熟練者忘記查詢, 詳細解析在下面模塊

$ cd ~/.ssh                             // 進入文件夾
$ ssh-keygen -t rsa -C "郵箱地址"       // 配置密鑰對
$ ssh-add rsa文件的路徑/xxx_rsa          // 添加配置
$ git config --global(local) user.name "你的名字"
$ git config --global(local) user.email "你的郵箱"
$ vim ~/.ssh/config                     // 添加新的賬號配置

背景介紹

爲什麼要配置SSH

作爲一個正常上班搬磚程序猿,Git 應該是目前主流的代碼管理工具,而Git在提交時有兩種方式:Https 和 SH 兩種驗證方式。

  • Https : 輸入賬號密碼,每次都要輸入(麻煩,程序猿從來不做重複工作)
  • SSH : 提交代碼時通過GIT服務器的公鑰與本地私鑰做驗證。(配置一次,無須每次輸入賬號密碼)

SSH(簡單原理說明)

生成一對公鑰-私鑰,公鑰添加到Git服務器,私鑰放在本地。提交代碼時通過GIT服務器的公鑰與本地私鑰做驗證,如果驗證通過則提交成功,簡單說就是把賬號和密碼託管給SSH, 賬號就像我們的QQ號碼,是公開的可見的,密碼只有我們自己知道,本地私鑰就是代碼我們輸入密碼的過程,切安全。

1. 生成SSH-KEY

1.1 打開命令行(終端),測試終端是否支持SSH

```
$ ssh -V
```
  • 如果支持,可能看到類似以下版本信息:

    OpenSSH_7.4p1, LibreSSL 2.5.0
    
  • 測試如果不識別SSH,則需要另行安裝,Mac默認帶有ssh,不需要安裝

1.2 生成公鑰私鑰

  • 用命令行進入存放ssh的文件夾,然後輸入指令,引號內輸入你Git的的郵箱地址

    $ cd ~/.ssh
    $ ssh-keygen -t rsa -C "郵箱地址"
    

    接下來會提示:

    Generating public/private rsa key pair.
    Enter file in which to save the key (~/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again: 
    
  • 生成ras的公鑰私鑰對

    輸入保存這個Key的地址,一般直接輸入文件名就好(也可以輸入絕對路徑),即在當前目錄下的名字,爲了區分一般可以按照用途起名,比如company_xx,之後會提示你輸入管理該密鑰對的密碼,這裏會輸入兩次校驗,根據需要自己輸入, 完成後即創建成功,會提示類似如下信息

    Your identification has been saved in xxxGitHub.
    Your public key has been saved in xxxGitHub.pub.
    The key fingerprint is:
    SHA256:7KVBN59ZHVBky18lBoBnBfhRQXY579Njn6JsYXHm1IA  [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    |        s oo*O+B*.|
    |        o + +=o+|
    |        .+o.  +=o|
    |       o ..+ B .+|
    |        S  .o|
    |       . + o . +|
    |        o . . . =|
    |          .. . ..|
    |          .o. .  |
    +----[SHA256]-----+
    
  • 此時在終端輸入ls,則會看到當前目錄已經有了我們生成好的公鑰私鑰文件xxxGitHub xxxGitHub.pub, .pub文件即是公鑰

```
$ls
xxxGitHub     xxxGitHub.pub
```

2. 單個賬號的配置 -- 全局Git配置

大部分人使用Git一般是一個賬號

因爲一般自己筆記本維護自己的github, 公司電腦維護公司的git, 所以先介紹單個git賬號配置

2.1 將生成的SSH-KEY分別配置給服務器和本地。

  • 將第一步生成的xxx.pub 公鑰中的內容添加到git的SSH中,即在網頁上GitHub或Gitlib的設置(setting)中可以找到ssh這個菜單項。

  • 把SSH-KEY配置給SSH,讓系統SSH知道這個KEY,如果你是在其他文件夾中生成的密鑰對必須 拷貝到~/.ssh文件夾 中,然後輸入如下指令,將當前rsa私鑰(不帶.pub文件) 添加到SSH-Agent.

    $ ssh-add rsa文件的路徑/xxx_rsa
    

輸入後會校驗之前我們在上面 1.2 步驟中設置的密鑰密碼,校驗成功後會提示 Identity added: xxx_rsa (xxx_rsa)

如果設置失敗,首先檢查當前目錄是否爲 **~/.ssh**, 然後如果提示如下,請執行`eval $(ssh-agent)` 後再重新添加,如果還不行,請執行`ssh-agent bash`再次嘗試添加,如果還有問題請另行查閱,本文主要介紹配置多個ssh.

```
Could not open a connection to your authentication agent.
```

2.2 配置Git全局用戶和郵箱:(郵箱爲你git對應的郵箱)

$ git config --global user.name "你的名字"
$ git config --global user.email "你的郵箱"

配置完成後可打開 ~/.gitconfig查看配置

$ vim ./gitconfig

內容大致如下

[user]
    name = xxx
    email = [email protected]

此時單個賬號配置全部結束

3. 多個Git帳號的配置——局部Git配置

大部分人使用Git一般是一個賬號, 所以步驟2中可以完成,但是如果你考慮到以後可能維護多個,或者像本人想在公司電腦裏使用公司郵箱的gitlab與自己的github一起,這時就需要配置多個私鑰對。

3.1 上面配置ssh密鑰對 1.2 時提到起名防止衝突,所以這裏不再介紹,反正原則就是一個賬號對應一對密鑰(xx, xx.pub).

3.2 接下來服務器添加公鑰步驟同2.1中添加公鑰的步驟,第二部爲SSH配置私鑰位置時和上面方法不同,我們需要在.ssh文件夾中新建一個config的文件(名字可以自己取,但是不要有衝突和當前目錄下), touch config ,然後通過指令vim config進入config文件,鍵盤敲擊小寫字母a進入編輯模式,輸入如下內容:

Host gitlib.com
    HostName gitlib.com
    User [email protected]
    PreferredAuthentications publickey
    IdentityFile id_rsa_gitlib
Host oschina.com
    HostName oschina.com
    User [email protected]
    PreferredAuthentications publickey
    IdentityFile /D/Workspace/ssh/id_rsa_oschina
Host 192.168.1.222
    HostName 192.168.1.222
    User [email protected]
    PreferredAuthentications publickey
    IdentityFile /D/Workspace/ssh/id_rsa_oschina

注意:

  • HostName是服務器的地址,User是用戶名,PreferredAuthentications照抄即可,這裏主要說的是IdentityFile,上面我們看到了三種情況,所以它的書寫原則是:

    • 填私鑰文件的本地路徑。
    • 不論是Linux還是Windows都可以寫相對路徑,比如把id_rsa_xxx私鑰文件放在.ssh文件夾下。
    • 文件放在不同跟路徑下時,需要寫絕對路徑
  • HostName 不可帶http或https開頭

3.3 將所有的id_rsa私鑰文件添加到SSH-Agent

3.4 最後,配置局部郵箱
在上面步驟我們配置了全局的郵箱即如果是通過該郵箱的項目ssh的配對已經完成,如果是其他賬戶的項目則需要進入該倉庫文件夾後配置,配置命令如下:

$git config --local user.name "你的名字"
$git config --local user.email "你的郵箱"

配置成功後,我們可以進入項目文件夾下的.git文件夾查看config文件內容,大概內容如下:

...
[user]
    name = xxx
    email = [email protected]

此時配置全部結束,請查看下方測試SSH-KEY配置是否成功進行測試。如果配置成功,你就可以clone和commit了。

4. 測試SSH-KEY配置是否成功

  • 如果你是Github:
$ ssh -T [email protected]
  • 如果你是Gitlib:
$ ssh -T [email protected]
  • 如果你是局域網10.12.22.201
$ ssh -T [email protected]
  • 其他自行遞歸解決
$ ssh-add rsa私鑰文件的路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章