最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解linux SSH登錄流程

 更新時(shí)間:2017年12月08日 08:43:52   作者:JayChen  
本篇文章通過(guò)秘匙生成等問(wèn)題詳細(xì)分析了linux里SSH登錄流程,有需要的朋友參考一下吧。

本文給大家詳細(xì)介紹了ssh 密鑰登錄遠(yuǎn)程服務(wù)器流程和注意事項(xiàng),以下是詳細(xì)內(nèi)容:

密鑰登錄比密碼登錄安全,主要是因?yàn)樗褂昧朔菍?duì)稱(chēng)加密,登錄過(guò)程中需要用到密鑰對(duì)。整個(gè)登錄流程如下:

遠(yuǎn)程服務(wù)器持有公鑰,當(dāng)有用戶(hù)進(jìn)行登錄,服務(wù)器就會(huì)隨機(jī)生成一串字符串,然后發(fā)送給正在進(jìn)行登錄的用戶(hù)。
用戶(hù)收到遠(yuǎn)程服務(wù)器發(fā)來(lái)的字符串,使用與遠(yuǎn)程服務(wù)器公鑰配對(duì)的私鑰對(duì)字符串進(jìn)行加密,再發(fā)送給遠(yuǎn)程服務(wù)器。
服務(wù)器使用公鑰對(duì)用戶(hù)發(fā)來(lái)的加密字符串進(jìn)行解密,得到的解密字符串如果與第一步中發(fā)送給客戶(hù)端的隨機(jī)字符串一樣,那么判斷為登錄成功。
整個(gè)登錄的流程就是這么簡(jiǎn)單,但是在實(shí)際使用 ssh 登錄中還會(huì)碰到一些小細(xì)節(jié),這里演示一遍 ssh 遠(yuǎn)程登錄來(lái)展示下這些細(xì)節(jié)問(wèn)題。

生成密鑰對(duì)

使用 ssh-keygen 就可以直接生成登錄需要的密鑰對(duì)。ssh-keygen 是 Linux 下的命令,不添加任何參數(shù)就可以生成密鑰對(duì)。

➜ ~ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jaychen/.ssh/id_rsa): #1
Enter passphrase (empty for no passphrase):      #2
Enter same passphrase again:          #3

執(zhí)行 ssh-keygen 會(huì)出現(xiàn)如上的提示,在 #1 處這里提示用戶(hù)輸入生成的私鑰的名稱(chēng),如果不填,默認(rèn)私鑰保存在 /home/jaychen/.ssh/id_rsa 文件中。這里要注意兩點(diǎn):

生成的密鑰,會(huì)放在執(zhí)行 ssh-keygen 命令的用戶(hù)的家目錄下的 .ssh 文件夾中。即 $HOME/.ssh/ 目錄下。

生成的公鑰的文件名,通常是私鑰的文件名后面加 .pub 的后綴。

#2 處,提示輸入密碼,注意這里的密碼是用來(lái)保證私鑰的安全的。如果填寫(xiě)了密碼,那么在使用密鑰進(jìn)行登錄的時(shí)候,會(huì)讓你輸入密碼,這樣子保證了如果私鑰丟失了不至于被惡意使用。話是這么說(shuō),但是平時(shí)使用這里我都是直接略過(guò)。

#3 是重復(fù) #2 輸入的密碼,這里就不廢話了。

生成密鑰之后,就可以在 /home/jaychen/.ssh/ 下看到兩個(gè)文件了(我這里會(huì)放在 /home/jaychen 下是因?yàn)槲沂褂?jaychen 用戶(hù)來(lái)執(zhí)行 ssh-keygen 命令)

➜ .ssh ls
total 16K
drwx------ 2 jaychen jaychen 4.0K 12月 7 17:57 .
drwx------ 9 jaychen jaychen 4.0K 12月 7 18:14 ..
-rw------- 1 jaychen jaychen 1.7K 12月 7 17:57 id_rsa.github
-rw-r--r-- 1 jaychen jaychen 390 12月 7 17:57 id_rsa.github.pub

 

生成的私鑰還要注意一點(diǎn):私鑰的權(quán)限應(yīng)該為 rw-------,如果私鑰的權(quán)限過(guò)大,那么私鑰任何人都可以讀寫(xiě)就會(huì)變得不安全。ssh 登錄就會(huì)失敗。

首次 ssh 登錄

登錄遠(yuǎn)程服務(wù)器的命令是

ssh 登錄用戶(hù)@服務(wù)器ip

這里開(kāi)始要注意兩個(gè)用戶(hù)的概念:

本地執(zhí)行這條命令的用戶(hù),即當(dāng)前登錄用戶(hù),我這里演示的用戶(hù)名稱(chēng)是 jaychen。

要登錄到遠(yuǎn)程服務(wù)器的用戶(hù)。

在開(kāi)始登錄之前,我們要首先要把生成公鑰上傳到服務(wù)器。

公鑰的內(nèi)容要保存到要登錄的用戶(hù)的家目錄下的 .ssh/authorized_keys 文件中。假設(shè)你之后要使用 root 用戶(hù)登錄遠(yuǎn)程服務(wù)器,那么公鑰的內(nèi)容應(yīng)該是保存在 /root/.ssh/authorized_keys中。注意 authorized_keys 文件是可以保存多個(gè)公鑰信息的,每個(gè)公鑰以換行分開(kāi)。

上傳完畢之后,執(zhí)行

ssh root@遠(yuǎn)程服務(wù)器 ip

這個(gè)時(shí)候,如上面說(shuō)的,遠(yuǎn)程服務(wù)器會(huì)發(fā)送一段隨機(jī)字符串回來(lái),這個(gè)時(shí)候需要使用私鑰對(duì)字符串進(jìn)行加密。而這個(gè)私鑰會(huì)去執(zhí)行該命令的用戶(hù)的家目錄下的 .ssh 目錄讀取私鑰文件,默認(rèn)私鑰文件為 id_rsa 文件。即 $HOME/.ssh/id_rsa 文件。假設(shè)在生成密鑰的時(shí)候?qū)λ借€進(jìn)行了加密,那么這個(gè)時(shí)候就需要輸入密碼。

上面的流程用戶(hù)登錄的時(shí)候是不會(huì)感知的,ssh 在背后完成了所有的校驗(yàn)操作,如果密鑰匹配的話,那么用戶(hù)就可以直接登錄到遠(yuǎn)程服務(wù)器,但是如果是首次登錄的話,會(huì)出現(xiàn)類(lèi)似下面的提示:

➜ .ssh ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is SHA256:61U/SJ4n/QdR7oKT2gaHNuGxhx98saqMfzJnzA1XFZg.
Are you sure you want to continue connecting (yes/no)?

這句話的意思是,遠(yuǎn)程服務(wù)器的真實(shí)身份無(wú)法校驗(yàn),只知道公鑰指紋(公鑰的 MD5 值)為 61U/SJ4n/QdR7oKT2gaHNuGxhx98saqMfzJnzA1XFZg,是否真的要建立連接。出現(xiàn)上面的提示是因?yàn)楸苊獯嬖谥虚g人攻擊。

中間人攻擊

中間人攻擊的前提是,你第一次登錄一臺(tái)遠(yuǎn)程服務(wù)器,你除了用戶(hù)名、用戶(hù)名對(duì)應(yīng)的公鑰私鑰以及服務(wù)器 ip 之外,對(duì)遠(yuǎn)程服務(wù)器絲毫不了解的情況下。假設(shè)你 ssh 遠(yuǎn)程登錄 192.168.1.1 的遠(yuǎn)程主機(jī),在連接過(guò)程中被第三者攔截,第三者假冒自己為 192.168.1.1 的主機(jī),那么你就會(huì)直接連接到其他人的服務(wù)器上。這就是中間人攻擊。

為了避免中間人攻擊,ssh 在首次登錄的時(shí)候會(huì)返回公鑰指紋,用戶(hù)需要自己手動(dòng)去比對(duì)你要登錄的遠(yuǎn)程服務(wù)器的公鑰的公鑰指紋和 ssh 返回的公鑰指紋是否一樣。

經(jīng)過(guò)比較公鑰指紋,確認(rèn)該服務(wù)器就是你要登錄的服務(wù)器,輸入 yes 之后就可以成功登錄。整個(gè)登錄流程結(jié)束。

known_hosts 文件

第一次登錄之后,在本機(jī)的 $HOME/.ssh/ 目錄下就會(huì)生成一個(gè) known_hosts 的文件,內(nèi)容類(lèi)似下面

➜ .ssh cat known_hosts
192.168.1.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOPKYWolOYTDevvBR6GV0rFcI0z/DHZizN5l/ajApsgx+UcOOh51liuyBRRCIyF+BR56Le0lP0Pn6nzvLjbqMqg=

這個(gè)文件記錄了遠(yuǎn)程主機(jī) ip 和遠(yuǎn)程主機(jī)對(duì)應(yīng)的公鑰指紋,那么在下次登錄的時(shí)候,遠(yuǎn)程主機(jī)發(fā)送過(guò)來(lái)的公鑰指紋,直接和 known_hosts 文件中對(duì)應(yīng) ip 的公鑰指紋比較即可。

config 配置

很多時(shí)候,我們開(kāi)發(fā)可能需要連接多臺(tái)遠(yuǎn)程服務(wù)器,并且需要配置 git 服務(wù)器的私鑰。那么這么多的服務(wù)器不能共用一套私鑰,不同的服務(wù)器應(yīng)該使用不同的私鑰。但是我們從上面的連接流程可以看到,ssh 默認(rèn)是去讀取 $HOME/.ssh/id_rsa 文件作為私鑰登錄的。如果想要不同的服務(wù)器使用不同的私鑰進(jìn)行登錄,那么需要在 .ssh 目錄下編寫(xiě) config 文件來(lái)進(jìn)行配置。

config 的配置很簡(jiǎn)單,只要指明哪個(gè)用戶(hù)登錄哪臺(tái)遠(yuǎn)程服務(wù)器需要使用哪個(gè)私鑰即可。下面給出一個(gè)配置示例。

Host github.com
 User jaychen
 IdentityFile ~/.ssh/id_rsa.github
Host 192.168.1.1
 User ubuntu
 IdentityFile ~/.ssh/id_rsa.xxx

上面 config 文件字段含義如下:

Host 指明了遠(yuǎn)程主機(jī)的 ip,除了使用 ip 地址,也可以直接使用網(wǎng)址。

User 指的是登錄遠(yuǎn)程主機(jī)的用戶(hù)。

IdentityFile 指明使用哪個(gè)私鑰文件。

編寫(xiě)好 config 文件之后,需要把 config 文件的權(quán)限改為 rw-r--r--。如果權(quán)限過(guò)大,ssh 會(huì)禁止登錄。

相關(guān)文章

  • protobuf簡(jiǎn)單介紹和ubuntu 16.04環(huán)境下安裝教程

    protobuf簡(jiǎn)單介紹和ubuntu 16.04環(huán)境下安裝教程

    protobuf是谷歌的開(kāi)源序列化協(xié)議框架,結(jié)構(gòu)類(lèi)似于XML,JSON這種,顯著的特點(diǎn)是二進(jìn)制的,效率高,主要用于通信協(xié)議和數(shù)據(jù)存儲(chǔ)等方面,算是一種結(jié)構(gòu)化數(shù)據(jù)的表示方法。這篇文章主要介紹了protobuf簡(jiǎn)單介紹和ubuntu 16.04環(huán)境下安裝教程,需要的朋友可以參考下
    2019-06-06
  • 詳解如何在 CentOS7.0 上搭建DNS 服務(wù)器

    詳解如何在 CentOS7.0 上搭建DNS 服務(wù)器

    BIND也叫做NAMED,是現(xiàn)今互聯(lián)網(wǎng)上使用最為廣泛的DNS 服務(wù)器程序,本篇文章主要介紹了如何在 CentOS7.0 上搭建DNS 服務(wù)器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • linux利用read命令獲取變量中的值

    linux利用read命令獲取變量中的值

    對(duì)于寫(xiě)bash腳本的朋友,read命令是不可或缺的,需要實(shí)踐一下就可以了解,下面這篇文章主要給大家介紹了關(guān)于linux如何利用read命令來(lái)獲取變量中值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • Linux與Windows跨平臺(tái)文件共享的實(shí)現(xiàn)方案

    Linux與Windows跨平臺(tái)文件共享的實(shí)現(xiàn)方案

    在智慧工廠的應(yīng)用場(chǎng)景中,常常需要通過(guò)工控機(jī)集中讀取多臺(tái)設(shè)備生成的日志來(lái)獲取運(yùn)行數(shù)據(jù),由于設(shè)備通常運(yùn)行 Windows 系統(tǒng),而工控機(jī)多采用 Linux 環(huán)境,所以本文介紹了Linux與Windows跨平臺(tái)文件共享的實(shí)現(xiàn)方案,需要的朋友可以參考下
    2025-04-04
  • 詳解如何在Linux系統(tǒng)中監(jiān)控TCP連接

    詳解如何在Linux系統(tǒng)中監(jiān)控TCP連接

    在?Linux?系統(tǒng)中,監(jiān)控?TCP?連接是網(wǎng)絡(luò)管理和故障排查的重要任務(wù)之一,無(wú)論是系統(tǒng)管理員還是開(kāi)發(fā)人員,了解如何查看和分析?TCP?連接狀態(tài)都至關(guān)重要,本文將詳細(xì)介紹如何在?Linux?系統(tǒng)中監(jiān)控?TCP?連接,需要的朋友可以參考下
    2025-02-02
  • 80端口被Pid為4的未知程序占用導(dǎo)致Apache不能啟動(dòng)的解決方法

    80端口被Pid為4的未知程序占用導(dǎo)致Apache不能啟動(dòng)的解決方法

    這篇文章主要介紹了80端口被Pid為4的未知程序占用導(dǎo)致Apache不能啟動(dòng)的解決方法,比較奇怪的是這個(gè)PID為4的程序在進(jìn)程中找不到,后來(lái)發(fā)現(xiàn)原來(lái)是一個(gè)服務(wù)在占用,需要的朋友可以參考下
    2014-10-10
  • Apache Web服務(wù)器的完全安裝指南

    Apache Web服務(wù)器的完全安裝指南

    本文討論如何安裝支持mod_perl、mod_ssl及php的apache web服務(wù)器,并安裝webalizer實(shí)現(xiàn)對(duì)web訪進(jìn)行日志分析。手把手引導(dǎo)初學(xué)者編輯一個(gè)安全、功能完備的web服務(wù)器系統(tǒng)。
    2010-12-12
  • Linux 用cp和rsync同步文件時(shí)跳過(guò)指定目錄的方法

    Linux 用cp和rsync同步文件時(shí)跳過(guò)指定目錄的方法

    某測(cè)試站點(diǎn),在某個(gè)節(jié)點(diǎn)的時(shí)候需要同步到正式站點(diǎn)去,但是里面的config目錄不能覆蓋
    2012-11-11
  • Linux系統(tǒng)如何修改主機(jī)名稱(chēng)

    Linux系統(tǒng)如何修改主機(jī)名稱(chēng)

    Linux系統(tǒng)中修改主機(jī)名稱(chēng)可以臨時(shí)或永久進(jìn)行,臨時(shí)修改僅在當(dāng)前會(huì)話有效,永久修改則需編輯系統(tǒng)配置文件,使用systemd的系統(tǒng)可通過(guò)hostnamectl命令更新主機(jī)名,同時(shí)更新/etc/hosts文件確保一致性
    2024-11-11
  • Linux檢查Swap交換空間的五個(gè)命令小結(jié)

    Linux檢查Swap交換空間的五個(gè)命令小結(jié)

    這篇文章主要給大家介紹了關(guān)于Linux中檢查Swap交換空間的五個(gè)命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評(píng)論

永福县| 长白| 石阡县| 江达县| 临漳县| 三台县| 正镶白旗| 自贡市| 南岸区| 建始县| 红河县| 海林市| 新邵县| 肥乡县| 荥经县| 贵溪市| 河池市| 固阳县| 策勒县| 行唐县| 安塞县| 咸阳市| 仁怀市| 南漳县| 井冈山市| 凌源市| 息烽县| 惠来县| 明溪县| 高州市| 西贡区| 修水县| 连州市| 拉萨市| 吴江市| 乐东| 汝南县| 四川省| 永康市| 邯郸市| 双峰县|