Tatu Yl?nen 在 1995 年設(shè)計 SSH 協(xié)議,同年在芬蘭成立一家名為 SSH Communications Security Corporation 開發(fā)銷售 SSH 商用軟件。為消除版權(quán)影響,OpenSSH 項(xiàng)目在 1999 年 10 月第一次出現(xiàn)在開源世界,該項(xiàng)目創(chuàng)立初衷就是取代 SSH Communications Security Corporation 公司的商用 SSH 軟件,OpenSSH 最終成為了如今 Linux 系統(tǒng)標(biāo)準(zhǔn)配置,成為事實(shí)上的 SSH 協(xié)議標(biāo)準(zhǔn)實(shí)現(xiàn)物。
創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊,在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗(yàn)豐富。10年網(wǎng)站優(yōu)化營銷經(jīng)驗(yàn),我們已為1000多家中小企業(yè)提供了網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)解決方案,按需求定制網(wǎng)站,設(shè)計滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!SSH 協(xié)議支持口令與密鑰兩種安全驗(yàn)證模式,但無論那種模式,最終都需要使用密鑰來加密數(shù)據(jù)以確保安全,而 SSH 密鑰通常使用使用的算法為 RSA 和 DSA。
在 SSH 1 協(xié)議只支持 RSA 算法,SSH 2 協(xié)議支持 RSA 和 DSA 算法。從近些年來看,DSA 變得不是那么安全,因此推薦還是使用基于 RSA 算法的密鑰來建立 SSH 安全連接。
SSH 密鑰的基本使用方法是,隨機(jī)生成一個私鑰文件,這個文件只能由你妥善保管,千萬不能泄露給其他人,根據(jù)這個私鑰算出公鑰文件,將公鑰文件發(fā)送給 SSH 連接對象進(jìn)行公鑰注冊。當(dāng)你請求與對方建立連接時,連接伊始就向?qū)Ψ桨l(fā)送你的公鑰,對方將其與已注冊公鑰進(jìn)行比對,比對合格則同意建立連接,不合格則可能拒絕連接。請求連接時,對方也會向你發(fā)送他的公鑰,你也需要確認(rèn)對方公鑰是否合法。一旦雙方都確定對方身份合法后,雙方就正式建立連接,之后雙方的通信均使用對方的公鑰加密數(shù)據(jù),收到對方使用己方公鑰加密的數(shù)據(jù)后再用己方的私鑰對數(shù)據(jù)進(jìn)行解密,從而確保了通信數(shù)據(jù)的安全性。
諸如 Xshell 和 SecureCRT 這類工具都有 SSH 密鑰管理功能,可以生成和使用 SSH 密鑰進(jìn)行安全驗(yàn)證。在 Linux 中,OpenSSH 提供了基于 SSH 協(xié)議的相關(guān)工具可以使用。
SSH 1 公鑰格式$ cat id-rsa1.pub
2048 65537 22910674242901951372109700514222305911005404382729826828303733202727246271129151780809328111314142444937643708197065336344061806573173759249496873454280552699704169728818376102327988617178797568649601671735522868137145364100426211002912160142668644115040507860106304962512271803001264027359406587863651664228014572232130610186228786600276455187805301282374669236217832825274065088078401281168028793885110785700945596016775112537678694431532570328169049252968039090407234623028954479983169424889698023716686474015246450335458030057416596685148084608420001646747215709382718194528577791195697244767428069870538621149641 xavier@Qbee-X
SSH 1 公鑰格式為所有字段以單個空格符分隔,各字段依次為選項(xiàng)、位數(shù)、指數(shù)、系數(shù)、注釋。第一個字段是可選的,表示該條目(行)是否以數(shù)字開頭,選項(xiàng)字段不會以數(shù)字開頭。最后一個字段注釋,如果在生成密鑰時沒有給定注釋,默認(rèn)注釋為密鑰的創(chuàng)建者(一般就是 username@hostname 這種格式),注釋僅僅是提供給用戶查看密鑰時作為一個辨識標(biāo)記,在 SSH 使用中沒有任何作用。
SSH 2 公鑰格式$ cat id-rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmg/9Hoc98c6AIlEPYK6VqE3ZTlMlfXqn2VgU0NAPXeRmYX+jHYZXA5AxMNTD8KgZIuilK23qzzKBy0hgoO9DDpsBg98Pf4NLkHjTcjpPFX1TBD6RWO/OX/g4uN+gZH1/zoREJa4fit8SSG2V2GoQkqrhfRYCy+a9mQX29ZvOLfYK/aMVjb+yfzLJychdvV3CQkDvkd5R/DHNU6ZQ3pyIEjA/cUQqqmgxQj0f72y8IXv8zesXtjXaaKG17R2oSN1MNDZo/y4m426MYxl4mMQMvM5yR3UvhD93pgNgaR8LY/vspcIeE6cJZsGl21oYtrDZ/GdmF5ulMGwjIDfTJRLvb xavier@Qbee-X
SSH 2 公鑰格式為所有字段以單個空格符分隔,各字段依次為選項(xiàng)、密鑰類型(keytype)、base64編碼后的密鑰、注釋。第一個字段是可選的,表示該條目(行)是否以數(shù)字開頭,選項(xiàng)字段不會以數(shù)字開頭。最后一個字段注釋,如果在生成密鑰時沒有給定注釋,默認(rèn)注釋為密鑰的創(chuàng)建者(一般就是 username@hostname 這種格式),注釋僅僅是提供給用戶查看密鑰時作為一個辨識標(biāo)記,在 SSH 使用中沒有任何作用。
密鑰類型(keytype)可能是 ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-ed25519, ssh-dss 或 ssh-rsa。
SSH 2 - IETF SECSH 公鑰格式---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAABIwAAAIEAp7drPA+ZGAZtKNqbVxYWU5
lYPhS5HPZbyozA+KgxPhOLHI1BVoxQfsGae2OUWoy8bpzPib+U
ukILHyuEyct9RWv+3OVgEzxuq4KO9y3sK1pdxycvsKwWgXPiis
LVO3Zf9Dz7hR0wKzC3+IOMXfDpcEyHRVN4sNsCtPXa8BVbSys=
---- END SSH2 PUBLIC KEY ----
IETF 規(guī)定的 SSH 公鑰格式被定義在 RFC4716 文件,該規(guī)范規(guī)定:
起始行和結(jié)束行必須分別是:
起始行:
---- BEGIN SSH2 PUBLIC KEY ----
結(jié)束行:
---- END SSH2 PUBLIC KEY ----
可以添加其他頭部,例如注釋 Comment: user@example.com。詳情參見 RFC4716。
附:
1. RFC4716
2. OpenBSD SSHD Manual