多帳號配置SSH


簡書地址 : 多帳號配置SSH

博客地址 : 多帳號配置SSH

掘金地址 : 多帳號配置SSH


快捷說明

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

$ 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 					// 添加新的帳號配置

複製代碼

背景介紹

爲何要配置SSHgithub

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

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

SSH(簡單原理說明)安全

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

1. 生成SSH-KEY

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

```
$ ssh -V
```
複製代碼
  • 若是支持,可能看到相似如下版本信息:dom

    OpenSSH_7.4p1, LibreSSL 2.5.0
    複製代碼
  • 測試若是不識別SSH,則須要另行安裝,Mac默認帶有ssh,不須要安裝ssh

1.2 生成公鑰私鑰ide

  • 用命令行進入存放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 	xxx@qq.com
    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 = xxx@foxmail.com
複製代碼

此時單個帳號配置所有結束

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 xxx@foxmail.com
    PreferredAuthentications publickey
    IdentityFile id_rsa_gitlib
Host oschina.com
    HostName oschina.com
    User xxx@foxmail.com
    PreferredAuthentications publickey
    IdentityFile /D/Workspace/ssh/id_rsa_oschina
Host 192.168.1.222
    HostName 192.168.1.222
    User xxx@foxmail.com
    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 = xxx@foxmail.com
複製代碼

此時配置所有結束,請查看下方測試SSH-KEY配置是否成功進行測試。若是配置成功,你就能夠clone和commit了。

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

  • 若是你是Github:
$ ssh -T git@github.com
複製代碼
  • 若是你是Gitlib:
$ ssh -T git@gitlib.com
複製代碼
  • 若是你是局域網10.12.22.201
$ ssh -T git@10.12.22.201
複製代碼
  • 其餘自行遞歸解決
$ ssh-add rsa私鑰文件的路徑
複製代碼
相關文章
相關標籤/搜索