如果使用GitHub比較多的朋友,對SSH Key肯定也不陌生,當我們SSH進行代碼的pull&push時,往往需要我們配置SSH Key。
如果Linux用的多朋友,肯定對SSH Key都很熟悉,當我們使用ssh命令連接其他Linux服務器時,如果沒有配置SSH Key,它會要求我們輸入密碼,這不僅繁瑣,而且受信任的網絡背景下還需要輸入密碼,明顯不太合乎情理,況且在某些沒有人為干預的情況下,不方面輸入密碼,輸入密碼這種方式將變得不可行,不安全:
這個時候我們就需要SSH Key了,接下來介紹使用OpenSSH來生成SSH Key。
首先,我們需要安裝OpenSSH。
幸運的是,Linux默認情況下已經安裝了OpenSSH,輸入ssh即可驗證是否已安裝,如果未安裝,可以使用apt-get(Ubuntu)或者yum(CentOS)來進行安裝。
而Windows環境下,OpenSSH 在 2018 年秋季已添加至 Windows,並包含在 Windows 10 和 Windows Server 2019 中,如果是其它版本的WIndows,那可能需要自己安裝配置了。
生成SSH Key
生成SSH Key使用ssh-keygen工具組件,一般的,我們生成的是RSA公/私秘鑰的SSH Key。
生成之前,首先我們最好先確認我們之前是否已經生成過了,否則重新生成將會覆蓋原來的SSH Key。
Linux:檢查/home/[用戶]/.ssh目錄(root用戶則是/root/.ssh目錄)下是否存在id_rsa和id_rsa.pub兩個文件 Windows:檢查C:\Users\[用戶]\.ssh目錄下是否存在id_rsa和id_rsa.pub兩個文件
其中,id_rsa保存的是私鑰,id_rsa.pub保存的是公鑰。
如果兩個文件存在,那么不用生成,直接使用就行了,當然,你也可以將.ssh目錄下的文件都刪除,然后重新生成SSH Key,但這樣會導致原來的SSH Key失效。
如果不存在,我們執行下面的命令開始生成SSH Key:
# 可以使用 -f 參數指定私鑰的存放文件,不指定,Linux默認保存到/home/[用戶]/.ssh/id_rsa(root用戶則是/root/.ssh/id_rsa),Windows默認保存到C:\Users\[用戶]\.ssh\id_rsa # 可以使用 -N 參數指定秘鑰 ssh-keygen -t rsa
命令執行后,在用戶目錄下的.ssh目錄中就會生成id_rsa和id_rsa.pub兩個公私秘鑰文件了。
使用SSH Key
有了SSH Key,我們就可以使用ssh免密連接了,比如我還有一台服務器:192.168.209.129,這台服務上有個用戶feng,那么我們在/home/feng/.ssh目錄下創建authorized_keys文件(如果不存在),然后將上面生成的id_rsa.pub文件的內容追加進去:
# 進入用戶主目錄 cd ~ # 如果用戶主目錄下.ssh目錄不存在,那么直接創建 mkdir .ssh # 打開authorized_keys文件,將id_rsa.pub文件的內容追加進去,然后保存退出 vim .ssh/authorized_keys
之后使用ssh連接192.168.209.129這台服務器就不需要密碼了。
我們還可以在github,gitee或者gogs等git平台使用SSH Key,在它們的管理后台都有一個SSH Key配置的選項卡頁面,以gogs為例: