09 SSH原理與遠程登陸實現方式

1、什麼是SSH?html

  SSH是一種網絡協議,用於計算機之間的加密登陸。使用SSH協議登陸另外一臺遠程計算機,咱們就能夠認爲,這種登陸是安全的,即便被中途截獲,密碼也不會泄露。shell

 

2、LInux下的基本用法ubuntu

  SSH用於遠程登錄。假定你要以用戶名root登錄主機host,只要使用以下命令安全

ssh root@host

  若是本地用戶名與遠程用戶名一致,登錄時能夠省略用戶名網絡

ssh host

  SSH默認端口號是22,採用P參數,能夠修改這個端口。ssh

ssh -p 2222 user@host

上面這條命令表示,ssh直接鏈接遠程主機的2222端口。網站

 

3、中間人攻擊加密

  SSH之因此可以保證安全,緣由在於採用了公鑰加密。spa

  過程:rest

1 (1) 遠程主機接受到用戶的登陸請求,把本身的公鑰發送給登錄用戶
2 (2) 用戶使用這個公鑰,將登陸密碼加密後,發送回遠程主機
3 (3) 遠程主機用本身的私鑰,解密登陸密碼,若是密碼正確,就贊成用戶登陸
4 
5 
6 存在的風險:
7     若是在發送登陸請求的時候就被某些人截獲登錄的請求,而後冒充遠程主機,
    將僞造的公鑰發送給用戶,用戶難以辨真僞。不像https協議有證書認證中心(CA),SSH的認證嗾使本身簽發的。
    若是攻擊者插在用戶與遠程主機之間(好比在公共的wifi區域),用僞造的公鑰,獲取用戶的登陸密碼。
    再用這個密碼登陸遠程主機,那麼SSH的安全機制就不起做用了。

如何應對中間人攻擊?

 

4、口令登陸

1 若是第一次登錄遠程主機,沒法確認host主機的真實性,只知道它的公鑰指紋.怎麼知道這個公鑰指紋是否是想要登錄的目標主機的公鑰指紋呢?因此遠程主機必須在本身的網站上貼出公鑰指紋,以便用戶自行覈對. 沒問題後輸入密碼就能夠登陸了.
2 
3   當遠程主機的公鑰被接受之後,它就會被保存在文件$HOME/.ssh/known_hosts之中。下次再鏈接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。

 

5、公鑰登陸

  每次輸入密碼比較繁瑣.用戶將本身的公鑰存儲在遠程主機上.登錄的時候遠程主機像用戶發送一串隨機字符串,用戶用本身的私鑰加密後再發給遠程主機,遠程主機再用事先存儲好的用戶的公鑰進行解密,若是解密成功就說明用戶是可信的,直接容許登陸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服務。

  // ubuntu系統
  service ssh restart

  // debian系統
  /etc/init.d/ssh restart

http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

相關文章
相關標籤/搜索