一般 git 提供了 HTTPS 和 SSH(Secure Shell) 兩種認(rèn)證方式。HTTPS 比較簡(jiǎn)單牍白,只需要輸入對(duì)應(yīng)的 user 和 password 就可以了脊凰。SSH 則相對(duì)復(fù)雜一點(diǎn),需要使用 ssh 命令生成 RSA 密鑰對(duì)茂腥,將 public key 提交到服務(wù)器狸涌,本地保留 private key。SSH 還可以允許我們通過(guò) config 來(lái)管理多用戶(hù)最岗,例如:一般我們會(huì)有一個(gè)自己的 github 賬戶(hù)帕胆,通過(guò) SSH 管理;同時(shí)般渡,公司可能會(huì)有一個(gè)另外的源碼管理平臺(tái)懒豹,如 gitlab 或 gitee 等,一些公司還會(huì)在 gitlab 上搭建自有服務(wù)器驯用。SSH 如何生成密鑰對(duì)脸秽,如何通過(guò) config 管理,這里就不做過(guò)多贅述了蝴乔,網(wǎng)上隨便一搜或者 github 中都有詳細(xì)的說(shuō)明:)
SSH 的 config 格式一般如下:
Host # 登陸主機(jī)的別名
HostName # 服務(wù)器的真實(shí)地址
Identityfile # 私鑰目錄
在前不久记餐,上班摸魚(yú)逛 v2ex 的時(shí)候,看見(jiàn)一個(gè)人發(fā)了一個(gè)帖子:
在上家公司的時(shí)候薇正,我也遇到了同樣的問(wèn)題片酝。每次重啟 iTerm2 或者電腦,再 pull 或者 push 代碼铝穷,就提示要輸入密碼钠怯,無(wú)論輸入什么密碼都提示錯(cuò)誤。我一度以為是我人品問(wèn)題曙聂,后來(lái)一陣摸索瞎試之后,將 Host 改成 HostName 相同的鞠鲜,就可以解決了宁脊。也就是說(shuō),如果你公司源碼管理平臺(tái)的地址是 gitlab.xxx.xxx贤姆,只需要將 Host 和 HostName 一起改成這個(gè)榆苞,就可以了。
再回過(guò)頭來(lái)看看霞捡,config 中的 Host 和 HostName坐漏,Host 是指主機(jī)別名,HostName 是指向真實(shí)地址。也就是說(shuō)如果服務(wù)器的別名是 test赊琳,真實(shí) IP 地址是 0.0.0.0街夭,只需要將 Host 配置成 test,HostName 指向 0.0.0.0躏筏,然后再配合本地私鑰就可以登陸上去訪問(wèn)了板丽。但在實(shí)際中,公司搭建自有主機(jī)的時(shí)候趁尼,其實(shí)際主機(jī)別名跟其實(shí)際地址指向是一樣的埃碱。如果是搭建在 gitlab 中,如果只在 config 中將 Host 指向 gitlab酥泞,那么就會(huì)出現(xiàn)一直需要密碼的情況砚殿,只能重新生成密鑰對(duì)去進(jìn)行一次性的訪問(wèn)。
希望這篇文章能解決你在 SSH 使用過(guò)程中出現(xiàn)的類(lèi)似的問(wèn)題:)芝囤,Have a good day似炎!