国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統(tǒng) > 正文

爛泥:學習ssh之ssh無密碼登陸

2024-06-28 13:20:38
字體:
來源:轉載
供稿:網友
爛泥:學習ssh之ssh無密碼登陸

本文由秀依林楓提供友情贊助,首發(fā)于爛泥行天下

最近一個月沒有寫過文章,主要是剛剛換的新工作。新公司服務器OS使用的是Ubuntu server版,和以前熟悉的centos還是有很多不同的。

剛好這幾天有時間,也是工作需要,學習了下有關ssh密鑰的知識。

在平時的工作中,我們登陸服務器,一般是使用ssh密碼的方式。其實還有一種方式,那就是通過ssh密鑰登陸服務器。

這兩種方法都是ssh的安全驗證方式,,根據驗證方式的不同我們把其分為:基于密碼的安全驗證和基于密鑰的安全驗證。

注意:在一些文章中提到的ssh證書,其實就是ssh密鑰。

一、ssh兩種安全驗證介紹

通過以上介紹,我們知道了ssh有兩種安全驗證方式,下面我們一一介紹其工作原理。

1.1 基于密碼的安全驗證

這種方式,只需要知道遠程服務器的帳號和密碼,就可以登錄到遠程服務器。所有傳輸?shù)臄?shù)據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是說這種方式的連接有可能會受到“中間人”這種方式的攻擊。

1.2 基于密鑰的安全驗證

這種方式,需要依靠密鑰,也就是說你必須為自己創(chuàng)建一對密鑰對(公鑰和私鑰),并且把該公鑰放到需要訪問的服務器上。

注意:不能在需要訪問的服務器上創(chuàng)建密鑰,否則無法通過該密鑰連接該服務器,但是通過該密鑰連接其他服務器是正常的。

如果你要連接到ssh服務器,ssh客戶端會向ssh服務器發(fā)出請求,請求用你的密鑰進行安全驗證。ssh服務器在收到該請求之后,會先在ssh服務器上,檢查你登陸的用戶的主目錄下尋找對應的公鑰,然后把它和你發(fā)送過來的公鑰進行比較。如果兩個公鑰一致,ssh服務器就用公鑰加密“質詢”(challenge)并把它發(fā)送給ssh客戶端。ssh客戶端在收到“質詢”之后就可以用你的私鑰解密該“質詢”,再把它發(fā)送給ssh服務器。

這種安全驗證方式,你必須知道自己密鑰的加密口令。當然,自己的密鑰也可以不加密,而且這種不加密密鑰的方式,在平時工作中使用的也比較多。

通過以上對比,我們可以很容易看出。與基于密碼的安全驗證相比,基于密鑰的安全驗證是不需要在網絡上傳輸密碼。除此之外,我們還可以看出,“中間人”這種攻擊方式也是不可能的(因為他沒有你的私鑰)。

二、測試ssh無密碼登陸

在第一章中我們介紹了,ssh的兩種安全驗證方式。要達到ssh無密碼登陸服務器,我們就要使用ssh密鑰驗證這種方式。

PS:本次試驗OS為Ubuntu 14.04.02 64bit,如下:

uname –a

cat /etc/issue

clip_image001[5]

2.1創(chuàng)建ssh密鑰

通過第一章我們知道了,要使用ssh密鑰驗證。我們必須要創(chuàng)建一個ssh密鑰對。

ssh密鑰的創(chuàng)建,我們可以有兩種方式。第一就是在linux OS上通過ssh-kengen這個命令來創(chuàng)建,第二就是在windows下通過ssh客戶端工具來創(chuàng)建。

下面我們對其創(chuàng)建密鑰的方法一一進行介紹,如下。

2.1.1 通過ssh-kengen命令創(chuàng)建密鑰

使用ssh-kengen命令創(chuàng)建ssh密鑰很簡單,直接使用該命令創(chuàng)建即可。如下:

ssh-keygen

clip_image002[4]

通過上圖,我們可以很明顯的看出剛剛新創(chuàng)建的密鑰存放在/home/ilanni/.ssh目錄下,而且私鑰文件是id_rsa,公鑰文件是id_rsa.pub

除此之外,我們還需要注意ssh-kengen命令中:

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

這兩行是表示設置私鑰的加密密碼,我們在此是沒有設置私鑰的加密密碼。

現(xiàn)在我們來查看密鑰的文件屬性,如下:

ll .ssh/

clip_image003[4]

通過上圖,我們可以很明顯的看出:

.ssh目錄的用戶權限是700,私鑰id_rsa的權限是600,公鑰id_rsa.pub的權限是644。

注意:有關私鑰id_rsa和公鑰id_rsa.pub文件權限非常重要,如果權限沒有設置對的話,在使用ssh密鑰登陸時,系統(tǒng)還是會提示需要輸入密碼。

ssh-keygen默認使用的密鑰加密類型是rsa,這個我們可以通過查看公鑰文件id_rsa.pub得知。如下:

cat .ssh/id_rsa.pub

clip_image004[4]

如果要使用其他類型的加密方式,我們可以通過ssh-keygen的-t參數(shù)來指定使用的加密類型。如下:

ssh-keygen -t dsa

clip_image005[4]

cat .ssh/id_dsa.pub

clip_image006[4]

有關ssh-kengen命令的詳細使用方法,我們可以通過查看ssh-kengen的幫助命令獲得。如下:

ssh-keygen --help

clip_image007[4]

注意:該密鑰是在192.168.1.8機器上生成的,如下:

hostname

ifconfig

clip_image008[4]

2.1.2 通過xshell創(chuàng)建密鑰

windows下ssh客戶端的連接工具比較多,但是我使用最多的還是xshell這個工具。

下面我們就通過xshell工具,來創(chuàng)建ssh的密鑰。

打開xshell,點擊“工具”--“新建用戶密鑰生成向導”,如下:

clip_image009[4]

下面這個界面,我們可以選擇密鑰的類型和密鑰的長度,如下:

clip_image010[4]

生成密鑰對,如下:

clip_image011[4]

輸入密鑰名稱以及密鑰的加密密碼,如下:

clip_image012[4]

注意:這個密鑰的加密密碼就是ssh私鑰的加密密碼,我們可以為空。

為了下面試驗區(qū)分通過ssh-kengen生成的密鑰id_rsa,在此密鑰的名稱我們命名為id_rsa_1024。

生成公鑰,如下:

clip_image013[4]

公鑰生成后,我們需要把該公鑰保存到一個文件中。如下:

clip_image014[4]

公鑰保存完畢后,xshell就會跳轉到私鑰的界面。如下:

clip_image015[4]

通過上圖,我們可以看到目前私鑰的名稱就是我們前面命名的id_rsa_1024,而且密鑰的長度是1024字節(jié)。

現(xiàn)在我們來導出該私鑰,如下:

clip_image016[4]

這樣我們就得到了一對ssh密鑰,如下:

clip_image017[4]

2.2 上傳ssh公鑰

在2.1章節(jié)中,我們已經創(chuàng)建好了ssh的公鑰與私鑰,現(xiàn)在我們開始把公鑰上傳到需要被訪問的服務器上,即ssh服務器上。

在把公鑰上傳到ssh服務器上,我們還有幾件事要做:

1)、確定要登陸ssh服務器的用戶

2)、修改ssh服務器的ssh配置文件sshd_config

3)、創(chuàng)建authorized_keys文件

4)、上傳公鑰并把內容重定向到authorized_keys文件

注意:本章節(jié)是在192.168.1.7機器上操作,如下:

hostname

ifconfig

clip_image018[4]

2.2.1 確定要登陸ssh服務器的用戶

因為我們是要免密碼登陸ssh服務器,所以我們必須要確定使用哪一個用戶登陸ssh服務器。

注意:該用戶一定要在ssh服務器存在,并且是可以登陸ssh服務器的。

在此我們使用的是ilanni這個用戶登陸ssh服務器的。如下:

whoami

cat /etc/passwd |grep ilanni

clip_image019[4]

2.2.2 修改ssh配置

ssh存放用戶登陸的公鑰是通過sshd_config文件配置的,但是默認該選項是沒有啟用的。需要我們通過修改sshd_config文件來啟用,如下:

sudo vi /etc/ssh/sshd_config

clip_image020[4]

我們只需要把#AuthorizedKeysFile %h/.ssh/authorized_keys行前的#去掉即可。如下:

clip_image021[4]

AuthorizedKeysFile存放該用戶可以用來登錄的RSA/DSA公鑰。該指令中%h表示用戶的主目錄,最后公鑰會存放到主目錄的.ssh/authorized_keys文件中。

注意:這個步驟不是必須的,因為通過ssh-copy-id命令進行配置時,就無需修改ssh配置文件。

2.2.3 創(chuàng)建authorized_keys文件

在上一章節(jié)中,我們知道了用戶的公鑰是存放在authorized_keys文件中的,現(xiàn)在我們來創(chuàng)建該文件。

先創(chuàng)建.ssh目錄并修改其用戶屬性,如下:

mkdir .ssh

chmod 700 .ssh

clip_image022[4]

.ssh目錄創(chuàng)建完畢后,我們現(xiàn)在來創(chuàng)建authorized_keys文件。如下:

touch authorized_keys

clip_image023[4]

2.2.4 把公鑰內容重定向到authorized_keys文件

在2.1章節(jié)中,我們介紹了ssh密鑰的生成方法。一是通過ssh-kengen命令生成,二是通過xshell生成。

我們現(xiàn)在把這兩個公鑰都上傳到192.168.1.7機器上,然后重定向到authorized_keys文件中。如下:

clip_image024[4]

把192.168.1.8公鑰復制到192.168.1.7機器上,如下:

scp .ssh/id_rsa.pub ilanni@192.168.1.7:/home/ilanni

clip_image025[4]

把xshell生成的公鑰上傳到192.168.1.7上,如下:

clip_image026[4]

現(xiàn)在把兩個公鑰都重定向到authorized_keys文件,如下:

cat id_rsa.pub >.ssh/authorized_keys

cat id_rsa_1024.pub>>.ssh/authorized_keys

cat .ssh/authorized_keys

clip_image027[4]

2.3 連接ssh服務器

公鑰上傳完畢后,我們來連接ssh服務器,也就是連接192.168.1.7機器。

連接192.168.1.7,我們也可以分為linux和windows,下面對其連接方法一一講解。

2.3.1 在linux上連接ssh服務器

我們先在linux機器192.168.1.8上連接192.168.1.7,如下:

ssh ilanni@192.168.1.7

ifconfig eth0|grep "inet addr"|awk '{PRint $2}'|cut -d: -f2

clip_image028[4]

通過上圖,我們可以很明顯的看出在192.168.1.8上連接192.168.1.7時,系統(tǒng)沒有提示我們輸入密碼。

這也就實現(xiàn)了,我們免密碼登陸ssh服務器的功能。

2.3.2 在windows上連接ssh服務器

我們現(xiàn)在切換到windows系統(tǒng)上,來連接192.168.1.7。 ssh客戶端工具,我們使用的還是xshell,還是在生成密鑰的那臺windows機器上。如下:

ssh ilanni@192.168.1.7

clip_image029[4]

注意:用戶身份驗證方法,在此我們需要選擇的是Public Key也就是密鑰驗證方式,并且用戶密鑰就是我們前面生成時的密鑰時的私鑰id_rsa_1024。

clip_image030[4]

通過上圖,我們可以很明顯的看到在windows客戶端連接192.168.1.7,系統(tǒng)也沒有要求我們輸入密碼,這也就實現(xiàn)了ssh的無密碼登陸。

2.4 使用ssh-copy-id上傳ssh公鑰

看了第2.2章節(jié)有關上傳ssh公鑰,你是不是覺得很麻煩。其實ssh還給我們提供了另外一個命令ssh-copy-id,ssh-copy-id命令可以把上述的步驟一次性執(zhí)行完畢。

注意:ssh-copy-id命令只存在于linux系統(tǒng)中,目前沒有發(fā)現(xiàn)windows系統(tǒng)的ssh客戶端工具有該命令。

ssh-copy-id命令使用方法,如下:

ifconfig eth0|grep "inet addr"|awk '{print $2}'|cut -d: -f2

ssh-copy-id -i .ssh/id_rsa.pub ilanni@192.168.1.9

clip_image031[4]

cat .ssh/id_rsa.pub

clip_image032[4]

登陸192.168.1.9,查看公鑰。如下:

ifconfig eth0|grep "inet addr"|awk '{print $2}'|cut -d: -f2

ll --full-time .ssh/

clip_image033[4]

cat .ssh/authorized_keys

clip_image034[4]

通過以上兩張截圖,我們很明顯的看出,使用ssh-copy-id命令可以直接在ssh服務器對應用戶的家目錄下創(chuàng)建.ssh目錄,并且在該目錄下創(chuàng)建authorized_keys文件。同時也會把公鑰id_rsa.pub文件中的內容,復制到authorized_keys文件中。

查看ssh配置文件是否修改。如下:

cat /etc/ssh/sshd_config |grep authorized_keys

clip_image035[4]

通過上圖,我們可以很明顯的看出ssh-copy-id沒有修改ssh配置。

現(xiàn)在我們來連接192.168.1.9測試下,如下:

ifconfig eth0|grep "inet addr"|awk '{print $2}'|cut -d: -f2

ssh ilanni@192.168.1.9

clip_image036[4]

通過上圖,我們可以很明顯的看到即使不修改ssh的配置文件,只要有authorized_keys文件,也能實現(xiàn)ssh的無密碼登陸。

有關ssh-copy-id詳細的使用方法,可以查看其幫助命令。如下:

ssh-copy-id -h

clip_image037[4]

以上就是有關ssh無密碼登陸的全部內容。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 山丹县| 墨竹工卡县| 和平区| 南皮县| 奉化市| 武夷山市| 苏尼特右旗| 乌苏市| 老河口市| 德钦县| 平顺县| 苍溪县| 东阳市| 宝丰县| 赫章县| 汉中市| 沐川县| 浙江省| 五寨县| 元江| 文昌市| 上饶县| 梨树县| 和政县| 广宁县| 湛江市| 德惠市| 西安市| 察哈| 永吉县| 淮滨县| 保山市| 阜康市| 孝义市| 柳河县| 博野县| 桓仁| 岱山县| 锦州市| 驻马店市| 西乌珠穆沁旗|