欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解linux SSH登錄流程

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

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

密鑰登錄比密碼登錄安全,主要是因為他使用了非對稱加密,登錄過程中需要用到密鑰對。整個登錄流程如下:

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

生成密鑰對

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

➜ ~ 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 會出現(xiàn)如上的提示,在 #1 處這里提示用戶輸入生成的私鑰的名稱,如果不填,默認私鑰保存在 /home/jaychen/.ssh/id_rsa 文件中。這里要注意兩點:

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

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

#2 處,提示輸入密碼,注意這里的密碼是用來保證私鑰的安全的。如果填寫了密碼,那么在使用密鑰進行登錄的時候,會讓你輸入密碼,這樣子保證了如果私鑰丟失了不至于被惡意使用。話是這么說,但是平時使用這里我都是直接略過。

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

生成密鑰之后,就可以在 /home/jaychen/.ssh/ 下看到兩個文件了(我這里會放在 /home/jaychen 下是因為我使用 jaychen 用戶來執(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

 

生成的私鑰還要注意一點:私鑰的權限應該為 rw-------,如果私鑰的權限過大,那么私鑰任何人都可以讀寫就會變得不安全。ssh 登錄就會失敗。

首次 ssh 登錄

登錄遠程服務器的命令是

ssh 登錄用戶@服務器ip

這里開始要注意兩個用戶的概念:

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

要登錄到遠程服務器的用戶。

在開始登錄之前,我們要首先要把生成公鑰上傳到服務器。

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

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

ssh root@遠程服務器 ip

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

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

➜ .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)?

這句話的意思是,遠程服務器的真實身份無法校驗,只知道公鑰指紋(公鑰的 MD5 值)為 61U/SJ4n/QdR7oKT2gaHNuGxhx98saqMfzJnzA1XFZg,是否真的要建立連接。出現(xiàn)上面的提示是因為避免存在中間人攻擊。

中間人攻擊

中間人攻擊的前提是,你第一次登錄一臺遠程服務器,你除了用戶名、用戶名對應的公鑰私鑰以及服務器 ip 之外,對遠程服務器絲毫不了解的情況下。假設你 ssh 遠程登錄 192.168.1.1 的遠程主機,在連接過程中被第三者攔截,第三者假冒自己為 192.168.1.1 的主機,那么你就會直接連接到其他人的服務器上。這就是中間人攻擊。

為了避免中間人攻擊,ssh 在首次登錄的時候會返回公鑰指紋,用戶需要自己手動去比對你要登錄的遠程服務器的公鑰的公鑰指紋和 ssh 返回的公鑰指紋是否一樣。

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

known_hosts 文件

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

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

這個文件記錄了遠程主機 ip 和遠程主機對應的公鑰指紋,那么在下次登錄的時候,遠程主機發(fā)送過來的公鑰指紋,直接和 known_hosts 文件中對應 ip 的公鑰指紋比較即可。

config 配置

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

config 的配置很簡單,只要指明哪個用戶登錄哪臺遠程服務器需要使用哪個私鑰即可。下面給出一個配置示例。

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

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

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

User 指的是登錄遠程主機的用戶。

IdentityFile 指明使用哪個私鑰文件。

編寫好 config 文件之后,需要把 config 文件的權限改為 rw-r--r--。如果權限過大,ssh 會禁止登錄。

相關文章

  • thrift安裝遇到的問題以及解決方法(必看篇)

    thrift安裝遇到的問題以及解決方法(必看篇)

    下面小編就為大家?guī)硪黄猼hrift安裝遇到的問題以及解決方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • linux下make命令實現(xiàn)輸出高亮的方法

    linux下make命令實現(xiàn)輸出高亮的方法

    Linux 下 make 命令是系統(tǒng)管理員和程序員用的最頻繁的命令之一。管理員用它通過命令行來編譯和安裝很多開源的工具,程序員用它來管理他們大型復雜的項目編譯問題。這篇文章主要給大家介紹了關于linux下make命令實現(xiàn)輸出高亮的方法,需要的朋友可以參考下。
    2017-07-07
  • crontab執(zhí)行時間與系統(tǒng)時間不一致問題解決

    crontab執(zhí)行時間與系統(tǒng)時間不一致問題解決

    這篇文章主要給大家介紹了關于crontab執(zhí)行時間與系統(tǒng)時間不一致問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Angular.JS中指令的命名規(guī)則詳解

    Angular.JS中指令的命名規(guī)則詳解

    這篇文章主要給大家介紹了關于Angular.JS中指令命名規(guī)則的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • linux系統(tǒng)中計劃任務介紹

    linux系統(tǒng)中計劃任務介紹

    大家好,本篇文章主要講的是linux系統(tǒng)中計劃任務介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Discuz 7.0偽靜態(tài)ReWrite的.htaccess規(guī)則

    Discuz 7.0偽靜態(tài)ReWrite的.htaccess規(guī)則

    在確定您的服務器支持偽靜態(tài)ReWrite后,您可以通過修改設置.htaccess文件來實現(xiàn)Discuz論壇的偽靜態(tài)功能
    2010-12-12
  • 關于安裝linux redhat后無法使用yum命令安裝gcc-c++問題的解決過程

    關于安裝linux redhat后無法使用yum命令安裝gcc-c++問題的解決過程

    這篇文章主要介紹了關于安裝linux redhat后無法使用yum命令安裝gcc-c++問題的解決過程,需要的朋友可以參考下
    2017-08-08
  • centos7下如何安裝ftp服務

    centos7下如何安裝ftp服務

    這篇文章主要介紹了centos7下如何安裝ftp服務問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • linux?服務器安裝gcc8的問題記錄

    linux?服務器安裝gcc8的問題記錄

    我原本安裝了gcc13.0版本,但是版本太高了,導致我安裝cuda報錯gcc版本太高,所以就安裝低版本的gcc,下面通過本文給大家分享linux?服務器安裝gcc8的問題記錄,感興趣的朋友一起看看吧
    2024-07-07
  • centos6.5下安裝zabbix2.4的教程圖解

    centos6.5下安裝zabbix2.4的教程圖解

    這篇文章主要介紹了centos6.5下安裝zabbix2.4的教程圖解,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11

最新評論