在上一篇文章 《ssh密鑰對(duì)登錄安全嗎?原理篇》 了解了ssh密鑰對(duì)登錄原理后,接下去就是實(shí)踐的問(wèn)題了,這是大部分人更關(guān)心的知識(shí),其中也有一些隱藏的陷阱。
尖草坪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
首先 要生成一對(duì)密鑰對(duì),ssh-keygen 是 ssh 工具集中的一個(gè)工具,用于生成密鑰對(duì):
-b 是密鑰對(duì)的長(zhǎng)度,越長(zhǎng)越安全,但運(yùn)算速度就會(huì)相應(yīng)變慢,在這個(gè)例子中生成的是一個(gè) RSA 密鑰對(duì),其中 id_rsa 是公鑰(也可以自定義名字),公鑰也叫做 identity 文件,需要放到 ssh 服務(wù)器 ~/.ssh/authorized_keys 文件中(其中 ~ 符號(hào)表示想要以那個(gè)屬主用戶的身份(比如 root 用戶)登錄ssh服務(wù)器),用于證明這個(gè)密鑰對(duì)擁有訪問(wèn) ssh 服務(wù)器的權(quán)限。
在 ssh 登錄的時(shí)候,ssh 客戶端需要讀取公鑰文件,但不會(huì)傳輸。
那么 passphrase 是什么呢?是一個(gè)口令,用于保護(hù)密鑰對(duì),有了口令,即使密鑰對(duì)文件泄漏了,由于攻擊者沒(méi)有口令解密,那么密鑰對(duì)仍然是安全的。
如果圖省事,口令可以為空,如果不為空,則ssh登錄的時(shí)候需要輸入口令。
運(yùn)行完成后,生成的密鑰對(duì)默認(rèn)會(huì)保存到客戶端屬主目錄 ~/.ssh 下,為什么生成在這個(gè)目錄呢?因?yàn)榈卿涷?yàn)證的時(shí)候 ssh 客戶端會(huì)讀取屬主目錄下的公鑰文件。
接下去查看生成的密鑰對(duì)文件,運(yùn)行如下命令:
id_rsa.pub 文件就是公鑰,id_rsa 是私鑰,需要注意的就是這二個(gè)文件的權(quán)限問(wèn)題,私鑰權(quán)限必須是 600,嚴(yán)格限制權(quán)限,而 id_rsa 權(quán)限可以適當(dāng)放大,對(duì)于客戶端,~/.ssh 的目錄權(quán)限不會(huì)影響 ssh 登錄,但從安全的角度看,請(qǐng)保持 700 權(quán)限。
公鑰文件上傳到ssh服務(wù)器后,其實(shí)就可以刪除了,因?yàn)樗借€包含公鑰。
接下去 就是要將公鑰放到 ssh 服務(wù)器上,一般有三種方法:
1:ssh-copy-id
ssh-copy-id 工具專門用于將公鑰上傳到ssh服務(wù)器的authorized_keys文件中,這個(gè)工具通過(guò)口令登錄的方式上傳公鑰,運(yùn)行很簡(jiǎn)單:
ssh-copy-id 默認(rèn)會(huì)上傳 ~/.ssh/ 目錄下公鑰文件(即 identity 文件 ),ssh服務(wù)器上可能有多個(gè)用戶,那上傳到那個(gè)用戶的.ssh目錄下呢?這根據(jù) username 而定,比如 /home/username 目錄。
如果 identity 文件不在 ~/.ssh 目錄下或者名稱不是默認(rèn)的 id_rsa ,也可以通過(guò) -i 參數(shù)指定文件,比如:
如果ssh服務(wù)器上的 ssh 打開(kāi) StrictModes 嚴(yán)格模式,這個(gè)工具會(huì)更改ssh服務(wù)上的 ~/.ssh目錄, ~/.ssh/authorized_keys 文件的權(quán)限。
重點(diǎn)要注意的是,ssh服務(wù)器用戶的.ssh目錄必須是700 權(quán)限,authorized_keys 文件也必須是 700 權(quán)限,否則 ssh 登錄驗(yàn)證會(huì)失敗,下面會(huì)重點(diǎn)描述這個(gè)問(wèn)題。
2:手動(dòng)上傳公鑰
如果ssh服務(wù)器關(guān)閉了口令登錄方式,就必須使用這種方式了,重點(diǎn)要注意權(quán)限問(wèn)題。
首先拷貝 ~/.ssh/id_rsa.pub 內(nèi)容,然后登錄到ssh服務(wù)器上,再將剪貼板的內(nèi)容粘帖到 ~/.ssh/uthorized_keys 文件中(如果不存在就創(chuàng)建對(duì)應(yīng)的目錄和文件)
最后運(yùn)行下列命令:
盡量保證目錄和文件只有對(duì)應(yīng)的ssh用戶才能訪問(wèn),否則ssh登錄會(huì)失敗,原因就是為了保障安全,你總不希望自己的公鑰被ssh服務(wù)器上的其他用戶看到把?
3:使用ssh口令登錄方式手動(dòng)上傳公鑰
如果機(jī)器上沒(méi)有 ssh-copy-id 工具(Windows 10 原生 ssh 客戶端就沒(méi)有),可采用這種方式,其實(shí)也很簡(jiǎn)單,就一條命令,但能讓你了解詳細(xì)的工作過(guò)程,所以比較推薦這種方式:
最后 就是 ssh 登錄服務(wù)器,驗(yàn)證自己的公鑰是否成功上傳了,執(zhí)行下列命令:
當(dāng)然也可以指定私鑰文件,比如 :
如果登錄的時(shí)候還是讓你輸入口令,則很有可能是ssh服務(wù)器上的 ~/.ssh/authorized_keys 權(quán)限有問(wèn)題,請(qǐng)檢查下。
如果還是遇到登錄失敗的問(wèn)題,可以在ssh服務(wù)器上查看日志,比如:
相關(guān)文章:
常用密鑰,加密解密用同一個(gè)Key,安全性,防偽性,鑒權(quán)性都不好。
公鑰私鑰解決了以上的問(wèn)題。
公鑰和私鑰或者稱非對(duì)稱密鑰和對(duì)稱密鑰是密碼體制的兩種方式。私鑰體制指加解密的密鑰相同或容易推出,因此加解密的密鑰都是保密的。公鑰體制指加解密密鑰彼此無(wú)法推出,公鑰公開(kāi),私鑰保密。
由上定義可知,公鑰私鑰是兩種不同的密碼體制,而不是兩個(gè)不同的應(yīng)用或兩個(gè)不同的密鑰。因此在加密和簽名應(yīng)用中,公鑰私鑰均可以使用。
其支持者通常都專注于其卓越的性價(jià)比,但是其成功的秘密卻是廣為人知的一些實(shí)施技巧:iSCSI使用標(biāo)準(zhǔn)的TCP/IP網(wǎng)絡(luò)連接來(lái)傳輸“塊級(jí)”數(shù)據(jù),所以即使幾乎沒(méi)有存儲(chǔ)經(jīng)驗(yàn)的網(wǎng)絡(luò)管理員也感到十分輕松。
低級(jí)配置帶來(lái)的災(zāi)難
假設(shè)你為一家中小型企業(yè)工作,并且有幾臺(tái)Windows服務(wù)器,你想將其連接到iSCSI SAN上。這些服務(wù)器都是全新的,并擁有四個(gè)板載的1Gbps網(wǎng)卡,但是僅有一個(gè)網(wǎng)卡連接到了一臺(tái)交換機(jī),一臺(tái)低端的不可管理的的千兆交換機(jī)。
以這種方式連接iSCSI存儲(chǔ)器存在著幾個(gè)問(wèn)題。你將沒(méi)有交換機(jī)或網(wǎng)卡的冗余,SAN上沒(méi)有負(fù)載均衡,也沒(méi)有需要用來(lái)優(yōu)化iSCSI通信流(通過(guò)交換機(jī)的)的特性,而且,最糟的可能是,存儲(chǔ)器將會(huì)與前端的客戶端通信爭(zhēng)奪帶寬。
正確建立iSCSI
在上面的情形中,缺失的元素是很明顯的:一臺(tái)象樣的交換機(jī)。一臺(tái)優(yōu)良的交換機(jī)是iSCSI SAN的關(guān)鍵部分。確實(shí),任何千兆交換機(jī)都可用于iSCSI,但是采用低廉的不可管理的交換機(jī)會(huì)使你遺漏一些重要的特性。
隨著5G、AI、區(qū)塊鏈、大數(shù)據(jù)等新一代數(shù)字經(jīng)濟(jì)基礎(chǔ)設(shè)施的大力發(fā)展,推動(dòng)傳統(tǒng)行業(yè)不斷向數(shù)字化轉(zhuǎn)型,一切生產(chǎn)力與生產(chǎn)關(guān)系都將向數(shù)字化轉(zhuǎn)變。在這個(gè)轉(zhuǎn)變過(guò)程中,要想實(shí)現(xiàn)數(shù)據(jù)的處理及運(yùn)轉(zhuǎn),都離不開(kāi)算力,可以說(shuō)算力是經(jīng)濟(jì)發(fā)展中的基礎(chǔ)保障。作為專注于大數(shù)據(jù)領(lǐng)域的億萬(wàn)克就在不斷布局,加大產(chǎn)品算力,更好的為市場(chǎng)發(fā)展打破行業(yè)創(chuàng)新壁壘提供強(qiáng)大的推動(dòng)力。
【感興趣請(qǐng)點(diǎn)擊此處,了解一下。 】
在非對(duì)稱加密技術(shù)中,有兩種密鑰,分為私鑰和公鑰,私鑰是密鑰對(duì)所有者持有,不可公布,公鑰是密鑰對(duì)持有者公布給他人的。
公鑰用來(lái)給數(shù)據(jù)加密,用公鑰加密的數(shù)據(jù)只能使用私鑰解密
用來(lái)解密公鑰加密的數(shù)據(jù)。
對(duì)需要傳輸?shù)奈谋?,做一個(gè)HASH計(jì)算,一般采用SHA1,SHA2來(lái)獲得
使用私鑰對(duì)需要傳輸?shù)奈谋镜恼M(jìn)行加密,得到的密文即被稱為該次傳輸過(guò)程的簽名。
數(shù)據(jù)接收端,拿到傳輸文本,但是需要確認(rèn)該文本是否就是發(fā)送發(fā)出的內(nèi)容,中途是否曾經(jīng)被篡改。因此拿自己持有的公鑰對(duì)簽名進(jìn)行解密(密鑰對(duì)中的一種密鑰加密的數(shù)據(jù)必定能使用另一種密鑰解密。),得到了文本的摘要,然后使用與發(fā)送方同樣的HASH算法計(jì)算摘要值,再與解密得到的摘要做對(duì)比,發(fā)現(xiàn)二者完全一致,則說(shuō)明文本沒(méi)有被篡改過(guò)。
是將數(shù)據(jù)資料加密,使得非法用戶即使取得加密過(guò)的資料,也無(wú)法獲取正確的資料內(nèi)容,所以數(shù)據(jù)加密可以保護(hù)數(shù)據(jù),防止監(jiān)聽(tīng)攻擊。其重點(diǎn)在于數(shù)據(jù)的安全性。
公鑰登錄是為了解決每次登錄服務(wù)器都要輸入密碼的問(wèn)題,流行使用RSA加密方案,主要流程包含:
1、客戶端生成RSA公鑰和私鑰
2、客戶端將自己的公鑰存放到服務(wù)器
3、客戶端請(qǐng)求連接服務(wù)器,服務(wù)器將一個(gè)隨機(jī)字符串加密后發(fā)送給客戶端
4、客戶端根據(jù)自己的私鑰解密這個(gè)隨機(jī)字符串之后再發(fā)送給服務(wù)器
5、服務(wù)器接受到字符串之后用公鑰解密,如果正確就讓客戶端登錄,否則拒絕。這樣就不用使用密碼了。
進(jìn)入用戶目錄下.ssh目錄:
id_rsa:私鑰文件
id_rsa.pub:公鑰文件
authorized_keys: 保存其他公鑰的的文件
known_hosts: 已經(jīng)建立過(guò)連接的服務(wù)器信息,可以清空。
1.執(zhí)行命令:
此時(shí)會(huì)重新生成id_rsa私鑰文件和id_rsa.pub公鑰文件
用戶將公鑰發(fā)送給其他服務(wù)器,其他服務(wù)器將接受的公鑰保存在authorized_keys里面。持有私鑰的用戶就可以登錄服務(wù)器(authorized_keys存放自己的公鑰,用戶便可以使用私鑰從其他的地方登錄服務(wù)器)。
2.將公鑰導(dǎo)入到vps
3.修改SSHD的配置文件/etc/ssh/sshd_config
4.重啟SSH后進(jìn)行測(cè)試