小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux SSH 基于密鑰交換的自動(dòng)登錄原理是怎樣的?

 書*金 2017-06-24

原理簡介

SSH證書認(rèn)證登錄的基礎(chǔ)是一對(duì)唯一匹配密鑰: 私鑰(private key)和公鑰(public key)。公鑰用于對(duì)數(shù)據(jù)進(jìn)行加密,而且只能用于加密。而私鑰只能對(duì)使用所匹配的公鑰,所加密過的數(shù)據(jù)進(jìn)行解密。私鑰需要用戶單獨(dú)妥善保管。SSH 客戶端使用私鑰向服務(wù)器證明自已的身份。而公鑰是公開的,可以按需將其配置到目標(biāo)服務(wù)器上自己的相應(yīng)賬號(hào)中。

在進(jìn)行 SSH 登錄認(rèn)證時(shí),進(jìn)行私鑰和公鑰協(xié)商。如果匹配,則身份得以證明,認(rèn)證成功,允許登錄。否則,將會(huì)繼續(xù)使用密碼驗(yàn)證等其它方式進(jìn)行登錄校驗(yàn)。SSH 證書驗(yàn)證登錄配置及登錄協(xié)商過程,如下證書校驗(yàn)交互登錄流程示意圖所示:


各步驟補(bǔ)充說明如下:


生成證書

  1. 客戶端生成密鑰對(duì)。
  2. 將公鑰信息寫入目標(biāo)服務(wù)器、目標(biāo)賬戶的配置文件。該操作隱含表示了客戶端擁有對(duì)目標(biāo)服務(wù)器的控制權(quán)。


協(xié)商交互過程

  1.  客戶端向目標(biāo)服務(wù)器發(fā)送登錄請(qǐng)求。在SSH 服務(wù)啟用了證書驗(yàn)證登錄方式后,會(huì)優(yōu)先通過證書驗(yàn)證方式進(jìn)行登錄驗(yàn)證。 

  2. 目標(biāo)服務(wù)器根據(jù) SSH 服務(wù)配置,在用戶對(duì)應(yīng)目錄及文件中讀取到有效的公鑰信息。
  3. 目標(biāo)服務(wù)器生成一串隨機(jī)數(shù),然后使用相應(yīng)的公鑰對(duì)其加密。

  4. 目標(biāo)服務(wù)器將加密后的密文發(fā)回客戶端。

  5. 客戶端使用默認(rèn)目錄或 -i 參數(shù)指定的私鑰嘗試解密。

  6. 如果解密失敗,則會(huì)繼續(xù)嘗試密碼驗(yàn)證等其它方式進(jìn)行登錄校驗(yàn)。如果解密成功,則將解密后的原文信息重新發(fā)送給目標(biāo)服務(wù)器。意思類似于: “看,這是這段話的原文。我能讀懂發(fā)過來的密文,我擁有服務(wù)器的控制權(quán),請(qǐng)讓我登錄。”

  7. 目標(biāo)服務(wù)器對(duì)客戶端返回的信息進(jìn)行比對(duì)。如果比對(duì)成功,則表示認(rèn)證成功,客戶端可以登錄。如果對(duì)比失敗,則表示認(rèn)證失敗,則會(huì)繼續(xù)嘗試密碼驗(yàn)證等其它方式進(jìn)行登錄校驗(yàn)。

 

自動(dòng)登錄配置


  • 生成密鑰對(duì)
  • 密鑰配置
  • 參數(shù)與權(quán)限檢查確認(rèn)


生成密鑰對(duì)


SSH 協(xié)議 V1只使用 RSA 算法,而 SSH 協(xié)議V2 對(duì) RSA 算法和 DSA 算法都支持。目前所有OpenSSH 版本都應(yīng)該對(duì)兩種算法都支持。兩種算法的密鑰的生成指令和使用方法相同,本文僅以 RSA 算法為例進(jìn)行相關(guān)說明。

生成密鑰對(duì)的時(shí)候,可以按需決定是否設(shè)置密碼。但需要注意的是,如果設(shè)置了密碼,還需結(jié)合 ssh-agent 代理和 ssh-add 配置才能實(shí)現(xiàn)自動(dòng)登錄。同時(shí),相關(guān)配置只對(duì) ssh-agent 啟動(dòng)的相應(yīng) shell 生效,用戶退出后重新登錄時(shí)還需重新配置。所以,為簡便起見,本文以常見的、不配置密碼的情況進(jìn)行說明。

可以在任意支持環(huán)境下生成密鑰對(duì)。Windows 和 Linux 環(huán)境下,配置分別說明如下。

  • Windows 環(huán)境下生成密鑰對(duì)
  • Linux 環(huán)境下生成密鑰對(duì)


Windows 環(huán)境下生成密鑰對(duì)

在 Windows 環(huán)境下,通常借助各種應(yīng)用軟件來創(chuàng)建和管理密鑰對(duì)。以常見的NetSarang Xshell為例,請(qǐng)執(zhí)行如下步驟創(chuàng)建密鑰對(duì):

  1. 打開Xshell程序。
  2. 單擊 工具 > 用戶密鑰管理者 ,再點(diǎn)擊 生成
  3. 在打開的密鑰創(chuàng)建向?qū)е?,選擇默認(rèn)的 RSA 密鑰算法及密鑰長度(默認(rèn) 2048 位)后,點(diǎn)擊 下一步 。
  4. 程序生成密鑰對(duì)后,點(diǎn)擊 下一步
  5. 如前面所述,密鑰加密密碼留空:
  6. 點(diǎn)擊 下一步,會(huì)彈出確認(rèn)信息,點(diǎn)擊 確認(rèn)。
  7. 復(fù)制或者點(diǎn)擊 保存為文件 對(duì)公鑰信息進(jìn)行保存。
  8. 點(diǎn)擊 完成 ,在 用戶密鑰管理者 列表中能看到相應(yīng)的密鑰信息。


Linux 環(huán)境下生成密鑰對(duì)

在 Linux 環(huán)境下,通常使用系統(tǒng)自帶的 ssh-keygen 軟件來創(chuàng)建和管理密鑰對(duì)。請(qǐng)執(zhí)行如下步驟創(chuàng)建密鑰對(duì):

  1. 以任意具有 ssh-keygen 執(zhí)行權(quán)限的用戶登錄服務(wù)器。
  2. 使用如下指令,基于 rsa 算法創(chuàng)建密鑰對(duì):
    ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):        → 默認(rèn)保存路徑和文件名,可以按需修改。
    Enter passphrase (empty for no passphrase):                        → 如前面所述,不設(shè)置密碼,回車確認(rèn)即可。
    Enter same passphrase again:        → 不設(shè)置密碼,回車確認(rèn)即可。
    Your identification has been saved in /root/.ssh/id_rsa. → 創(chuàng)建的私鑰文件。
    Your public key has been saved in /root/.ssh/id_rsa.pub. → 創(chuàng)建的公鑰文件。
    The key fingerprint is:
    17:b8:0e:76:cb:57:21:3b:f2:bb:8b:a2:42:2b:54:be root@iZ233gr74jvZ
    The key's randomart image is:
    +--[ RSA 2048]----+
    |                 |
    |         .       |
    |        . o .    |
    |   .     . + .   |
    |  o   o S + .    |
    | ... . = = o     |
    |.. ..   + o      |
    |. oE  .  o .     |
    | . ... .. +o     |
    +-----------------+

    說明:

  • 如果 .ssh 目錄不存在,程序會(huì)自動(dòng)創(chuàng)建。

  • 生成的密鑰對(duì)默認(rèn)保存在當(dāng)前用戶家目錄下的 .ssh 文件夾中,文件名默認(rèn)為 id_rsa(私鑰) 和 id_rsa.pub(公鑰)。用戶可以按需設(shè)置保存路徑和文件名。


密鑰配置


生成密鑰對(duì)后,進(jìn)行如下處理:

  • 私鑰的處理
  • 公鑰的處理


私鑰的處理

私鑰用于信息校驗(yàn),請(qǐng)確保安全??梢詫⑺借€上傳到其它源服務(wù)器上,或者直接參閱前述說明創(chuàng)建新的密鑰對(duì)。


公鑰的處理

公鑰信息需要寫入目標(biāo)服務(wù)器、目標(biāo)用戶的配置文件中,默認(rèn)配置文件為對(duì)應(yīng)用戶家目錄下 .ssh 文件夾中的 authorized_keys,即:

~/.ssh/authorized_keys

可以復(fù)制公鑰信息后,直接通過 vi 等編輯器將其寫入上述文件?;蛘咄ㄟ^如下指令,在源服務(wù)器上配置寫入:

cat ~/.ssh/id_rsa.pub | ssh <用戶名>@<目標(biāo)服務(wù)器IP> 'cat >> ~/.ssh/authorized_keys';

比如:
cat ~/.ssh/id_rsa.pub | ssh root@120.26.38.248 'cat >> ~/.ssh/authorized_keys';

注意:

  • 該操作由于需要登錄目標(biāo)服務(wù)器才能完成,所以隱含表示了客戶端擁有對(duì)目標(biāo)服務(wù)器的控制權(quán)。
  • 如果修改了默認(rèn)的目錄或文件名,則需要同步修改SSH 服務(wù)配置文件(默認(rèn)為/etc/ssh/sshd_config)中的AuthorizedKeysFile 參數(shù),否則會(huì)因找不到公鑰信息而導(dǎo)致自動(dòng)登錄失敗。


參數(shù)與權(quán)限檢查確認(rèn)


要順利完成自動(dòng)登錄,還需對(duì)SSH 服務(wù)相關(guān)參數(shù)及關(guān)聯(lián)文件、文件夾的權(quán)限進(jìn)行確認(rèn)或調(diào)整。


SSH 服務(wù)參數(shù)設(shè)置

SSH 服務(wù)默認(rèn)開啟了證書認(rèn)證支持。編輯 SSH 服務(wù)配置文件(默認(rèn)為/etc/ssh/sshd_config),確保如下參數(shù)沒有顯示的置為 no。否則,將參數(shù)值修改為 yes,或者整個(gè)刪除或注釋(在最開頭添加 # 號(hào))整行配置。比如:

#RSAAuthentication yes
#PubkeyAuthentication yes

同時(shí),如前面所述,如果修改了默認(rèn)的公鑰路徑或文件名,還需確保 AuthorizedKeysFile 參數(shù)值配置的信息與其一致。

注意:如果對(duì)相關(guān)參數(shù)做了修改,需要重啟 SSH 服務(wù)生效。


相關(guān)權(quán)限設(shè)置

SSH 服務(wù)證書驗(yàn)證方式登錄,對(duì)相關(guān)目錄和文件的權(quán)限有要求。權(quán)限配置異常可能會(huì)導(dǎo)致登錄失敗。

  • .ssh 目錄的權(quán)限配置
    使用如下指令,確保 $HOME/.ssh 目錄只有所有者才有權(quán)寫入:
    chmod 700 ~/.ssh
  • authorized_keys 文件的權(quán)限配置
    使用如下指令,確保其它用戶對(duì) authorized_keys 文件沒有修改權(quán)限:?
    chmod 600 ~/.ssh/authorized_keys
  • 進(jìn)一步安全配置
    進(jìn)一步的安全設(shè)置可以將 authorized_keys 文件權(quán)限配置為 400(其他用戶沒有任何權(quán)限),并對(duì)其及 .ssh 目錄添加 immutable 位權(quán)限(防止文件被修改):
    chmod 400 ~/.ssh/authorized_keys
    chattr +i ~/.ssh/authorized_keys
    chattr +i ~/.ssh
     

自動(dòng)登錄


完成上述配置后,在客戶端即可免密碼直接登錄。說明如下:

  • Windows 環(huán)境自動(dòng)登錄
  • Linux 環(huán)境自動(dòng)登錄


Windows 環(huán)境自動(dòng)登錄

Window 環(huán)境下,還是以常見的NetSarang Xshell為例,請(qǐng)執(zhí)行如下配置進(jìn)行自動(dòng)登錄:

  1. 單擊 文件 > 屬性,打開主機(jī)屬性配置窗口。
  2. 點(diǎn)擊 連接 > 用戶身份驗(yàn)證,如下圖所示,將 方法 設(shè)置為 Public Key;將 用戶名 設(shè)置為已經(jīng)設(shè)置了證書登錄的相應(yīng)用戶名;將 用戶密鑰 設(shè)置為對(duì)應(yīng)的私鑰。最后,點(diǎn)擊 確定。
  3. 再次連接相應(yīng)服務(wù)器時(shí),無需密碼輸入用戶名和密碼,即可自動(dòng)登錄。


Linux 環(huán)境自動(dòng)登錄

Linux 環(huán)境下,在客戶端直接通過 ssh 軟件免密碼登錄:

ssh <用戶名>@<目標(biāo)服務(wù)器>

比如:
ssh root@192.168.0.1

如果修改了私鑰路徑或文件名,則需要通過 –i 參數(shù)進(jìn)行指定:

ssh –i <私鑰路徑及文件名> <用戶名>@<目標(biāo)服務(wù)器>

比如:
ssh -i /bak/my_rsa user@192.168.0.1

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多