版本協商階段:
1 client -> server :請求鏈結
2 server -> client :ssh版本號
3 client 比較版本號,比自己高則用自己的版本號,比自己低則用server返回的版本號(確保協商的版本號雙方都能支援)
4 server收到版本號,確定是否繼續
會話,金鑰交換階段:
5 雙方傳送自己的演算法列表,計算最終使用的演算法
6 server 生成session_id,client 生成 金鑰
7 server傳送自己的公鑰給client
8 server傳送自己私鑰加密後的session_id給client
9 client現在儲存有server的公鑰和用公鑰解密的session_id
10 clinet用server的公鑰加密生成的金鑰
11 server收到金鑰,用自己的私鑰解密,現在雙發儲存了session_id和金鑰
12 接下來的資料傳輸採用金鑰加密解密,rsa用作大量的資料加密解密效能不足
密碼登入:
client 用金鑰加密自己的username和password
server收到資料用金鑰解密,認證使用者的許可權,成功登入或者拒絕接入
公鑰登入:
這裡的公鑰跟上面協商的公鑰不同,這裡的公鑰是任意一對私鑰公鑰(通常預先生成,將公鑰放到認證檔案中,將私鑰放到client的.ssh下)
client發起免密碼登入請求,用金鑰加密使用者和id_ras.pub
server解密資料到使用者目錄下的認證檔案中查詢id_ras.pub,存在則繼續認證
server傳送用金鑰和公鑰加密的質詢
client用金鑰和私鑰解密質詢,用金鑰加密質詢發給server
server校驗收到的質詢,相同認證通過
ps:1 協商階段的公鑰私鑰跟認證的公鑰私鑰不是同乙個
2 資料交流的金鑰是對稱加密
3 client 使用者目錄下哎可以有多個鑰匙對用於不同的認證,校驗的時候會自動判斷採用哪乙個鑰匙
centos:
yum install openssh-server -y #安裝ssh
service sshd start|stop|restart
/etc/ssh下的ssh_host*可以刪除,sshd啟動會重新生成
.ssh 下的金鑰對可刪除,自己生成#ssh-keygen -t rsa -p '' -f ***
/etc/ssh/sshd_config下有許多配置
是否允許root登入
是否允許無密碼登入
認證檔案
mac下超時自動斷開設定
debug:
ssh -i id_rsa [email protected] -vvv
SSH原理和運用
ssh是每一台linux電腦的標準配置。隨著linux裝置從電腦逐漸擴充套件到手機 外設和家用電器,ssh的使用範圍也越來越廣。不僅程式設計師離不開它,很多普通使用者也每天使用。雖然本文內容只涉及初級應用,較為簡單,但是需要讀者具備最基本的 shell知識 和了解 公鑰加密 的概念。如果你對它們不熟...
SSH原理和應用
注意 https與ssh不同,https的公鑰是經過證書中心公證的,必須從ca certificate authority 申請乙個用於證明伺服器用途型別的證書。使用場景 優點 缺點 socks socks 與其他型別的 不同,它只是簡單地傳遞資料報,而並不關心是何種應用協議,既可以是http請求,...
hadoop mapreduce原理和流程
參考 hadoop有不同版本之分,寫這篇文章的時候已經有版本3了,但是主要還是以版本二為主,1 2 的主要不同是在mapreduce部分 尤其是資源管理部分由原來的tasktracker jobtracker轉為了yarn,而計算部分沒變。另hdfs也沒怎麼變,作為乙個新手,試著記錄一下自己的理解吧...