SSH 是 Secure Shell 縮寫,是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,為計(jì)算機(jī)上運(yùn)行的 Shell 提供安全的傳輸和使用環(huán)境。
囊謙網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),囊謙網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為囊謙上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的囊謙做網(wǎng)站的公司定做!傳統(tǒng)的 rsh, FTP, POP 和 Telnet 網(wǎng)絡(luò)協(xié)議因?yàn)閭鬏敃r采用明文,很容易受到中間人方式攻擊。為了防止遠(yuǎn)程傳輸信息出現(xiàn)泄露,SSH 協(xié)議支持對傳輸?shù)臄?shù)據(jù)進(jìn)行加密,因此它還能防止 DNS 和 IP 欺騙。另外采取 SSH 協(xié)議傳輸?shù)臄?shù)據(jù)可以進(jìn)行壓縮,所以可以加快數(shù)據(jù)傳輸速度。最初 SSH 協(xié)議由芬蘭的 Tatu Yl?nen 在 1995 年設(shè)計(jì)開發(fā),目前屬于 SSH Communications Security 擁有,由于版權(quán)原因,1999 年 10 月開源軟件 OpenSSH 被開發(fā)出來,它已成為事實(shí)上的 SSH 協(xié)議標(biāo)準(zhǔn)實(shí)現(xiàn)(SSH Communications Security 提供的 SSH 軟件使用不同于 OpenSSH 的私鑰格式),也是目前 Linux 標(biāo)準(zhǔn)配置。
基本框架SSH 協(xié)議主要分成三個協(xié)議:
1. 傳輸層協(xié)議(The Transport Layer Protocol):傳輸層協(xié)議提供服務(wù)器認(rèn)證,數(shù)據(jù)機(jī)密性,信息完整性等支持。
2. 用戶認(rèn)證協(xié)議(The User Authentication Protocol):用戶認(rèn)證協(xié)議為服務(wù)器提供客戶端的身份鑒別。
3. 連接協(xié)議(The Connection Protocol):連接協(xié)議將加密的信息隧道劃分成若干邏輯通道,提供給更高層應(yīng)用協(xié)議使用。
驗(yàn)證方式SSH 提供兩種安全驗(yàn)證方式:
1. 基于口令:客戶端使用賬號和口令登錄服務(wù)器,所有傳輸數(shù)據(jù)都會被加密。但可能存在偽造服務(wù)器冒充真正的服務(wù)器與客戶端進(jìn)行交互,不能避免中間人攻擊。
2. 基于密鑰:使用一對密鑰(私鑰 + 公鑰),將公鑰放置到服務(wù)器注冊。當(dāng)用戶從客戶端登錄服務(wù)器時,服務(wù)器會接到使用密鑰(即注冊在服務(wù)器的公鑰)進(jìn)行安全驗(yàn)證請求,服務(wù)器首先比對從客戶端發(fā)送過來的公鑰與在己方注冊的公鑰是否一致,如果一致,服務(wù)器會使用該公鑰加密數(shù)據(jù)向客戶端發(fā)起 "挑戰(zhàn)"[1],從而避免中間人攻擊。
OpenSSH 提供的工具OpenSSH 提供了以下幾個工具:
1. ssh:實(shí)現(xiàn) SSH 協(xié)議,用以建立安全連接,它替代了較早的 rlogin 和 Telnet。
2. scp, sftp:利用 SSH 協(xié)議遠(yuǎn)程傳輸文件,它替代了較早的 rcp。
3. sshd:SSH 服務(wù)器守護(hù)進(jìn)程,運(yùn)行在服務(wù)器端。
4. ssh-keygen:用以生成 RSA 或 DSA 密鑰對。
5. ssh-agent, ssh-add:管理密鑰的工具。
6. ssh-keyscan:掃描網(wǎng)絡(luò)中的主機(jī),記錄找到的公鑰。
生成密鑰對使用 ssh-keygen 生成一個密鑰對(私鑰 + 公鑰):
$ ssh-keygen
Generating public/private rsa key pair.
Enterfile in which to save the key (/home/xavier/.ssh/id_rsa): id_rsa
Enter passphrase (emptyfor no passphrase):
Enter same passphrase again:
Your identification has been savedin id_rsa.
Your public key has been savedin id_rsa.pub.
The key fingerprint is:
ce:89:59:3d:a1:3a:99:b3:01:46:78:0f:d1:cc:d4:fa xavier@Qbee-X
The key's randomart image is:+--[ RSA 2048]----+
| .=.. |
| . .+ . |
| . + . . |
| o o. o . |
| o ..S o |
| . . XE. . |
| X + |
| = |
| . |
+-----------------+
ssh-keygen 默認(rèn)使用 RSA 算法,長度為 2048 位,生成一個私鑰文件 id_rsa 和一個公鑰文件 id_rsa.pub,兩個文件默認(rèn)保存在用戶的 ~/.ssh 目錄下。你可以在命令行交互過程指定密鑰文件路徑,也可以設(shè)置密鑰口令,如果設(shè)置了密鑰口令,在使用密鑰進(jìn)行登錄時,需要輸入口令。
ssh-keygen 支持 -f 選項(xiàng)指定密鑰文件路徑,-t 選項(xiàng)指定加密算法,-b 選項(xiàng)指定密鑰長度,-N 選項(xiàng)指定密鑰口令,-C 選項(xiàng)指定注釋。
只要將公鑰文件 id_rsa.pub 提交給服務(wù)器,讀取該文件包含的字符串并追加到服務(wù)器端用戶的主目錄 ~/.ssh/authorized_keys 文件中,持有私鑰的客戶端就可以使用 SSH 協(xié)議登錄服務(wù)器了。
SSH 1 協(xié)議支持 RSA 算法,SSH 2 協(xié)議支持 RSA 和 DSA 兩種算法。ssh-keygen 使用 -t 選項(xiàng)來指明加密算法,rsa1 表示支持 SSH 1,dsa, ecdsa, rsa 表示支持 SSH 2。
生成支持 SSH 1 的 RSA 密鑰:
$ ssh-keygen -t rsa1 -f id-rsa1
Generating public/private rsa1 key pair.
Enter passphrase (emptyfor no passphrase):
Enter same passphrase again:
Your identification has been savedin id-rsa1.
Your public key has been savedin id-rsa1.pub.
The key fingerprint is:
c8:81:8f:dc:cd:ba:86:d2:56:e8:d5:13:3f:57:a5:f9 xavier@Qbee-X
The key's randomart image is:+--[RSA1 2048]----+
| |
| . .|
| . . + |
| . = =. + |
| o.=.So . . |
| . o.o o . E|
| o +. . o |
| . = .. |
| o .. |
+-----------------+
從私鑰文件生成公鑰文件:
$ ssh-keygen -y -f id-rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmg/9Hoc98c6AIlEPYK6VqE3ZTlMlfXqn2VgU0NAPXeRmYX+jHYZXA5AxMNTD8KgZIuilK23qzzKBy0hgoO9DDpsBg98Pf4NLkHjTcjpPFX1TBD6RWO/OX/g4uN+gZH1/zoREJa4fit8SSG2V2GoQkqrhfRYCy+a9mQX29ZvOLfYK/aMVjb+yfzLJychdvV3CQkDvkd5R/DHNU6ZQ3pyIEjA/cUQqqmgxQj0f72y8IXv8zesXtjXaaKG17R2oSN1MNDZo/y4m426MYxl4mMQMvM5yR3UvhD93pgNgaR8LY/vspcIeE6cJZsGl21oYtrDZ/GdmF5ulMGwjIDfTJRLvb
修改私鑰文件的注釋和口令(僅支持 RSA1,如果原 RSA1 文件含有注釋或口令,才會提示修改相應(yīng)的注釋或口令。):
$ ssh-keygen -c
Enterfile in which the key is (/home/xavier/.ssh/id_rsa): id-rsa1
Key now has comment'Hello'
Enter new comment: HelloWorld
The commentin your key file has been changed.
修改私鑰文件口令(命令:ssh-keygen -p [-P old_password] [-N new_password] [-f keyfile]):
$ ssh-keygen -p -f id-rsa
Key has comment'id-rsa'
Enter new passphrase (emptyfor no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
如果想要取消口令,只需要在輸入密碼為空即可。私鑰口令只是對私鑰文件的訪問權(quán)限,修改和刪除口令并不影響私鑰內(nèi)容。
公鑰指紋由于公鑰長度一般都是 1024 或 2048 個字節(jié),不方便進(jìn)行比對,因此通常使用一個較短的字符串來代表它,這個就是公鑰指紋。公鑰指紋的計(jì)算方法一般就是對公鑰字符串進(jìn)行 MD5 或者 SHA-1 等摘要計(jì)算得到,一個 1024 字節(jié)長度的 RSA 算法公鑰,經(jīng)過指紋計(jì)算后得到的公鑰指紋只有 128(MD5摘要)字節(jié)或者 160(SHA-1)字節(jié)。
你可以使用 ssh-keygen 工具來計(jì)算公鑰指紋:
$ ssh-keygen -l -f id_rsa.pub
2048 ce:89:59:3d:a1:3a:99:b3:01:46:78:0f:d1:cc:d4:fa xavier@Qbee-X (RSA)
如果客戶端是第一次訪問服務(wù)器,系統(tǒng)會提示以下信息:
$ ssh xavier@192.168.1.5
The authenticity of host'192.168.1.5 (192.168.1.5)' can't be established.RSA key fingerprint is 1c:bb:f1:e5:40:34:75:d3:37:b7:8f:b3:4a:6f:b6:47.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added'192.168.1.5' (RSA) to the list of known hosts.
這是因?yàn)榭蛻舳说谝淮芜B接目標(biāo)服務(wù)器,客戶端沒有目標(biāo)服務(wù)器的公鑰存根,因此系統(tǒng)告訴你目前正在連接的服務(wù)器所使用的公鑰指紋(公鑰指紋代表著公鑰,但長度較短便于識別),需要你看看這個指紋是否正確,如果正確就正式建立連接,如果指紋可疑就不要建立連接。
這個公鑰指紋是基于服務(wù)器的公鑰計(jì)算而來,服務(wù)器的公鑰一般保存在 /etc/ssh/ssh_host_rsa_key.pub 文件中。如果你事先知道服務(wù)器公鑰,那么你自然可以輕松識別指紋并決定是否建立連接,但如果是在互聯(lián)網(wǎng)中連接陌生服務(wù)器,你并知道目標(biāo)服務(wù)器的公鑰,這樣就無法識別當(dāng)前指紋是不是惡意的中間人服務(wù)器提供的,為了解決這個問題,服務(wù)器端管理員需要提前公示自己的公鑰,或者是從證書機(jī)構(gòu)申請證書,用戶只要使用公示的公鑰,或者去頒證機(jī)構(gòu)認(rèn)證下載證書就可以識別當(dāng)前連接的服務(wù)器是否是虛假的中間人。
一旦你確認(rèn)指紋合法性并建立連接后,客戶端就會將服務(wù)器的公鑰保存在 $HOME/.ssh/known_hosts 文件中,下次連接時系統(tǒng)自動將對方發(fā)過來的公鑰與已知公鑰進(jìn)行比對,如果正確就直接建立連接,如果不正確將給出警告提示說公鑰不匹配并阻止建立連接。
當(dāng)由于公鑰不匹配而無法建立連接時,可能有幾個原因,一是目標(biāo)服務(wù)器更換了公鑰;二是目標(biāo)服務(wù)器更換了 IP 地址或者域名,導(dǎo)致你連接到其他主機(jī)致使公鑰不匹配;三是有惡意攻擊者截?cái)嗔诉B接,正在使用偽造的主機(jī)地址試圖欺騙你建立連接。無論是哪個原因,你都應(yīng)該保持警惕,謹(jǐn)慎建立連接。
注:
[1] "挑戰(zhàn)" 是指服務(wù)器使用公鑰加密數(shù)據(jù)發(fā)送給客戶端,客戶端使用配對的私鑰對數(shù)據(jù)進(jìn)行解密,客戶端成功解密后將答案發(fā)回服務(wù)器進(jìn)行驗(yàn)證,結(jié)果一致則挑戰(zhàn)成功,表示客戶端是合法用戶可以進(jìn)行安全通信。
附:
1. RSA 算法
網(wǎng)頁名稱:[Linux]在LinuxCLI使用ssh-keygen生成RSA密鑰-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.rwnh.cn/article4/dscgie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、搜索引擎優(yōu)化、面包屑導(dǎo)航、企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容