天天看點

【Linux配置】SSH 原理及簡單使用

SSH 原理及簡單使用

1,SSH 概念

SSH(Secure Shell,SSH)即安全外殼協定,是專為遠端登入會話而提供的一種安全性協定,預設端口 22 。注意差別于Talnet(遠端登入)、FTP (檔案傳輸)等明文傳輸協定。

SSH 協定的實作一般有商業實作和開源實作。我們主要讨論的是針對于 OpenSSH 的開源實作。

OpenSSH 是一個開源庫,是基于 OpenSSl 密碼庫實作的一個安全遠端登入協定,而 OpenSSL 是一個 C 語言實作的密碼庫,提供了相當豐富的密碼學元件。具體可參考文末相關連結。

2,SSH 原理

首先了解基本的登入模式:

Client 向 Server 提供密碼并得到确認後,即認證成功可以登入。但這裡的問題是,密碼的安全性問題?認證的安全性問題?SSH 使用了公鑰密碼機制提升安全性。即 Server 自己生成一對公私鑰,并把公鑰安全的發送給 Client,使用自己的私鑰進行驗證。當然,這個認證是互相的,用戶端也要認證服務端。同時,這裡注意差別于 HTTPS 中基于 CA 的認證模式。

但是安全的發送過程,可能會面臨着中間人攻擊的情況。目前較好的解決辦法是,由用戶端足确認目标伺服器的公鑰是否可信,一旦可信就會把 Host 加入自己的 known_hosts 中。比如可能會出現下面的情況:

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
           

上面表明,是否授信遠端主機的公鑰(RSA生成的公鑰有1024位,這裡取得是經過MD5的指紋資訊)。

此時輸入yes,就會出現下面資訊:

Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts. 
Password: (enter password) 
           

表明用戶端已經确認連接配接,遠端主機會被加入到 known_hosts 中,然後輸入密碼即可完成登入。

3,SSH 免密登入

每次登入都要輸入密碼特别不友善,尤其是在叢集環境中,各主機之間的通行非常頻繁的情況下。SSH 提供了免密登入政策。

基本流程:

【Linux配置】SSH 原理及簡單使用

4,SSH 實戰

配置伺服器免密服務的基本的流程為:

1,進入用戶端家目錄

.ssh

檔案夾下

cd ~/.ssh
           

2,生成公私鑰

ssh-keygen-t rsa
           

3,拷貝公鑰到目标伺服器上

ssh-copy-id xxx
           
【Linux配置】SSH 原理及簡單使用
  • authorized_keys:存放授權的用戶端公鑰;
  • id_rsa:存放私鑰;
  • id_rsa.pub:存放公鑰;
  • known_hosts:存放已經通路過的主機資訊。

使用時,隻需執行 ssh xxx 即可登入目标伺服器。

類似的,在使用 git 登入 github 時,也會進行類似 SSH 免密授權操作。

【參考連結】

  • http://www.openssh.com/
  • https://www.openssl.org/
  • https://www.cnblogs.com/diffx/p/9553587.html

繼續閱讀