SSH遠端連線原理及操作詳解

2021-07-23 16:37:21 字數 2931 閱讀 3594

首先,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:表示金鑰存放的路徑為$/.ssh/id_rsa

客戶端配置:

然後將生成的id_rsa.pub傳送給服務端並進行ssh登陸測試

登陸成功ssh驗證ok

伺服器端配置

系統自動將id_rsa.pub檔案裡的內容寫入authorized_keys中

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

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

詳細配置

遠端連線SSH

yum install openssh server 複製 service sshd start ps ef grep ssh 複製 chconfig sshd on 複製 ssh username ip 複製 kv host 別名hostname 主機名port 埠user 使用者名稱identi...

ssh遠端連線

step1 確保被連線方已經開啟ssh服務 檢視ssh服務狀態 service ssh statusstep2 埠對映 被連線方的22埠對映到連線方的空閒埠 step3 連線方主動將公鑰交給被連線方 ssh authorized keys 被連線方檔案位置 ssh id rsa.pub 連線方公鑰檔...

SSH遠端連線

上傳檔案 scp 本地檔案路徑 使用者名稱 伺服器ip 目標路徑 root vm 0 8 centos scp usr tmp test.txt root 42.192.211.250 didi desktop 上傳資料夾 scp r 本地資料夾路徑 使用者名稱 伺服器ip 目標路徑 root vm...