小代同學在使用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://ganchaoyang@github.com':
這樣,我本地就有了一個和小代同學差不多的環境,下面我們就一起來看下小代同學是如何操作的吧。
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 = git@github.com: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
,希望能夠對你有所幫助。