git使用ssh密鑰和https兩種認證方式匯總(轉)


在版本庫的SSH方式和HTTPS方式是不同的,具體來說就是url信息的不同,但是,實際的認證機制也是不同的。當建立了本機密鑰之后,使用ssh方式實際上是不需要再次認證的,而https則每次需要輸入密碼 。《Help.GitHub - SSH key passphrases》里也說了用SSH更方便更安全,不需要去輸入長長的密碼。

我去看了下repo目錄下的.git/config,果然,我的url是HTTPS形式。

1
2 3 
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* url = https://username@github.com/username/projectname.git

因為遠程版本庫的url是HTTPS,估計是我git clone的時候用HTTPS鏈接造成的

所以問題就出在這了,每次都很不方便,都要輸入用戶名和密碼。

為了使用SSH公鑰的方式認證,我把config的url改成下面這樣

1
2 3 
[remote "origin"] fetch = + refs/heads/*:refs/remotes/origin/* url = git@github.com:username/projectname.git

這樣我git push的時候又可以用SSH公鑰認證而不用去輸入用戶名和密碼,不僅方便,而且更安全。

http://www.cnblogs.com/hanxi/archive/2012/07/31/2616628.html

    Git有一個工具被稱為git config,它允許你獲得和設置配置變量;這些變量可以控制Git的外觀和操作的各個方面。這些變量可以被存儲在三個不同的位置:

  1./etc/gitconfig 文件:包含了適用於系統所有用戶和所有庫的值。如果你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。

  2.~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞--global 選項使Git 讀或寫這個特定的文件。

  3.位於git目錄的config文件 (也就是 .git/config) :無論你當前在用的庫是什么,特定指向該單一的庫。每個級別重寫前一個級別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。

  在Windows系統中,Git在$HOME目錄中查找.gitconfig文件(對大多數人來說,位於C:\Documents and Settings\$USER下)。它也會查找/etc/gitconfig,盡管它是相對於Msys 根目錄的。這可能是你在Windows中運行安裝程序時決定安裝Git的任何地方。

 

二.你的標識(Your Identity)

2.1 當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:

  $ git config --global user.name "John Doe"

  $ git config --global user.email johndoe@example.com

  重申一遍,你只需要做一次這個設置。如果你傳遞了 --global 選項,因為Git將總是會使用該信息來處理你在系統中所做的一切操作。如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要--global選項。

2.2 你的編輯器(Your Editor)

  現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:

  $ git config --global core.editor emacs

2.3 你的比較工具(Your Diff Tool)

  另外一個你可能需要配置的有用的選項是缺省的比較工具它用來解決合並時的沖突。例如,你想使用vimdiff:

  $ git config --global merge.tool vimdiff

  Git可以接受kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff作為有效的合並工具。你也可以設置一個客戶化的工具;查看第7章獲得更多關於此的信息。

2.4 檢查你的設置(Checking Your Settings)

  如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:

  $ git config --list

  user.name=Scott Chacon

  user.email=schacon@gmail.com

  color.status=auto

  color.branch=auto

  color.interactive=auto

  color.diff=auto

  ...

  你可能會看到一個關鍵字出現多次,這是因為Git從不同的文件中(例如:/etc/gitconfig以及~/.gitconfig)讀取相同的關鍵字。 在這種情況下,對每個唯一的關鍵字,Git使用最后的那個值。

 

  你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:

  $ git config user.name

  Scott Chacon

 

2.5 獲取幫助(Getting help)

 

  如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:

  $ git help <verb>

  $ git <verb> --help

  $ man git-<verb>

  例如,你可以運行如下命令獲取對config命令的手冊頁幫助:

  $ git help config

設置 git status的顏色:git config --global color.status auto

http://www.cnblogs.com/wanqieddy/archive/2012/08/03/2621027.html

 

 

Git有兩個配置文件:

(1)全局的,在當前用戶的home目錄的.gitconfig文件。echo %userprofile%可以查看windows當前用戶目錄,linux在/home/當前用戶/下,或使用cd 回車即可到達
(2)特定git倉庫的配置文件:.git/config

 

git使用https協議,每次pull, push都要輸入密碼,相當的煩。
使用git協議,然后使用ssh密鑰。這樣可以省去每次都輸密碼。


大概需要三個步驟:
一、本地生成密鑰對;
二、設置github上的公鑰;
三、修改git的remote url為git協議。


一、生成密鑰對。
=============
大多數 Git 服務器都會選擇使用 SSH 公鑰來進行授權。系統中的每個用戶都必須提供一個公鑰用於授權,沒有的話就要生成一個。生成公鑰的過程在所有操作系統上都差不多。首先先確認一下是否已經有一個公鑰了。SSH 公鑰默認儲存在賬戶的主目錄下的 ~/.ssh 目錄。進去看看:

$ cd ~/.ssh $ ls authorized_keys2 id_dsa known_hosts config id_dsa.pub

關鍵是看有沒有用 something 和 something.pub 來命名的一對文件,這個 something 通常就是 id_dsa 或 id_rsa。有 .pub后綴的文件就是公鑰,另一個文件則是密鑰。假如沒有這些文件,或者干脆連 .ssh 目錄都沒有,可以用 ssh-keygen 來創建。該程序在 Linux/Mac 系統上由 SSH 包提供,而在 Windows 上則包含在 MSysGit 包里:

$ ssh-keygen -t rsa -C "your_email@youremail.com"

# Creates a new ssh key using the provided email # Generating public/private rsa key pair.

# Enter file in which to save the key (/home/you/.ssh/id_rsa):

直接Enter就行。然后,會提示你輸入密碼,如下(建議輸一個,安全一點,當然不輸也行):

Enter passphrase (empty for no passphrase): [Type a passphrase] # Enter same passphrase again: [Type passphrase again]

完了之后,大概是這樣。

Your identification has been saved in /home/you/.ssh/id_rsa. # Your public key has been saved in /home/you/.ssh/id_rsa.pub. # The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@youremail.com

這樣。你本地生成密鑰對的工作就做好了。


二、添加公鑰到你的github帳戶
========================
1、查看你生成的公鑰:大概如下:

$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlE LEVf4h9lFX5QVkbPppSwg0cda3 Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA t3FaoJoAsncM1Q9x5+3V 0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx NrRFi9wrf+M7Q== schacon@agadorlaptop.local

2、登陸你的github帳戶。然后 Account Settings -> 左欄點擊 SSH Keys -> 點擊 Add SSH key
3、然后你復制上面的公鑰內容,粘貼進“Key”文本域內。 title域,你隨便填一個都行。
4、完了,點擊 Add key。

這樣,就OK了。然后,驗證下這個key是不是正常工作。

$ ssh -T git@github.com # Attempts to ssh to github

如果,看到:

Hi username! You've successfully authenticated, but GitHub does not # provide shell access.

就表示你的設置已經成功了。


三、修改你本地的ssh remote url. 不用https協議,改用git 協議
================================================
可以用git remote -v 查看你當前的remote url

$ git remote -v

origin https://github.com/someaccount/someproject.git (fetch) origin https://github.com/someaccount/someproject.git (push)

可以看到是使用https協議進行訪問的。

你可以使用瀏覽器登陸你的github,在上面可以看到你的ssh協議相應的url。類似如下:

git@github.com:someaccount/someproject.git

這時,你可以使用 git remote set-url 來調整你的url。

git remote set-url origin git@github.com:someaccount/someproject.git

完了之后,你便可以再用 git remote -v 查看一下。

OK。

 

至此,OK。

你可以用git fetch, git pull , git push, 現在進行遠程操作,應該就不需要輸入密碼那么煩了。

http://blog.csdn.net/wfdtxz/article/details/8678982

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM