1. rsa與rsa.pub
首先是rsa與rsa.pub是如何產生的,產生的命令如下:
ssh-keygen -t rsa -C "yourname@email.com"
解釋:ssh-keygen
是產生密鑰,密鑰有兩種類型rsa和dsa兩種,-t
用來指定密鑰類型,-t rsa
是將密鑰類型指定為rsa,-C
是公鑰中的備注,通常指定為自己的郵箱。
上面的命令執行后會讓你輸入密鑰的名字,通常為id_rsa,如果有多個密鑰則需要輸入不同的名字。id_rsa和id_rsa.pub。id_rsa為私有密鑰,id_rsa.pub為公有密鑰。id_rsa.pub公鑰是我們用來在Github的profile中的SSH and GPG keys中輸入的,id_rsa是我們的私鑰,當我們從Github上請求內容時,例如clone時,Github服務器會通過算法計算私有密鑰,並將計算結果與公有密鑰比對,如果不一致會提示訪問失敗。
測試是否連接成功可以使用如下命令:
ssh -T git@github.com
2. config文件
config文件主要在配置多個git賬戶時使用的,里面主要配置了訪問不同的主機(Host)時采用不同的密鑰。文件內容例如:
#公司的git地址 Host git.***.com User git Hostname git.***.com #公司的git地址 IdentityFile ~/.ssh/id_rsa #訪問公司git的SSH KEY Port *** #公司的git端口 Host github.com User git Hostname github.com #github的地址 IdentityFile ~/.ssh/id_rsa_github #訪問github的SSH KEY
3. known_hosts文件
這個文件主要是用來記錄服務器端的Host,IP以及rsa文件的。
有時候你訪問Git服務器,會報Host key verification failed,主機密鑰驗證失敗。主機就是自己的電腦了,密鑰失敗主要有兩種情況:一、RSA密鑰改了;二、known_hosts文件中存在緩存記錄,如果不是RSA的問題,那應該就是known_hosts文件的問題了,此時查看錯誤信息里有一條:
Offending ECDSA key in /Users/username/.ssh/known_hosts: 5
上面的最后一位數可能是別的,你只需要找到對應的那條記錄,刪掉即可。當然也可以直接刪掉known_hosts文件。known_hosts文件主要是用來進行緩存的,緩存主要是為了減少驗證次數,不用每次都驗證,直接讀取緩存即可。