SSH的原理與應用

SSH的原理與應用

一 SSH簡介

SSH是Secure Shell的所寫,也叫做安全外殼協議。SSH的主要目的是實現安全遠程登錄。

二 SSH工作原理

SSH的安全性比較好,其對數據進行加密的方式主要有兩種:對稱加密(密鑰加密)和非對稱加密(公鑰加密)。

對稱加密指加密解密使用的是同一套秘鑰。Client端把密鑰加密后發送給Server端,Server用同一套密鑰解密。對稱加密的加密強度比較高,很難破解。但是,Client數量龐大,很難保證密鑰不泄漏。如果有一個Client端的密鑰泄漏,那么整個系統的安全性就存在嚴重的漏洞。為了解決對稱加密的漏洞,于是就產生了非對稱加密。非對稱加密有兩個密鑰:“公鑰”和“私鑰”。公鑰加密后的密文,只能通過對應的私鑰進行解密。想從公鑰推理出私鑰幾乎不可能,所以非對稱加密的安全性比較高。

SSH的加密原理中,使用了RSA非對稱加密算法。整個過程是這樣的:(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。(2)用戶使用這個公鑰,將登錄密碼加密后,發送回來。(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

三 中間人攻擊

SSH之所以能夠保證安全,原因在于它采用了公鑰加密,這個過程本身是安全的,但是實際用的時候存在一個風險:如果有人截獲了登錄請求,然后冒充遠程主機,將偽造的公鑰發給用戶,那么用戶很難辨別真偽。因為不像https協議,SSH協議的公鑰是沒有證書中心(CA)公證的,是自己簽發的。

如果攻擊者插在用戶與遠程主機之間(比如在公共的wifi區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機性就不存在了。這種風險就是著名的"中間人攻擊"(Man-in-the-middle attack)。那么SSH協議是怎樣應對的呢?

四 口令登錄

如果是第一次登錄遠程機,會出現以下提示:

$ ssh user@host
The authenticity of host 'host (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計算,將它變成一個128位的指紋。如98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,這樣比對就容易多了。

經過比對后,如果用戶接受這個遠程主機的公鑰,系統會出現一句提示語:
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
表示host主機已得到認可,然后再輸入登錄密碼就可以登錄了。

當遠程主機的公鑰被接受以后,它就會被保存在文件~/.ssh/known_hosts之中。下次再連接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。每個SSH用戶都有自己的known_hosts文件,此外系統也有一個這樣的文件,一般是/etc/ssh/ssh_known_hosts,保存一些對所有用戶都可信賴的遠程主機的公鑰。

五 公鑰登錄

使用密碼登錄,每次都必須輸入密碼,非常麻煩。好在SSH還提供了公鑰登錄,可以省去輸入密碼的步驟。
所謂"公鑰登錄",原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。

這種方法要求用戶必須提供自己的公鑰。如果沒有現成的,可以直接用ssh-keygen生成一個:
$ ssh-keygen

運行上面的命令以后,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這里可以設置一個。
運行結束以后,在~/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是公鑰,后者是私鑰。

這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:
$ ssh-copy-id user@host

遠程主機將用戶的公鑰,保存在登錄后的用戶主目錄的~/.ssh/authorized_keys文件中。
這樣,以后就登錄遠程主機不需要輸入密碼了。

如果還是不行,就用vim打開遠程主機的/etc/ssh/sshd_config這個文件,將以下幾行的注釋去掉。
 RSAAuthentication yes   PubkeyAuthentication yes   AuthorizedKeysFile .ssh/authorized_keys

然后,重啟遠程主機的ssh服務。
Redhat6系統
service ssh restart
Redhat7系統
systemctl restart ssh
ubuntu系統
service ssh restart
debian系統
/etc/init.d/ssh restart

六 SSH端口轉發

SSH端口轉發有三種:動態端口轉發、本地端口轉發、遠程端口轉發。
這三種方式說起來有點難理解,通過例子會好理解一點。假設有三臺主機,host1、host2、host3。

動態端口轉發是找一個代理端口,然后通過代理端口去連相應的端口。動態端口轉發的好處在于通過代理端口可以去找很多需要連接的端口,提高了工作效率。比如host1本來是連不上host2的,而host3卻可以連上host2。host1可以找到host3作代理,然后通過host3去連接host2的相應端口

本地端口轉發也是找到第三方,通過第三方再連接想要連接的端口,但這種方式的端口轉發是固定的,是點對點的。比如假定host1是本地主機,host2是遠程主機。由于種種原因,這兩臺主機之間無法連通。但是,另外還有一臺host3,可以同時連上host1和host2這兩臺主機。通過host3,將host1連上host2。host1找到host3,host1和host3之間就像有一條數據傳輸的道路,通常被稱為“SSH隧道”,通過這條隧道host1就可以連上host2。

遠程端口轉發和本地端口轉發就是反過來了。假如host1在外網,host2在內網,正常情況下,host1不能訪問host2。通過遠程端口轉發,host2可以反過來訪問host1。host2和host1之間形成了一條道路,host1就可以通過這條道路去訪問host2。

七 SSH基本用法

SSH主要用于遠程登錄:
假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令就可以了。
$ ssh user@host

如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
$ ssh host

SSH的默認端口是22,也就是說,你的登錄請求會送進遠程主機的22端口。使用p參數,可以修改這個端口。
$ ssh -p 2018 user@host
上面這條命令表示,ssh直接連接遠程主機的2018端口。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容

  • ** SSH(安全外殼協議) **為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network ...
    linfree閱讀 857評論 4 7
  • SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group...
    shuff1e閱讀 1,782評論 1 11
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,781評論 18 139
  • 什么是 SSH SSH 是一種網絡協議,該協議用于計算機間通信/登錄信息的加密 使用場景主要是遠程登錄 早期,互聯...
    當當一丟丟閱讀 150評論 0 0
  • 文/夏彼得 沒有記錄的人生是不完整的,沒有整理的人生容易停滯不前。 2015年3月1日,我又一次刪除了朋友圈所有的...
    夏彼得閱讀 826評論 2 4