目的
本文的目的是指導在windows操作系統下面,如何配置通過ssh key來訪問gerrit服務器。
檢查并生成本地的ssh key
檢查是否已經存在ssh key
在生成本地的ssh key之前,我們需要首先檢查一下自己本地是否已經生成過ssh key,如果已經生成過,則不需要再次生成,可以直接使用已經存在的ssh key,如果沒生成過ssh key,則需要生成新的ssh key。
具體檢查是否生成ssh key的方法如下,以管理員的方式運行powershell程序,然后再里面輸入如下命令,**注意:**如果沒有powershell程序,就以管理員身份運行cmd程序。
C:Windowssystem32>dir C:Userszhangsan.ssh
驅動器 C 中的卷沒有標簽。
卷的序列號是 E637-92C8
C:Userszhangsan 的目錄
找不到文件
C:Windowssystem32>
通過上面的命令和輸出我們可以看出本地是沒有生成過ssh key的,我們可以通過如下的命令生成ssh key。
生成ssh key的命令如下。在以管理員的方式運行powershell程序,然后執行如下命令,**注意:**如果沒有powershell程序,就以管理員身份運行cmd程序。
C:Windowssystem32>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:Userszhangsan/.ssh/id_rsa):
Created directory 'C:Userszhangsan/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:Userszhangsan/.ssh/id_rsa.
Your public key has been saved in C:Userszhangsan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8tmUEwMEcYpAzq2OECpZ45PwO6yT9Y/jhg6q2DiQUwA zhangsan@mywinpc
The key's randomart image is:
+---[RSA 2048]----+
|E.o o++ |
|.o o . o . |
|o.= o . o |
|.B.+ + |
|=o* . S + |
|*+.o o + . |
|++=o o . |
|*=..+. |
|B+oooo. |
+----[SHA256]-----+
C:Windowssystem32>
檢查生成的ssh key
使用下面的命令來檢查生成的ssh key:
C:Windowssystem32>dir C:Userszhangsan.ssh
驅動器 C 中的卷沒有標簽。
卷的序列號是 E637-92C8
C:Userszhangsan.ssh 的目錄
2021/07/21 16:53 <DIR> .
2021/07/21 16:53 <DIR> ..
2021/07/21 16:53 1,679 id_rsa
2021/07/21 16:53 398 id_rsa.pub
2 個文件 2,077 字節
2 個目錄 2,809,282,560 可用字節
C:Windowssystem32>
通過上面的命令和輸出結果,我們可以看出,ssh key已經生成成功。
其中兩個文件的含義如下:
- id_rsa:私鑰文件,不要輕易給別人知道這個文件內容。
- id_rsa.pub:公鑰文件,可以發送給他人,或配置到其他服務器上,通過自己的私鑰,鏈接到配置在其他服務器上面的私鑰來實現遠程的免密碼登陸訪問。
登陸Gerrit配置ssh key
前面我們已經在本地準備好ssh key了,下面我把準備好的ssh key配置到我們的gerrit賬號下面。
登錄gerrit
使用自己的平臺賬號登陸gerrit的web頁面,如下所示:
打開gerrit配置選項
登錄成功后,如下所示,點擊你的姓名選擇settings菜單。
然后再次選擇SSH Public Keys選項,然后再點擊右側的Add Key按鈕,如下所示:
添加ssh key
查看本地的ssh key中的公鑰,然后把你本地C:Userszhangsan.sshid_rsa.pub文件中的內容,如下所示:
C:Windowssystem32>more C:Userszhangsan.sshid_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDj7HXYt6XPWrRpE+p3xe592fwV/EA3fMoL4CbCXbEYWTqj4ZE+621k6DgNq+RAIWu+u6aCAykmtPLCKqMxTlTeJ/hohm/bHlIXITcxuBscRNp67dpkl6kNn8IRoFJxYQbhADJwEx5nRn8qFe5BttFs+9Exs9G0bz5RDb5HJpmhDalm/8Nct5k+QrfAZ6Gzv3txgiiH5BuKf/bxuVXpTwvL+637aYDREADKOnyPang0x9aACI82q5dwPa0jqJvRGij8uwjEnXh+nmkqwZeI8ZFSCitAo8tsfhbjBKwfkV7sYmOHJnsMZRvnG0tR9QK7RXPYmlT97TYIQjEalXc5tiSL zhangsan@mywinpc
復制上面命令的輸出內容,將其粘貼到下面的文本框中,然后Add按鈕,如下所示:
查看配置ssh key的結果
添加完成public key之后,此時你的gerrit賬號下面就配置了一個public key。
驗證Gerrit的ssh key配置結果
到目前為止,我們已經把自己本地ssh key配置到了gerrit賬號下面,下面我們來使用git命令來驗證一下是否可以正常鏈接到gerrit服務器上進行代碼的拉取和推送操作。
Git的安裝
如果你本地還那樣安裝git,請參考下面的git的安裝步驟,如果已經安裝了git,則可以跳過git的安裝步驟。
驗證是否安裝了git的方式通過如下命令:
C:Windowssystem32>git
'git' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
C:Windowssystem32>
通過上面的命令和輸出結果,我們可以得知,本地目前是沒有安裝Git組件的。
在Windows上安裝Git很簡單,有以下幾種安裝方法,推薦使用第一種方式:
- 官方版本可以在 Git 官方網站下載。 打開 https://git-scm.com/download/win,下載會自動開始。 要注意這是一個名為 Git for Windows 的項目(也叫做 msysGit),和 Git 是分別獨立的項目;更多信息請訪問 http://msysgit.github.io/。
- 要進行自動安裝,你可以使用 Git Chocolatey 包。 注意 Chocolatey 包是由社區維護的。
- 另一個簡單的方法是安裝 GitHub Desktop。 該安裝程序包含圖形化和命令行版本的 Git。 它也能支持 Powershell,提供了穩定的憑證緩存和健全的換行設置。 稍后我們會對這方面有更多了解,現在只要一句話就夠了,這些都是你所需要的。 你可以在 GitHub for Windows 網站下載,網址為 GitHub Desktop 網站。
下載完成之后,右鍵以管理員的身份運行.exe文件,一路下一步即可完成Git的安裝。
安裝完成git之后,搜索找到git cmd程序,這個是在安裝完成Git之后才用的命令行程序,右鍵以管理員身份運行git cmd程序,然后通過如下命令來驗證是否安裝成功。
C:Userszhangsan>git --version
git version 2.32.0.windows.2
C:Userszhangsan>
Git的配置
上面我們完成了git的安裝,接下來我們在使用git之前,需要對git簡單的配置一下,這樣在外面提交代碼的時候。
在配置之前,可優先看一下是否已經配置了對應的參數,使用如下命令查看:
C:Userszhangsan>git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=d:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
C:Userszhangsan>
通過上面命令的輸出結果來看,在本地電腦上還沒有配置git用戶名和郵箱的全局參數。
請參考下面的命令來進行配置,需要注意的是,你需要把后面的參數換成你自己的姓名全拼音和對應的郵箱地址:
C:Userszhangsan>git config --global user.name "zhangsan"
C:Userszhangsan>git config --global user.email "zhangsan@mywinpc.com"
C:Userszhangsan>
git全局參數設置后的結果如下:
C:Userszhangsan>git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=d:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=zhangsan
user.email=zhangsan@mywinpc.com
C:Userszhangsan>
驗證gerrit的ssh鏈接
git安裝并且配置好之后,現在開始嘗試通過外面配置的ssh key免密鏈接到gerrit。
登陸gerrit的web頁面,找到我們要clone的項目,具體路徑為:Projects->List->選擇你能訪問的項目
進入下面的頁面,按步驟依次點擊下面的鏈接:
進入自己的git cmd命令行窗口,在自己用戶的目錄下,新建一個文件夾,用于存放gerrit的項目,然后進入到這個文件夾下面,粘貼上面復制的命令,然后回車執行。
如果彈出提示是否要繼續連接,輸入yes后回車,繼續鏈接。
C:Userszhangsan>mkdir gerrit_projects
C:Userszhangsan>cd gerrit_projects
C:Userszhangsangerrit_projects>git clone ssh://zhangsan@internal.devops.com:29888/my_springboot_backend && scp -p -P 29888 zhangsan@internal.devops.com:hooks/commit-msg my_springboot_backend/.git/hooks/
Cloning into 'my_springboot_backend'...
The authenticity of host '[internal.devops.com]:29888 ([10.10.10.11]:29888)' can't be established.
RSA key fingerprint is SHA256:++v37ZAKWBgE7hhrZC1teajoQqpdIBbMOnhSJyoACMc.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[internal.devops.com]:29888' (RSA) to the list of known hosts.
remote: Counting objects: 11108, done
remote: Finding sources: 100% (11108/11108)
remote: Total 11108 (delta 5684), reused 10779 (delta 5684)
Receiving objects: 100% (11108/11108), 36.92 MiB | 3.30 MiB/s, done.
Resolving deltas: 100% (5684/5684), done.
Updating files: 100% (707/707), done.
Warning: Permanently added the RSA host key for IP address '[10.10.10.11]:29888' to the list of known hosts.
commit-msg 100% 4682 41.8KB/s 00:00
close - IO is still pending on closed socket. read:1, write:0, io:000001FD5002F320
C:Userszhangsangerrit_projects>dir
驅動器 C 中的卷沒有標簽。
卷的序列號是 E637-92C8
C:Userszhangsangerrit_projects 的目錄
2021/07/21 18:10 <DIR> .
2021/07/21 18:10 <DIR> ..
2021/07/21 18:10 <DIR> my_springboot_backend
0 個文件 0 字節
3 個目錄 1,081,532,416 可用字節
C:Userszhangsangerrit_projects>cd my_springboot_backend
C:Userszhangsangerrit_projectsmy_springboot_backend>dir
驅動器 C 中的卷沒有標簽。
卷的序列號是 E637-92C8
C:Userszhangsangerrit_projectsmy_springboot_backend 的目錄
2021/07/21 18:10 <DIR> .
2021/07/21 18:10 <DIR> ..
2021/07/21 18:10 2,475 .gitignore
2021/07/21 18:10 9,443 pom.xml
2021/07/21 18:10 <DIR> script
2021/07/21 18:10 <DIR> src
2021/07/21 18:10 <DIR> upload
2 個文件 11,918 字節
5 個目錄 1,081,466,880 可用字節
C:Userszhangsangerrit_projectsmy_springboot_backend>git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
C:Userszhangsangerrit_projectsmy_springboot_backend>
通過上面的命令和輸出,我們可以已經可以成功地從gerrit上面克隆代碼倉庫到本地來。
結束語
以上就是在Windows上配置ssh key免密碼訪問gerrit的步驟,希望能幫到您。