天天看點

SSH指令及使用說明

ssh是個啥?

SSH是一種網絡協定,用于計算機之間的加密登入。如果一個使用者從本地計算機,使用SSH協定登入另一台遠端計算機,我們就可以認為,這種登入是安全的,即使被中途截獲,密碼也不會洩露。最早的時候,網際網路通信都是明文通信,一旦被截獲,内容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協定,将登入資訊全部加密,成為網際網路安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的标準配置。

SSH隻是一種協定,存在多種實作,既有商業實作,也有開源實作。

SSH之是以能夠為啥安全?

在于它采用了公鑰加密,整個過程是這樣的:
  1. 遠端主機收到使用者的登入請求,把自己的公鑰發給使用者。
  2. 使用者使用這個公鑰,将登入密碼加密後,發送回來。
  3. 遠端主機用自己的私鑰,解密登入密碼,如果密碼正确,就同意使用者登入。

SSH防不住啥?

這個過程本身是安全的,但是實施的時候存在一個風險:如果有人截獲了登入請求,然後冒充遠端主機,将僞造的公鑰發給使用者,那麼使用者很難辨識真僞。因為不像https協定,SSH協定的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發的。

可以設想,如果攻擊者插在使用者與遠端主機之間(比如在公共的wifi區域),用僞造的公鑰,擷取使用者的登入密碼。再用這個密碼登入遠端主機,那麼SSH的安全機制就蕩然無存了。這種風險就是著名的"中間人攻擊"(Man-in-the-middle attack)。

如何安裝SSH?

Linux預設已經安裝

SSH咋用咧?

ssh user@host

釋義:使用者名

user

,登入遠端主機

host

,(ssh預設端口是

22

,不加端口号就是預設的端口登陸)

加上端口号:

ssh -p 10000 user@host

user

,通過端口

10000

host

SSH使用捷徑:公鑰登入

使用密碼登入,每次都必須輸入密碼,非常麻煩。好在SSH還提供了公鑰登入,可以省去輸入密碼的步驟。

所謂"公鑰登入",就是使用者将自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向使用者發送一段随機字元串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公鑰進行解密,如果成功,就證明使用者是可信的,直接允許登入shell,不再要求密碼。

ssh-keygen

指令生成一個:

ssh-keygen

運作上面的指令以後,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設定密碼(passphrase),如果擔心私鑰的安全,這裡可以設定一個。

運作結束以後,在

$HOME/.ssh/

目錄下,會新生成兩個檔案:

id_rsa.pub

id_rsa

。前者是你的公鑰,後者是你的私鑰。

這時再輸入下面的指令,将公鑰傳送到遠端主機host上面:

ssh-copy-id user@host

好了,從此登入,就不不用輸入密碼了。

如果沒用的話,就打開遠端主機的

/etc/ssh/sshd_config

這個檔案,檢查下面幾行前面"#"注釋是否取掉。

      RSAAuthentication yes
      PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys           

然後,重新開機遠端主機的ssh服務。

systemctl restart sshd.service

繼續閱讀