第一次聽到ssh密鑰的時候很疑惑ssh不是struts+spring+hibernate嗎,固然不懂直接問度娘就是了。算法
而後我最初瞭解到的ssh密鑰是爲了加密登錄服務器的登錄操做,後續瞭解到還能夠實現服務器與服務器之間的遠程鏈接,一臺服務器多密鑰等等操做。spring
話很少說,直接上過程。shell
這裏的ssh不是咱們所使用的ssh框架,而是一種協議,是一種專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其餘操做平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。安全
說到密鑰就要了解一下什麼是非對稱加密算法,密鑰對就是,密鑰對有公鑰和私鑰組成,公鑰上傳到服務器,私鑰保存在客戶端。服務器
通常服務器登錄分爲兩種,一種基於口令也就是自定義的密碼,一種是基於密鑰。網絡
第一種級別(基於口令的安全驗證)遠程終端控制框架
只要你知道本身賬號和口令,就能夠登陸到遠程主機。全部傳輸的數據都會被加密,可是不能保證你正在鏈接的服務器就是你想鏈接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到「中間人」這種方式的攻擊。ssh
第二種級別(基於密匙的安全驗證)工具
須要依靠密匙,也就是你必須爲本身建立一對密匙,並把公用密匙放在須要訪問的服務器上。若是你要鏈接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求以後,先在該服務器上你的主目錄下尋找你的公用密匙,而後把它和你發送過來的公用密匙進行比較。若是兩個密匙一致,服務器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟件。客戶端軟件收到「質詢」以後就能夠用你的私人密匙解密再把它發送給服務器。加密
用這種方式,你必須知道本身密匙的口令。可是,與第一種級別相比,第二種級別不須要在網絡上傳送口令。
第二種級別不只加密全部傳送的數據,並且「中間人」這種攻擊方式也是不可能的(由於他沒有你的私人密匙)。可是整個登陸的過程可能須要10秒 。
生成密鑰的方式有不少種,這裏我借用第三方工具xshell來生成
打開xshell菜單欄-工具-新建用戶密鑰生成嚮導
默認下一步,這裏密鑰類型選擇rsa,密鑰類型有兩種,這裏不詳細說,長度可隨意,這裏默認選擇2048
等待生成,下一步
密鑰名稱自定義,通俗易懂就好,下面的加密密碼可填可不填,繼續下一步
生成完成,選擇保存爲文件,而後點擊完成,密鑰對的生成就完成了
接下來咱們登錄服務器進行配置,使用xshell登錄,這裏提一下,ssh密鑰的默認端口號是22
將公鑰上傳到cd root/.ssh/文件夾下
若是安裝lrzsz的話能夠輸入rz上傳文件,也能夠下載一個第三方工具xftp來上傳,選中本身的公鑰上傳
輸入ls 查看是否上傳成功
將公鑰的內容追加到authorized_keys文件中,mv 公鑰文件名 >> authorized_keys,cat authorized_keys查看一下是否追加成功,這裏由於我已經追加過了,因此我省略了這一部分
最後改變文件權限
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
以上基本完成了簡單的ssh密鑰配置
接下來咱們嘗試一下使用密鑰登錄,先exit退出當前服務器的登錄
選擇下方的public key,密鑰默認幫咱們選擇了,若是有其餘密鑰能夠單擊瀏覽選擇
下方的密碼就是以前說可填可不填的密碼,看本身狀況填寫,而後單擊肯定便可登錄
若是各位看官大大發現哪裏不對或者有更好的方法能夠提出來,我也是第一次接觸並不熟悉。