git 基礎操作,公私鑰認證/ssh公私鑰登錄


一、登錄公私鑰和git公私鑰

1、服務器使用公鑰,本地使用私鑰;

2、ssh公鑰登錄服務器,與git公鑰認證是同一套系統,不同的linux用戶;

3、例如以root用戶登入服務器,  cd ~/.ssh   vi authorized_keys  ,用於存放登錄公鑰,形如

ssh-rsa AAA************* companyPC

ssh-rsa AAA************* myMacBook

4、切換到git用戶,su git,同樣的 cd ~/.ssh   vi authorized_keys,用於存放git驗證的公鑰,形如

git用戶的ssh授權文件位置  /home/git/.ssh/authorized_keys 

ssh-rsa AAA************* companyPC-git

ssh-rsa AAA************* myMacBook-git

5、公私鑰生成命令(Linux或MAC系統)。

 ssh-keygen -t rsa -P ''    這里的-P后面填的是密碼,可為空,一般SSH登錄的建議設密碼,GIT認證用的可以留空。

這個命令則會在提示的指定目錄生成兩個文件   id_rsa 私鑰文件  id_rsa.pub 公鑰文件

6、打開id_rsa.pub文件,復制內容到第3或4的服務器文件中。

本地登錄/GIT檢出時,選擇使用私鑰的方式,使用剛才生成的id_rsa文件。

7、使用tortoiseGIT時,使用的私鑰是ppk格式,需要下載puttygen,生成ppk格式類型的公私鑰對,或轉換成ppk格式的公私鑰對。

 

二、搭建 git 服務器

1、安裝git  yum install git 

2、創建一個git用戶,用來運行git服務 adduser git 

3、創建證書登錄:

收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到 /home/git/.ssh/authorized_keys 文件里,一行一個。

4、在服務器的 /git/myProj 文件夾中創建新的裸倉庫 git init --bare ,並把owner改為git chown -R git /git/myProj 

5、由於git默認拒絕了push操作,需要進行設置,修改 /git/myProj/config 文件后面添加如下代碼:

[receive]
    denyCurrentBranch = ignore

 6、禁用shell登錄:
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:git user:/git:/bin/bash
改為:
git:x:1001:1001:git user:/git:/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。

三、MAC版sourceTree使用私鑰登錄倉庫

1、MAC版sourceTree沒有單獨的項目設置公鑰,使用的是系統里的配置登錄;

2、使用上面的方法生成好公私鑰文件,本地使用的是私鑰文件;

3、假設私鑰文件的存放路徑為 /Users/batsing/git-key/id_rsa ;

4、MAC電腦打開命令行工具,進入本人目錄  cd ~ ,ls -a 查看是否存在 .ssh文件夾,如果沒有則創建,如果有則進入.ssh文件夾;

5、現在所在的目錄為 ~/.ssh,在本目錄用VI編輯器新建config文件, vi config  ,按i進入編輯狀態,輸入以下文本;

Host 127.0.0.1
    Port 12200
    User git
    IdentityFile /Users/batsing/git-key/id_rsa

Host為git服務器的IP地址,Port為端口,User為登錄用戶,IdentityFile后面填私鑰文件的路徑;

6、保存並退出VI編輯器,這樣sourceTree要用的git私鑰就配置好了。

7、檢查config文件和私鑰文件,權限需要為600,chmod 600 id_rsa 否則也不能成功。若還有問題,使用控制台 git clone 項目 來可以查看具體問題原因

8、現在sourceTree就可以拉取、推送等操作了。重啟電腦配置不會丟失。

9、命令行克隆項目到本地當前文件夾  git clone 項目網址 ./ 

 

四、git 撤銷,放棄本地修改

1、未使用 git add 緩存代碼時

可以使用  git checkout -- filepathname  (比如: git checkout -- readme.md  ,不要忘記中間的 “--” ,不寫就成了檢出分支了!!)。放棄所有的文件修改可以使用 git checkout .  命令。

此命令用來放棄掉所有還沒有加入到緩存區(就是 git add 命令)的修改:內容修改與整個文件刪除。但是此命令不會刪除掉剛新建的文件。因為剛新建的文件還沒已有加入到 git 的管理系統中。所以對於git是未知的。自己手動刪除就好了。

2、已經使用了  git add 緩存了代碼

可以使用   git reset HEAD filepathname  (比如: git reset HEAD readme.md)來放棄指定文件的緩存,放棄所以的緩存可以使用 git reset HEAD . 命令。

此命令用來清除 git  對於文件修改的緩存。相當於撤銷 git add 命令所在的工作。在使用本命令后,本地的修改並不會消失,而是回到了如(一)所示的狀態。繼續用(一)中的操作,就可以放棄本地的修改。

 

創建一個git用戶,用來運行git服務:


免責聲明!

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



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