SSH原理及安裝

SH 爲 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 爲建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。

一、從客戶端來看,SSH提供兩種級別的安全第一種級別是基於口令的安全驗證

第一種級別是基於口令的安全驗證

只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密, 但是不能保證你正在連接的服務器就是你想連接的服務器。這個過程如下:
(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
(2)用戶使用這個公鑰,將登錄密碼加密後,發送回來。
(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。這種方式可能會有別的服務器在冒充真正的服務器,將公鑰發送給客戶端,客戶端就會將密碼加密後發送給冒充的服務器,冒充的服務器就可以拿自己的私鑰獲取到密碼,也就是受到“中間人”這種方式的攻擊。
值得一說的是當第一次鏈接遠程主機時,會提示您當前主機的”公鑰指紋”,詢問您是否繼續,如果選擇繼續後就可以輸入密碼進行登錄了,當遠程的主機接受以後,該臺服務器的公鑰就會保存到~/.ssh/known_hosts文件中。

第二種級別是基於密匙的安全驗證

需要依靠密匙,也就是你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因爲他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒,但是相比輸入密碼的方式來說10秒也不長。

二、ssh正常安裝

(1)判斷是否安裝ssh服務:

ssh localhost
ssh: connect to host localhost port 22: Connection refused

如上所示,表示沒有安裝,Ubuntu缺省安裝了openssh-client,僅需安裝 ssh-server就可以了。

安裝ssh-server
sudo apt-get install openssh-server
安裝ssh-client
sudo apt-get install openssh-client

系統將自動進行安裝,安裝完成以後,先啓動服務:

sudo /etc/init.d/ssh start

啓動後,可以通過如下命令查看服務是否正確啓動

ps -e|grep ssh
1673 ?       00:00:00 ssh-agent(eval ssh-agent 啓動)
4366 ?       00:00:00 sshd

(2)如上表示啓動ok。注意,ssh默認的端口是22,可以更改端口,更改後先stop,然後start就可以了。改配置在/etc/ssh/sshd_config下,如下所示:

vi /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22

把裏面的Port參數修改成其他的即可,然後重啓SSH服務:

sudo /etc/init.d/ssh restar

最後,應該是連接的時候了。請看如下命令:

ssh 用戶名@192.168.158.129(通過ifconfig -a查ip)

三、ssh免密碼安裝

(1)在主機A、B下生成公鑰/私鑰對

ssh-keygen -t dsa  -P ''

使用dsa加密算法,-P表示密碼,-P ” 就表示空密碼,也可以不用-P參數,這樣就要三車回車,用-P就一次回車。在/home/用戶/.ssh下有id_rsa和id_rsa.pub

(2)對於A/B,id_dsa.pub爲公鑰,id_dsa爲私鑰,緊接着將公鑰文件複製成authorized_keys文件,這個步驟是必須的,過程如下:

cat id_dsa.pub >> authorized_keys(chmod 600 ~/.ssh/authorized_keys)

(3)單機迴環ssh免密碼登錄測試
即在單機結點上用ssh進行免密碼登錄,看能否登錄成功。登錄成功後註銷退出,過程如下:

ssh localhost

(4)把A機下的id_rsa.pub複製到B機下爲A_dsa.pub,在B機下將A_dsa.pub追加到authorized_keys文件裏:

scp /home/A用戶名/.ssh/id_dsa.pub B用戶名@B主機ip:/home/B用戶名/.ssh/A_dsa.pub

cat A_dsa.pub >> authorized_keys

(5)主機A就可以免密碼訪問主機B:

ssh 主機B用戶@主機B的ip

(6)小結:登錄的機子可有私鑰,被登錄的機子要有登錄機子的公鑰。這個公鑰/私鑰對一般在私鑰宿主機產生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章