git ssh 配置與原理

在gitlab,github上面拷貝代碼時(shí),通常用到了git clone ssh://XXX命令。其中ssh指secure shell(一種安全的網(wǎng)絡(luò)協(xié)議),git使用這種協(xié)議進(jìn)行遠(yuǎn)程加密登錄。

配置SSH

git使用SSH配置, 初始需要以下三個(gè)步驟

  1. 使用秘鑰生成工具生成rsa秘鑰和公鑰
  2. 將rsa公鑰添加到代碼托管平臺(tái)
  3. 將rsa秘鑰添加到ssh-agent中,為ssh client指定使用的秘鑰文件
  • 使用ssh-keygen命令來(lái)創(chuàng)建密鑰對(duì), 默認(rèn)保存路徑為~/.ssh/下, 一般id_rsa為私鑰,id_rsa.pub為公鑰。
  • 使用cat ~/.ssh/id_rsa.pub命令獲取公鑰,然后拷貝到托管網(wǎng)頁(yè)上, 一般是setting(設(shè)置)——>SSH Keys里面添加
  • 對(duì)于在默認(rèn)路徑~/.ssh/下生成的id_rsa密鑰對(duì),任何ssh client是可以直接讀取到,不需要額外配置

驗(yàn)證原理

SSH登錄安全性由非對(duì)稱加密保證,產(chǎn)生密鑰時(shí),一次產(chǎn)生兩個(gè)密鑰,一個(gè)公鑰,一個(gè)私鑰,在git中一般命名為id_rsa.pub, id_rsa。

那么如何使用生成的一個(gè)私鑰一個(gè)公鑰進(jìn)行驗(yàn)證呢?

  • 本地生成一個(gè)密鑰對(duì),其中公鑰放到遠(yuǎn)程主機(jī),私鑰保存在本地
  • 當(dāng)本地主機(jī)需要登錄遠(yuǎn)程主機(jī)時(shí),本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送一個(gè)登錄請(qǐng)求,遠(yuǎn)程收到消息后,返回一個(gè)隨機(jī)生成的字符串,本地拿到該字符串,用存放在本地的私鑰進(jìn)行加密,再次發(fā)送到遠(yuǎn)程,遠(yuǎn)程用之前存放在遠(yuǎn)程的公鑰對(duì)本地發(fā)送過(guò)來(lái)加密過(guò)的字符串進(jìn)行解密,如果解密后與源字符串等同,則認(rèn)證成功。
驗(yàn)證原理

特點(diǎn)

  • ssh方式單獨(dú)使用非對(duì)稱的秘鑰進(jìn)行認(rèn)證和加密傳輸,和賬號(hào)密碼分離開(kāi)來(lái),不需要賬號(hào)也可以訪問(wèn)repo。
  • 生成和管理秘鑰有點(diǎn)繁瑣,需要管理員添加成員的public key。不能進(jìn)行匿名訪問(wèn),ssh不利于對(duì)權(quán)限進(jìn)行細(xì)分,用戶必須具有通過(guò)SSH協(xié)議訪問(wèn)你主機(jī)的權(quán)限,才能進(jìn)行下一步操作,比較適合內(nèi)部項(xiàng)目
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容