筆記、SSH


client-server 模型

SSH 使用 client-server 模型,也就是說,要建立一個 SSH 連線,遠端的機器必須跑一個 SSH daemon,而本地機器則要有一個 SSH client 程序。SSH daemon 會預設聽從 TCP port 22 進來的連線,並在認證後提供相對應的環境給使用者。SSH client 則負責使用 SSH protocol 來傳送認證訊息與連線細節給遠端機器。

SSH 最常見的使用情況就是開頭提到的遠端連線,不過它同時也支援 tunneling 或是也可以使用 SFTP (SSH File Transfer) 或 SCP (Secure Copy) 來進行檔案傳輸。

加密方式: public-key cryptography

在一個 public-key 結構中,每一個使用者都有兩把鑰匙:公鑰(public key)與私鑰(secret key)。

私鑰拿來做電子簽名與解密,公鑰用來讓別人確認你的簽名的正確性。

假設今天小明要使用 SSH 傳送訊息給小美,小明小美互相有彼此的公鑰與各自的私鑰

1. 小明用自己的私鑰將訊息簽名
2. 小明用小美的公鑰將訊息加密 (被加密的訊息連小明也無法還原—只有小美的私鑰可以!)
3. 小明將訊息傳給小美
4. 小美將訊息用自己的私鑰解密
5. 小美用小明的公鑰來確認這個訊息是用小明的私鑰簽名的

優點 : 可以傳送加密訊息而不需要先交換任何秘密資訊
缺點 : 如何驗證未知的公鑰。

SSH 能夠提供的保護只在確保公鑰的擁有者同時擁有相對應的私鑰,但是不能保證擁有這個公私鑰組合的人是不是壞人(中間人攻擊)。

假設今天小明與小美還沒有交換公鑰,他們就必須要先連線傳送公鑰給對方,如果小明在傳送給小美的途中有人調包,與小美建立安全連線的就不是小明了。

可以透過認證系統(authentication)抵擋

OpenSSH

SSH 本身是一個協定(protocol),而 OpenSSH 是一個 SSH 協定的開源實作,也可以說是遵守 SSH 的一組工具。

SSH vs SSL

SSL (Secure Sockets Layer),實際上已經被 TLS (Transport Layer Security) 取代了(TLS 1.0 有時也被視為 SSL 3.1)。原因是駭客差不多已經破解完了 SSL。

SSL/TLS 是 HTTPS 的幕後功臣。它們讓瀏覽器(客戶端)連上網站(伺服器端)的時候,先進行一個握手的儀式,並且使用 CA (Certificate Authority) 來進行身分確認。

差異:
1. 有無 CA 的參與: SSL/TLS 有,SSH 無
2. 用途不同: SSL/TLS 用在資料傳輸、SSH 是用來執行指令

你該知道所有關於 SSH 的那些事

#ssh






你可能感興趣的文章

React 性能優化大挑戰:一次理解 Immutable data 跟 shouldComponentUpdate

React 性能優化大挑戰:一次理解 Immutable data 跟 shouldComponentUpdate

RESTful API

RESTful API

Linkedin Java 檢定題庫  try catch 流程

Linkedin Java 檢定題庫 try catch 流程






留言討論