1. 程式人生 > >SSH遠端連線原理及操作詳解

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 .sshauthorized_keys檔案 644  chmod 644 .ssh/authorized_keys 5.圖形解讀 6. ssh操作實現(本次操作是在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