1. 程式人生 > >Git使用小技巧之免密登入

Git使用小技巧之免密登入

想要獲取更多文章可以訪問我的部落格 - 程式碼無止境。

小代同學在使用Git的過程中發現,每次向遠端倉庫推送程式碼的時候都需要輸入賬號密碼。做為一個程式設計師,多多少少都會有偷懶的思維。那麼如何才能避免每次都要輸入賬號密碼呢?一番研究之後,小代同學發現了兩種實現方式。一種是讓Git記住密碼,第二種就是使用SSH協議推送。

準備工作

首先我們需要準備一個和小代差不多的環境,這樣才能完整的模擬小代同學的操作。第一步我們需要在Github上建立一個倉庫,如下圖所示。


遠端倉庫建立完成後,我們需要將其克隆到本地。

git clone https://github.com/ganchaoyang/git-test.git

你會發現每次向遠端倉庫PUSH程式碼的時候都會提示輸入賬號密碼,如下所示:

root@server01:~/git-test# git push
Username for 'https://github.com': ganchaoyang
Password for 'https://[email protected]':

這樣,我本地就有了一個和小代同學差不多的環境,下面我們就一起來看下小代同學是如何操作的吧。

Git記住密碼

首先小代同學嘗試的是第一種方式--記住密碼。這種方式只需要設定credential.helper = store配置就可以了。那麼怎麼設定呢?很簡單一行命令就可以搞定。

git config --global credential.helper store

執行完這句命令後,我們會發現在使用者主目錄下的.git/config檔案裡面會多了一項配置。

[credential]
        helper = store

然後我們發現我只需要在第一次推送的時候輸入賬號密碼,第二次往後都不需要再輸入密碼了。--global的配置是對該使用者全域性生效的,如果你只想當前專案生效,在配置的時候只需要去掉--global即可。當然了,如果你不想執行命令,直接Copy上面配置的內容到你的.git/config檔案裡面也是可以的。

SSH協議方式

小代還發現一種可以實現無需密碼就往遠端推送程式碼的方式,那就是配置SSH KEY。那麼如何配置呢?

1.首先,我們需要在我們本地的機器上生成一對ssh的公私鑰。

root@server01:~/git-test# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:iik07xiElU3zph5Gv3VbwSUEhRX9vpHhz1ZaRegndzw root@server01
The key's randomart image is:
+---[RSA 2048]----+
|    o     .**o.. |
|   + o    .. oo .|
|  o o o     o. + |
| o . +       .oEB|
|. + + . S . . .=*|
| o = + + . o   ++|
|  o = o   .    +=|
|   =          ..+|
|  . .          . |
+----[SHA256]-----+

中間的Enter passphrase是讓你輸入金鑰的訪問密碼,如果不需要的話直接回車即可。公私鑰對預設生成在使用者主目錄下的.ssh/目錄下。

2.第二步我們需要將公鑰複製到Github上。在使用者設定介面有個SSH and GPG keys,我們點選它並選擇新建一個SSH key,然後將公鑰複製進去即可。在Github上新增SSH公鑰的詳細操作步驟可以參考官網的教程。


3.這一步我們需要修改本地倉庫中的遠端倉庫的地址,其實我們只需將.git/config檔案中遠端倉庫的地址由http的地址換成ssh的地址即可。(PS:這兩種協議的地址都可以在Github上獲取。)

# 修改前
[remote "origin"]
    url = https://github.com/ganchaoyang/git-test.git
    fetch = +refs/heads/*:refs/remotes/origin/*

# 修改後
[remote "origin"]
    url = [email protected]:ganchaoyang/git-test.git
    fetch = +refs/heads/*:refs/remotes/origin/*

4.到這一步我們已經完成了SSH的配置,只需要推送一下程式碼測試一下即可。你會發現真的不需要密碼了。

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 259 bytes | 259.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:ganchaoyang/git-test.git
   e8bcffc..6e1e8a9  master -> master

結束語

今天這篇文章主要介紹了兩種推送程式碼無需輸入遠端倉庫賬號密碼的方式,分別是讓Git記住密碼以及配置SSH KEY,希望能夠對你有所幫助。

PS:學習不止,碼不停蹄!如果您喜歡我的文章,就關注我吧!