SSH遠程連接原理及操作詳解

首先,SSH是目前較爲可靠,建立在應用層和傳輸層基礎上的,專爲遠程登錄會話和其他網絡服務提供安全性。利用SSH可以有效防止遠程管理過程中的信息泄漏問題。通過SSH,可以把所有傳輸的數據進行加密,而且SSH還有一個額外的好處就是傳輸的數據是經過加密處理的,所以可以加快傳輸的速度。SSH還有其他的很多功能,他既可以替代Telnet,又可以爲FTP、PoP、甚至是PPP提供一個安全的通道。
1. 基於口令的安全驗證

這種方式使用用戶名密碼進行聯機登錄,一般情況下我們使用的都是這種方式。整個過程大致如下:
(1)客戶端發起連接請求。
(2)遠程主機收到用戶的登錄請求,把自己的公鑰發給客戶端。
(3)客戶端接收遠程主機的公鑰,然後使用遠程主機的公鑰加密登錄密碼,緊接着將加密後的登錄密碼連同自己的公鑰一併發送給遠程主機。
(4)遠程主機接收客戶端的公鑰及加密後的登錄密碼,用自己的私鑰解密收到的登錄密碼,如果密碼正確則允許登錄,到此爲止雙方彼此擁有了對方的公鑰,開始雙向加密解密。

Note:當網絡中有另一臺冒牌服務器冒充遠程主機時,客戶端的連接請求被服務器B攔截,服務器B將自己的公鑰發送給客戶端,客戶端就會將密碼加密後發送給冒牌服務器,冒牌服務器就可以拿自己的私鑰獲取到密碼,然後進行操作。因此當第一次鏈接遠程主機時,在上述步驟的第(3)步中,會提示您當前遠程主機的”公鑰指紋”,以確認遠程主機是否是正版的遠程主機,如果選擇繼續後就可以輸入密碼進錄了,當遠程的主機接受以後,該臺服務器的公鑰就會保存到 ~/.ssh/known_hosts文件中。

2.基於密匙的安全驗證
需要依靠密匙,也就是你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因爲他沒有你的私人密匙)。

Note:簡單來說,就是將客戶端的公鑰放到服務器上,那麼客戶端就可以免密碼登錄服務器了,那麼客戶端的公鑰應該放到服務器上哪個地方呢?默認爲你要登錄的用戶的家目錄下的.ssh目錄下authorized_keys 文件中(即:~/.ssh/authorized_keys)。

3.常用相關配置
SSHD服務的配置文件位於/etc/ssh/sshd_config
配置項一:PubkeyAuthentication 是否允許使用密鑰驗證方式登錄
配置項二:AuthorizedKeysFile允許登錄主機的公鑰存放文件,默認爲用戶家目錄下的 .ssh/authorized_keys
配置項三:PermitRootLogin no 禁止root遠程登錄
配置項四:PasswordAuthentication no  不允許密碼方式的登錄
配置項五:PermitEmptyPasswords no  禁止空密碼進行登錄
配置項六:PubkeyAuthentication yes 允許公鑰認證
配置項七:Port <端口號> 修改默認端口號
配置項八:UsePrivilegeSeparation yes 用戶權限設置

4.權限問題
~/.ssh文件夾 700 chmod 700 .ssh
authorized_keys文件 644 chmod 644 .ssh/authorized_keys

5.圖形解讀

這裏寫圖片描述

6.本次操作實現(本次操作是在centos7/RHEL 7上執行成功)
客戶端:192.168.122.1 用戶:root(也可以是其他用戶)
服務器:192.168.122.7 用戶:root(也可以是其他用戶)

相關操作:
ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
選項與參數:
這個命令會產生一個公鑰(~/.ssh/id_rsa.pub)和密鑰(~/.ssh/id_rsa),
-t dsa:表示使用密鑰的加密類型,可以爲’rsa’和’dsa’
-P ”:表示不需要密碼登錄
-f ~/.ssh/id_rsa:表示密鑰存放的路徑爲${USER}/.ssh/id_rsa

客戶端配置:
[root@localhost ~]# yum install openssh-clients openssh-server
這裏寫圖片描述
////然後將生成的id_rsa.pub傳送給服務端並進行ssh登陸測試
這裏寫圖片描述
////登陸成功ssh驗證ok

服務器端配置
[root@server7 ~]# yum install openssh-server openssh-clients

這裏寫圖片描述
////系統自動將id_rsa.pub文件裏的內容寫入authorized_keys中

NOTE:之後你從客戶端使用 root 用戶登錄服務器的root用戶時就不需要再輸入密碼了,但是你的一對公鑰和私鑰已經生成如果其他用戶將私鑰內容寫入~/.ssh/authorized_keys文件中,那麼這個用戶也可以通過無密碼認證登入你的root。

docker裏沒有ssh-key這個命令,只能在宿主機上生成公鑰和私鑰然後倒入docker中

參考地址:os.51cto.com/art/201209/358478.html
http://windows9834.blog.163.com
http://wenku.baidu.com/view/d94bea3c5727a5e9856a610e.html 詳細配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章