在gitlab代赁,github上面拷貝代碼時(shí)操禀,通常用到了git clone ssh://XXX
命令隧枫。其中ssh指secure shell
(一種安全的網(wǎng)絡(luò)協(xié)議)纬乍,git使用這種協(xié)議進(jìn)行遠(yuǎn)程加密登錄第晰。
配置SSH
git使用SSH配置锁孟, 初始需要以下三個(gè)步驟
- 使用秘鑰生成工具
生成
rsa秘鑰和公鑰 - 將rsa
公鑰添加
到代碼托管平臺(tái) - 將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)密碼分離開來(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)目