1. 前言
Git 已經成為我們開發最流行的版本控制工具了,Git 支持多種傳輸協議,其中最常用的就是https 和 ssh,平常我們用 https 比較多,這種方式 pull 和 push 代碼都要輸入賬戶密碼,非常不方便。那麼有沒有更加方便而且安全的方式呢?當然有!ssh 方式可以做到這一點。
2. Git 中的 ssh
公有 Git 服務諸如 GitHub、Gitee、Coding、Gitlab 等都提供了
ssh 功能。通過 Gitlab 、Gogs、Gitea 搭建的私有 Git 服務也都有 ssh 功能。一般我們都可以在對應的設置 中找到。以 Gitee 為例:那麼如何生成 ssh 公鑰呢?
3. ssh 公鑰的生成
ssh 生成公鑰的算法有很多種,我們通常使用 RSA 算法來生成密鑰對。確保你在不同操作系統的用戶目錄 ~/.ssh 下沒有 id_rsa 和 id_rsa.pub ,如果有就說明你已經生成了無需再生成。針對 Linux\\Mac 和Windows 和我們來走一下流程。
3.1 Linux\\Mac 為例
命令行執行:
<code>ssh-keygen -t rsa -b 4096 -C "替換為常用email地址"/<code>
後面讓你輸入密碼你可以輸入一個,或者一路 enter 按到底直接生成。生成完畢後執行以下命令查看公鑰:
<code> cat ~/.ssh/id_rsa.pub/<code>
切記一定要帶 .pub 後綴,否則則為私鑰。然後出現以 ssh-rsa 開頭的字符串就是公鑰:
<code>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDBYgnpCY9j/xhhZO4ryy7YrJRRUXydbVUyi8dSfyn5obFD0iJhqPCF1jk5LZuryhsmy
…………………(此處省略)
mH1eqd4SMXO8fJoaM7JOWYSs/xgRK9bw== [email protected]
/<code>
3.2 Windows 下生成 ssh
如果你本地安裝有 Git Bash 方法可以按照上面去模仿即可。 Bash 可以去你 Git 安裝目錄找,它也是一種 Shell 操作界面。然後可以按照 3.1 的方法生成。Window10 某個更新以後開始內置了 ssh 服務。以管理員身份打開命令行輸入 ssh 如果出現了提示命令說明你已經開啟了 ssh 服務。如果沒有則需要你手動開啟。在 應用和功能 選項中搜索 openssh 選擇客戶端或者服務器都可以:
安裝後需要重啟,重啟後打開命令行,輸入 ssh 進行檢查即可。然後就可以按照 3.1 的方式生成公鑰了。
附 Win 下開啟/關閉 ssh 命令:
<code>net start sshd
net stop sshd/<code>
4. 配置
我們生成了密鑰對之後將 id_rsa.pub 的所有內容複製並填寫到 公鑰 一欄中配置好我們生成的公鑰,Git 服務端就認可我們當前的主機了。我們就能以 git@ hostname:user/project.git 的形式進行無密碼訪問遠程 Git 倉庫了。
閱讀更多 碼農小胖哥 的文章