亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1030 | 回復(fù): 0
打印 上一主題 下一主題

OpenSSH 密鑰管理:RSA/DSA 認(rèn)證 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-19 13:56 |只看該作者 |倒序?yàn)g覽
 

我們中有許多人把優(yōu)秀的 OpenSSH用作古老的 telnet 和 rsh 命令的替代品,OpenSSH 不僅是安全的而且是加密的。

OpenSSH 更加吸引人的特性之一是它能夠使用基于一對(duì)互補(bǔ)的數(shù)字式密鑰的 RSA 和 DSA 認(rèn)證協(xié)議來(lái)認(rèn)證用戶。RSA 和 DSA 認(rèn)證承諾 不必提供密碼就能夠同遠(yuǎn)程系統(tǒng)建立連接,這是它的主要魅力之一。雖然這非常吸引人,但是 OpenSSH 的新用戶們常常以一種快速卻不完善的方式配置 RSA/DSA,結(jié)果雖然實(shí)現(xiàn)了無(wú)密碼登錄,卻也在此過(guò)程中開了一個(gè)很大的安全漏洞。

什么是 RSA/DSA 認(rèn)證?

SSH,特別是 OpenSSH(完全免費(fèi)的 SSH 的實(shí)現(xiàn)),是一個(gè)不可思議的工具。類似于 telnet 或 rsh , ssh 客戶程序也可以用于登錄到遠(yuǎn)程機(jī)器。所要求的只是該遠(yuǎn)程機(jī)器正在運(yùn)行 sshd ,即 ssh 服務(wù)器進(jìn)程。但是,與 telnet 不同的是, ssh 協(xié)議非常安全。加密數(shù)據(jù)流,確保數(shù)據(jù)流的完整性,甚至安全可靠的進(jìn)行認(rèn)證它都使用了專門的算法。

然而,雖然 ssh 的確很棒,但還是有一個(gè) ssh 功能組件常常被忽略、被危險(xiǎn)的誤用或者簡(jiǎn)直就是被誤解。這個(gè)組件就是 OpenSSH 的 RSA/DSA 密鑰認(rèn)證系統(tǒng),它可以代替 OpenSSH 缺省使用的標(biāo)準(zhǔn)安全密碼認(rèn)證系統(tǒng)。

OpenSSH 的 RSA 和 DSA 認(rèn)證協(xié)議的基礎(chǔ)是一對(duì)專門生成的密鑰,分別叫做 專用密鑰和 公用密鑰。使用這些基于密鑰的認(rèn)證系統(tǒng)的優(yōu)勢(shì)在于:在許多情況下,有可能不必手工輸入密碼就能建立起安全的連接。

盡管基于密鑰的認(rèn)證協(xié)議相當(dāng)安全,但是當(dāng)用戶并不完全了解這些簡(jiǎn)化操作對(duì)安全性的影響,為了方便而使用某些簡(jiǎn)化操作時(shí),就會(huì)出現(xiàn)問(wèn)題。本文中,我們將詳細(xì)討論如何正確使用 RSA 和 DSA 認(rèn)證協(xié)議,使我們不會(huì)冒任何不必要的安全性風(fēng)險(xiǎn)。在我的下一篇文章里,我將向您展示如何使用 ssh-agent 隱藏已經(jīng)解密的專用密鑰,還將介紹 keychain ,它是 ssh-agent 的前端,可以在不犧牲安全性的前提下提供許多便利。如果您一直想要掌握 OpenSSH 更高級(jí)的認(rèn)證功能的話,那么就請(qǐng)您繼續(xù)往下讀吧。

RSA/DSA 密鑰的工作原理

下面從整體上粗略的介紹了 RSA/DSA 密鑰的工作原理。讓我們從一種假想的情形開始,假定我們想用 RSA 認(rèn)證允許一臺(tái)本地的 Linux 工作站(稱作 localbox)打開 remotebox上的一個(gè)遠(yuǎn)程 shell, remotebox 是我們的 ISP 的一臺(tái)機(jī)器。此刻,當(dāng)我們?cè)噲D用 ssh 客戶程序連接到 remotebox時(shí),我們會(huì)得到如下提示:

%

ssh drobbins@remotebox

drobbins@remotebox's password:

此處我們看到的是 ssh 處理認(rèn)證的 缺省方式的一個(gè)示例。換句話說(shuō),它要求我們輸入 remotebox上的 drobbins 這個(gè)帳戶的密碼。如果我們輸入我們?cè)?remotebox 上的密碼, ssh 就會(huì)用安全密碼認(rèn)證協(xié)議,把我們的密碼傳送給 remotebox 進(jìn)行驗(yàn)證。但是,和 telnet 的情況不同,這里我們的密碼是加密的,因此它不會(huì)被偷看到我們的數(shù)據(jù)連接的人截取。一旦 remotebox 把我們提供的密碼同它的密碼數(shù)據(jù)庫(kù)相對(duì)照進(jìn)行認(rèn)證,成功的話,我們就會(huì)被允許登錄,還會(huì)有一個(gè) remotebox 的 shell 提示歡迎我們。雖然 ssh 缺省的認(rèn)證方法相當(dāng)安全,RSA 和 DSA 認(rèn)證卻為我們開創(chuàng)了一些新的潛在的機(jī)會(huì)。

但是,與 ssh 安全密碼認(rèn)證不同的是,RSA 認(rèn)證需要一些初始配置。我們只需要執(zhí)行這些初始配置步驟一次。之后, localbox 和 remotebox 之間的 RSA 認(rèn)證就毫不費(fèi)力了。要設(shè)置 RSA 認(rèn)證,我們首先得生成一對(duì)密鑰,一把專用密鑰和一把公用密鑰。這兩把密鑰有一些非常有趣的性質(zhì)。公用密鑰用于對(duì)消息進(jìn)行加密,只有擁有專用密鑰的人才能對(duì)該消息進(jìn)行解密。公用密鑰只能用于 加密,而專用密鑰只能用于對(duì)由匹配的公用密鑰編碼的消息進(jìn)行 解密。RSA(和 DSA)認(rèn)證協(xié)議利用密鑰對(duì)的這些特殊性質(zhì)進(jìn)行安全認(rèn)證,并且不需要在網(wǎng)上傳輸任何保密的信息。

要應(yīng)用 RSA 或者 DSA 認(rèn)證,我們要執(zhí)行一步一次性的配置步驟。我們把 公用密鑰拷貝到 remotebox。公用密鑰之所以被稱作是“公用的”有一個(gè)原因。因?yàn)樗荒苡糜趯?duì)那些給我們的消息進(jìn)行 加密,所以我們不需要太擔(dān)心它會(huì)落入其它人手中。一旦我們的公用密鑰已經(jīng)被拷貝到 remotebox并且為了 remotebox 的 sshd 能夠定位它而把它放在一個(gè)專門的文件(~/.ssh/authorized_keys)里,我們就為使用 RSA 認(rèn)證登錄到 remotebox上做好了準(zhǔn)備。

要用 RSA 登錄的時(shí)候,我們只要在 localbox 的控制臺(tái)鍵入 ssh drobbins@remotebox ,就象我們常做的一樣?蛇@一次, ssh 告訴 remotebox 的 sshd 它想使用 RSA 認(rèn)證協(xié)議。接下來(lái)發(fā)生的事情非常有趣。 Remotebox 的 sshd 會(huì)生成一個(gè)隨機(jī)數(shù),并用我們先前拷貝過(guò)去的公用密鑰對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行加密。然后, sshd 把加密了的隨機(jī)數(shù)發(fā)回給正在 localbox 上運(yùn)行的 ssh 。接下來(lái),輪到我們的 ssh 用 專用密鑰對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行解密后,再把它發(fā)回給 remotebox,實(shí)際上等于在說(shuō):“瞧,我 確實(shí)有匹配的專用密鑰;我能成功的對(duì)您的消息進(jìn)行解密!”最后, sshd 得出結(jié)論,既然我們持有匹配的專用密鑰,就應(yīng)當(dāng)允許我們登錄。因此,我們有匹配的專用密鑰這一事實(shí)授權(quán)我們?cè)L問(wèn) remotebox。

兩項(xiàng)注意事項(xiàng)

關(guān)于 RSA 和 DSA 認(rèn)證有兩項(xiàng)重要的注意事項(xiàng)。第一項(xiàng)是我們的確只需要生成一對(duì)密鑰。然后我們可以把我們的公用密鑰拷貝到想要訪問(wèn)的那些遠(yuǎn)程機(jī)器上,它們都會(huì)根據(jù)我們的那把專用密鑰進(jìn)行恰當(dāng)?shù)恼J(rèn)證。換句話說(shuō),我們并不需要為想要訪問(wèn)的 每個(gè)系統(tǒng)都準(zhǔn)備一對(duì)密鑰。只要一對(duì)就足夠了。

另一項(xiàng)注意事項(xiàng)是 專用密鑰不應(yīng)落入其它人手中。正是專用密鑰授權(quán)我們?cè)L問(wèn)遠(yuǎn)程系統(tǒng),任何擁有我們的專用密鑰的人都會(huì)被授予和我們完全相同的特權(quán)。如同我們不想讓陌生人有我們的住處的鑰匙一樣,我們應(yīng)該保護(hù)我們的專用密鑰以防未授權(quán)的使用。在比特和字節(jié)的世界里,這意味著沒有人是本來(lái)就應(yīng)該能讀取或是拷貝我們的專用密鑰的。

ssh 的開發(fā)者們當(dāng)然知道專用密鑰的重要性,而且他們已經(jīng)在 ssh 和 ssh-keygen 里加入了一些防范措施,以防止我們的專用密鑰被濫用。首先, ssh 被設(shè)置成了如果我們的密鑰的文件權(quán)限允許除我們之外的任何人讀取密鑰,就打印出一條大大的警告消息。其次,在我們用 ssh-keygen 創(chuàng)建公用/專用密鑰對(duì)的時(shí)候, ssh-keygen 會(huì)要求我們輸入一個(gè)密碼短語(yǔ)。如果我們輸入了密碼短語(yǔ), ssh-keygen 就會(huì)用該密碼短語(yǔ)加密我們的專用密鑰,這樣,即使專用密鑰被盜,對(duì)于那些碰巧不知道密碼短語(yǔ)的人而言,這把專用密鑰是毫無(wú)用處的。具備了這一知識(shí)后,讓我們看一下如何設(shè)置 ssh 以應(yīng)用 RSA 和 DSA 認(rèn)證協(xié)議。

ssh-keygen 細(xì)探

設(shè)置 RSA 認(rèn)證的第一步從生成一對(duì)公用/專用密鑰對(duì)開始。RSA 認(rèn)證是 ssh 密鑰認(rèn)證的最初形式,因此 RSA 應(yīng)該可以用于 OpenSSH 的所有版本,盡管這樣,我還是推薦您安裝可用的最近版本,在我寫這篇文章的時(shí)候是 openssh-2.9_p2。生成一對(duì) RSA 密鑰的方法如下:

% ssh-keygen

Generating public/private rsa1 key pair.

Enter file in which to save the key (/home/drobbins/.ssh/identity):

(hit enter)

Enter passphrase (empty for no passphrase):

(enter a passphrase)

Enter same passphrase again:

(enter it again)

Your identification has been saved in /home/drobbins/.ssh/identity.

Your public key has been saved in /home/drobbins/.ssh/identity.pub.

The key fingerprint is:

a4:e7:f2:39:a7:eb:fd:f8:39:f1:f1:7b:fe:48:a1:09 drobbins@localbox

當(dāng) ssh-keygen 要求輸入存放密鑰的缺省位置時(shí),我們敲回車鍵接受缺省的 /home/drobbins/.ssh/identity。 ssh-keygen 將把專用密鑰保存在此路徑中, 公用密鑰就存在緊臨它的一個(gè)叫做 identity.pub 的文件里。

還要請(qǐng)您注意一下 ssh-keygen 還提示過(guò)我們輸入密碼短語(yǔ)。當(dāng)時(shí)我們輸入了一個(gè)好的密碼短語(yǔ)(七位或者更多位難以預(yù)測(cè)的字符)。然后 ssh-keygen 用這個(gè)密碼短語(yǔ)加密了我們的專用密鑰(~/.ssh/identity),以使我們的專用密鑰對(duì)于那些不知道這個(gè)密碼短語(yǔ)的人將變得毫無(wú)用處。

追求快速的折衷方案

當(dāng)我們指定密碼短語(yǔ)時(shí),雖然這使得 ssh-keygen 保護(hù)我們的專用密鑰以防誤用,但是也帶來(lái)了一點(diǎn)小小的不便,F(xiàn)在,每當(dāng)我們?cè)噲D用 ssh 連接到 drobbins@remotebox 帳戶時(shí), ssh 都會(huì)提示我們輸入該密碼短語(yǔ)以便它能對(duì)我們的專用密鑰進(jìn)行解密,并使用我們的專用密鑰進(jìn)行 RSA 認(rèn)證。此外,我們輸入的不是 remotebox上 drobbins 帳戶的密碼,而是在本地機(jī)器上對(duì)專用密鑰進(jìn)行解密所需要的密碼短語(yǔ)。一旦我們的專用密鑰被解密,我們的 ssh 客戶程序就會(huì)處理其余的事情。雖然使用我們的遠(yuǎn)程密碼和使用 RSA 密碼短語(yǔ)的機(jī)制完全不同,但實(shí)際上還是會(huì)提示我們輸入一個(gè)“保密的短語(yǔ)”給 ssh 。

#

ssh drobbins@remotebox

Enter passphrase for key '/home/drobbins/.ssh/identity':

(enter passphrase)

Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

%

這里就是人們經(jīng)常會(huì)被誤導(dǎo)而導(dǎo)致追求快速的折衷方案的地方。有很多時(shí)候,僅僅是為了不必輸入密碼,人們就會(huì)創(chuàng)建不加密的專用密鑰。那樣的話,他們只要輸入 ssh 命令,立刻就會(huì)通過(guò) RSA(或是 DSA)認(rèn)證并登錄。

#

ssh drobbins@remotebox

Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

%

然而,盡管這樣很方便,但是在還沒有完全理解這種方法對(duì)安全性的影響時(shí),您不應(yīng)該使用。如果有人在某一時(shí)刻闖入了 localbox,一把不加密的專用密鑰使得他們也自動(dòng)有權(quán)訪問(wèn) remotebox以及其它所有用這把公用密鑰配置過(guò)的系統(tǒng)。

我知道您在想些什么。無(wú)密碼認(rèn)證,雖然有點(diǎn)冒險(xiǎn),可看起來(lái)的確很誘人。我完全同意。但是, 還有更好的辦法!請(qǐng)相信我,我將向您展示如何既可以享受到無(wú)密碼認(rèn)證的好處,又不必犧牲專用密鑰的安全性。在我的下一篇文章里,我還將向您展示如何熟練的使用 ssh-agent (正是它最先使得 安全無(wú)密碼認(rèn)證成為可能)。現(xiàn)在,讓我們通過(guò)設(shè)置 RSA 和 DSA 認(rèn)證為使用 ssh-agent 做好準(zhǔn)備。下面是逐步的指導(dǎo)。

RSA 密鑰對(duì)的生成

要設(shè)置 RSA 認(rèn)證,我們需要執(zhí)行生成公用/專用密鑰對(duì)的一次性步驟。我們的輸入如下:

% ssh-keygen

出現(xiàn)提示時(shí),請(qǐng)接受缺省的密鑰位置(典型的情況下是 ~/.ssh/identity 和存儲(chǔ)公用密鑰的 ~/.ssh/identity.pub),并提供給 ssh-keygen 一個(gè)安全的密碼短語(yǔ)。一旦 ssh-keygen 完成,您將會(huì)得到一把公用密鑰和一把用密碼短語(yǔ)加密的專用密鑰。

RSA 公用密鑰的安裝

接下來(lái),我們需要把正在運(yùn)行 sshd 的遠(yuǎn)程系統(tǒng)設(shè)置成使用我們的 公用 RSA 密鑰進(jìn)行認(rèn)證。典型情況下,我們通過(guò)象下面這樣把公用密鑰拷貝到遠(yuǎn)程系統(tǒng)完成這一步:

%scp ~/.ssh/identity.pub drobbins@remotebox:

由于 RSA 認(rèn)證還沒有完全設(shè)置好,所以會(huì)提示我們輸入 remotebox上的密碼。請(qǐng)您照做。然后,登錄到 remotebox 并把公用密鑰附加到文件 ~/.ssh/authorized_keys 上,如下所示:

%

ssh drobbins@remotebox

drobbins@remotebox's password:

(enter password)

Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

%

cat identity.pub >> ~/.ssh/authorized_keys

% exit

現(xiàn)在,配置過(guò) RSA 認(rèn)證以后,當(dāng)我們?cè)噲D使用 ssh 連接到 remotebox 時(shí),應(yīng)該會(huì)提示我們輸入 RSA 密碼短語(yǔ)(而不是我們的 密碼)。

%ssh drobbins@remotebox

Enter passphrase for key '/home/drobbins/.ssh/identity':

好哇,RSA 認(rèn)證的配置完成了!如果剛才沒有提示您輸入密碼短語(yǔ),您可以試驗(yàn)一下以下幾種情況。第一,嘗試通過(guò)輸入 ssh -1 drobbins@remotebox 登錄。它會(huì)讓 ssh 只應(yīng)用 ssh 協(xié)議版本 1,如果出于某種原因遠(yuǎn)程系統(tǒng)缺省設(shè)置的是 DSA 認(rèn)證的話,可能會(huì)要求這么做。如果不奏效的話,請(qǐng)確認(rèn)您的 /etc/ssh/ssh_config 里沒有寫著這么一行 RSAAuthentication no 。如果有的話,請(qǐng)您在前面加上一個(gè)“#”把這行注釋掉。另外,還可以試著同 remotebox 的系統(tǒng)管理員聯(lián)絡(luò),核實(shí)一下在他們那一端已經(jīng)啟用了 RSA 認(rèn)證,并且 /etc/ssh/sshd_config 里的設(shè)置是正確的。

DSA 密鑰的生成

ssh 協(xié)議的版本 1 使用的是 RSA 密鑰,而 DSA 密鑰卻用于協(xié)議級(jí) 2,這是 ssh 協(xié)議的最新版本。目前所有的 OpenSSH 版本都應(yīng)該既能使用 RSA 密鑰又能使用 DSA 密鑰。DSA 密鑰以如下類似于 RSA 密鑰的方式使用 OpenSSH 的 ssh-keygen 生成:

%ssh-keygen -t dsa

又會(huì)提示我們輸入密碼短語(yǔ)。輸入一個(gè)安全的密碼短語(yǔ)。還會(huì)提示我們輸入保存 DSA 密鑰的位置。正常情況下,缺省的 ~/.ssh/id_dsa 和 ~/.ssh/id_dsa.pub 就可以了。在我們一次性生成 DSA 密鑰完成后,就該把我們的 DSA 公用密鑰安裝到遠(yuǎn)程系統(tǒng)上去了。

DSA 公用密鑰的安裝

DSA 公用密鑰的安裝又是幾乎和 RSA 安裝完全一樣。對(duì)于 DSA,我們將要把 ~/.ssh/id_dsa.pub 文件拷貝到 remotebox,然后把它附加到 remotebox 上的 ~/.ssh/authorized_keys2 文件。請(qǐng)注意這個(gè)文件的名字和 RSA 的 authorized_keys 文件名不同。一旦配置完畢,輸入我們的 DSA 專用密鑰的密碼短語(yǔ)就應(yīng)該能登錄到 remotebox,而不需要我們輸入在 remotebox 上真正的密碼。

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP