使用Git的過程中發現,每次向遠端倉庫git push推送代碼的時候都需要輸入賬号密碼。做為一個程式員,多多少少都會有偷懶的思維。那麼如何才能避免每次都要輸入賬号密碼呢?一種是讓Git記住密碼,第二種就是使用SSH協定推送。
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的公私鑰。
[email protected]:~/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 [email protected]
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公鑰的詳細操作步驟可以參考官網的教程。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0DOHJmZxIDWzljMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxcjN4UzNzMTM3EjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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