前言
近期工作需要,所以版本管理工具要用到Git,某些操作需要ssh進行操作,在某次操作中遇到:git bash報錯:Permission denied, please try again
。經排查是ssh沒有配置我的key,所以就借著這篇文章整理了一下關于Git的安裝以及SSH配置過程。
可以外網的用戶安裝步驟
如果可以聯網的用戶直接鍵入下面這條命令即可
yum -y install git
離線用戶安裝步驟
下載git安裝包
到達下面這個地址找到Linux的安裝包即可。
https://git-scm.com/downloads
如下圖所示,首先點擊老本本下載,超導對應的Linux安裝包
如下圖找到適合自己的tar.gz包即可。
安裝Git依賴(可跳過)
安裝Git之前使用下面這段命令對需要的依賴進行安裝一下,這一步我們可以先跳過,因為現在Linux環境基本不缺乏這些依賴,我們可以在后續的步驟中找到確實的依賴然后到網上下載對應的包手動下載即可,筆者這一步只是告知讀者我們可能需要那些依賴而已。
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
解壓tar.gz包
我們將下載的git安裝包上傳到服務器上,肉鍵入下面的命令進行解壓。
tar -zxvf git-v2.8.0.tar.gz
進入解壓后的git目錄進行編譯
完成解壓后,需要對git進行編譯。
cd git-2.8.0/
鍵入下面這段命令進行解壓
make prefix=/usr/local all
安裝git
直接鍵入下面這條命令完成安裝。
make prefix=/usr/local install
查看版本號,若存在則安裝成功
git --version
如下所示,這就說明git安裝完成了。
git version 1.8.3.1
Git倉庫SSH配置
為什么需要SSH
我們日常代碼可能會通過GitHub或者gitee來管理,如果希望push和pull的速度快一些,則最好使用ssh的方式和遠程倉庫建立連接。所以完成Git安裝之后我們還需要配置SSH提升和遠程倉庫交互的速度。
創建SSH密鑰
注意: GitHub 在 2022 年 3 月 15 日之后將不再支持 RSA 算法生成的密鑰,原因是 RSA 不夠安全,而筆者之前一直是使用如下命令生成密鑰對的:
ssh-keygen -t rsa -C "郵箱"
所以,筆者在2023.7.2修改了文章的加密算法,選擇 ed25519。
對于Linux用戶,直接命令行即可。對于Windows我們直接打開git bash一樣可以執行這個操作。
ssh-keygen -t ed25519 -C "xxxxxx@qq.com"
eval `ssh-agent`
ssh-add ~/.ssh/id_ed25519
查看密鑰
Linux用戶可以通過這條命令查看密鑰,對于windows用戶可以通過everything等工具全局搜索到這個文件的位置。
cat ~/.ssh/id_ed25519.pub
將id_ed25519.pub內容復制到碼云或者GitHub
進行克隆測試,若文件克隆成功,則說明配置成功
將對應機子的公鑰貼到遠程代碼倉之后,我們不妨做個測試,建立一個項目使用ssh的方式看看能不能將項目拉下來。
git clone git@gitee.com:xxxxx/linux_git_test.git
以筆者為例,倉庫被完整的拉取下來了,這就說明本地配置成功了。
補充windows用戶的一些問題
注意:完成上述ssh key生成且配置到git上后。如果為windows且使用的是TortoiseGit使用git clone時可能會報No supported authentication methods available
的錯誤。原因很簡單,筆者在windows下生成ssh key等操作都是使用git bash,這些設置只對git bash有效。所以當我們使用git bash進行pull代碼操作時沒有任何問題,所以我們在使用TortoiseGit進行clone時需先進行如下配置
- 右鍵TortoiseGit -> Settings
- 找到network將ssh client設置為gitbash的bin目錄下的ssh.exe
參考文獻
TortoiseGit提示No supported authentication methods available錯誤: https://blog.csdn.net/Jeffxu_lib/article/details/112259246
解決GitHub報錯You‘re using an RSA key with SHA-1, which is no longer allowed. Please use a newer client: https://blog.csdn.net/wangpaiblog/article/details/124416005