1. 程式人生 > >ssh 協議

ssh 協議

SSH,英文全程是Secure Shell Protocol(安全的殼程式協議)。SSH協議是基於應用層的協議.為遠端登入會話和其他網路服務提供安全性的協議.SSH使用最多的是遠端登入和傳輸檔案.傳統協議(ftp,telnet 等明文傳輸資料)相較於此都是不安全的.SSH 在傳輸過程中的資料是加密的.安全性更高.

一.工作過程:

1>伺服器建立公鑰,遠端伺服器會在/ etc/ssh 目錄下生成名為 ssh_host_rsa_key.pub的私鑰,同時生成名為ssh_host_rsa_key的私鑰.這一對就是遠端伺服器的公鑰與私鑰.以後每次啟動 sshd 服務的時候,系統會自動在此路徑下查詢公鑰

2>電腦作為Client請求連線. linux/mac 系統,可以直接通過自帶的 shell 連線.指令為 ssh [email protected], 如彩通阿里雲服務.登入指令為 ssh [email protected]

3>Server 會發送公鑰給Client.即Server接到請求後,會把公鑰傳給客戶端使用.

4>Client Server 傳來的公鑰記錄在~/. ssh/known_hosts 中.用於通訊是的公鑰比對

5>Client可以生成自己的祕鑰對,然後將自己的公鑰傳送給Server.這樣服務端就有客戶端的公鑰+服務端自己的私鑰.客戶端有服務端的公鑰+客戶端自己的私鑰.組成了非對稱加密系統.

6>開始雙向加解密.服務端傳送資料:用客戶端的公鑰加密.客戶端收到資料後用自己的私鑰解密,得到資料.客戶端傳送資料:用服務端的公鑰加密資料.服務端接收到資料後用自己的私鑰解密得到資料.

二.認證方式:

 密碼認證和公鑰認證.

密碼認證: 需要輸入賬號密碼進行認證登入

  1.  Client請求Server,Server將他的公鑰返回給Client
  2.  Client將公鑰加密密碼,並且發給Sever,Sever使用私鑰後解出密碼,於是Client和Server擁有共同約定的密碼
  3.  Client使用密碼加密資料內容,發給Server,Server使用已知的密碼,來解出裡面的內容

公鑰認證: 需要客戶端生成一對公鑰.使用 ssh-keygen 生成並儲存在~/. ssh 目錄下,將公鑰配置到伺服器上,以後登入認證的時候.客戶端傳送公鑰給伺服器.伺服器進行公鑰比對即可通過認證,無需輸入密碼.

生成 ssh 祕鑰對的方式:

1.進入系統. ssh 資料夾下.如果不存在,需要新建改資料夾

2.在該資料夾下生成祕鑰對,

三.使用 SSH 祕鑰對來進行對遠端伺服器的免密登入配置

1.客戶端在. ssh 資料夾下生成祕鑰對以後.需要將公鑰拷貝到伺服器~/. ssh/authorized_keys 檔案中.(備註: ~/ 代表的路徑為個人目錄的絕對路徑)

2.如果沒有改資料夾或者該檔案.需要手動建立

3.建立.ssh目錄下的 authorized_keys 檔案後,將客戶端公鑰拷貝到該檔案內.仍舊無法進行免密登入時,請回查.ssh資料夾和 authorized_keys 檔案的讀寫許可權. 為了系統安全, .ssh資料夾訪問許可權必須設定為700,而 authorized_keys 檔案的訪問許可權必須設定為 600.

命令列:

  chmod 700 -R .ssh

  chmod 600 authorized_keys 

註釋: 

chmod -R lamport:users *  

-rw------- (600) -- 只有屬主有讀寫許可權。  

-rw-r--r-- (644) -- 只有屬主有讀寫許可權;而屬組使用者和其他使用者只有讀許可權。  

-rwx------ (700) -- 只有屬主有讀、寫、執行許可權。  

-rwxr-xr-x (755) -- 屬主有讀、寫、執行許可權;而屬組使用者和其他使用者只有讀、執行許可權。  

-rwx--x--x (711) -- 屬主有讀、寫、執行許可權;而屬組使用者和其他使用者只有執行許可權。  

-rw-rw-rw- (666) -- 所有使用者都有檔案讀、寫許可權。這種做法不可取。  

-rwxrwxrwx (777) -- 所有使用者都有讀、寫、執行許可權。更不可取的做法。  

4.如上配置下,可以再次驗證是否可以免密登入.如果依舊失敗.可以檢查遠端伺服器配置, ssh 配置檔案的地址為/etc/ssh 內ssh_config 檔案.

配置許可權為  :

PubkeyAuthentication yes

RSAAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys  (非必須.有些系統不支援)

然後重啟 sshd 服務即可.