SSH-key鏈接原理

1,咱們想經過遠程的方式從個人電腦遠程鏈接到對方的電腦上那麼在LINUX系統下咱們能夠經過一種叫ssh的方式鏈接過去。SSH客戶端(ssh命令)還包含一個頗有用的遠程安全拷貝命令scp。算法

2,有兩種鏈接方式,vim

(1)telnet  這種是明文的容易讓黑客捕獲。安全

應用方式:安裝telnet(遠程登陸的意思)服務器

Yum –y install telnetssh

安裝好後怎麼連接呢?編輯器

如 telnet 192.168.112.356 22      IP是對方IP地址加密

                                                                      22端口號、rest

固然對方也要安裝telnetip

 

(2)ssh 是通過加密的。get

3,ssh有兩種級別的鏈接方式

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

只要你知道本身賬號和口令,就能夠登陸到遠程主機。全部傳輸的數據都會被加密,可是不能保證你正在鏈接的服務器就是你想鏈接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到「中間人」這種方式的攻擊。第二種級別(基於密匙的安全驗證)

須要依靠祕鑰,也就是你必須爲本身建立一對密匙,並把公用密匙放在須要訪問的服務器上。客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求以後,先在該服務器上你的主目錄下尋找你的公用密匙,而後把它和你發送過來的公用密匙進行比較。若是兩個密匙一致,服務器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟件。客戶端軟件收到「質詢」以後就能夠用你的私人密匙解密再把它發送給服務器。

總結1,

ssh鏈接第一級別:

 ssh鏈接默認端口是22

(1)

 有兩臺電腦 A和B.                       A要登陸 B電腦的超級用戶

#ssh 192.168.29.144                   登陸超級用戶IP前不用加@

第一次鏈接 會問你 記錄不記錄對方IP地址, 必須記錄 YES

以後對方密碼彈出 輸入對方的密碼回車

用hostname –I  查看下本機IP地址,這樣就是對方的IP地址對方的主機了。

而後exit退出,就等退出了

 

(2)

有兩臺電腦 A和B.                       A要登陸 B電腦的普通用戶  (不是超級用戶)

添加個用戶

    如我如今在另外一臺電腦添加用戶

     Useradd yunjisuan   建立一個叫yunjisuan 的用戶   路徑時/home 目錄

     Echo 「123123」 | passwd  - -stdin yunjisuan   給yunjisun 用戶添加密碼。

我如今在第一臺電腦我用ssh鏈接另外一臺電腦的 yunjisuan用戶

A電腦 輸入: ssh yunjisuan@192.168.,29.144  (ip地址前不加東西就是超級用戶)

以後輸入密碼:123123     就登陸進去了

 

 

(3)

遠程複製在電腦雙方都要安裝 scp命令

yum insiall openssh-clients   (打開ssh客戶端)  安裝scp遠程複製命令

以後怎麼作呢?

1,我在A電腦

映射一句話    到/etc/hosts裏

 # echo "'hostname –I' www.yunjisuan.com" >> /etc/hosts

Cat /etc/housts 看一下。 沒問題

再用scp複製,把A的housts目錄複製到B電腦  超級用戶 /root/etc下

#scp /etc/hosts  192.168.29.144:/etc/回車  複製hosts這個目錄過去。

注意:沒加root@192.168.29.1144 就是默認超級用戶登陸。

上B電腦查看 cat /etc/hosts  就有了

 

  2,以上我是把我A電腦的數據複製過。

去接下來。

我要把B電腦的數據拉過來怎麼操做呢? 

  用#:scp root@192.168.29.144:~/222 .

        這是把B電腦的  根下YYY文件複製到我A電腦的  點 當前目錄下。

 

 

 

總結2

ss h鏈接第二級別

祕鑰的意義就在於不用輸密碼,就進入對方的服務端。

1,首先  建立祕鑰對

ssh    Tab一下 會發現不少命令

   Ssh-Keygen 生成祕鑰對的命令    (交互生成祕鑰)

Ssh-copy-id分發祕鑰對的命令

(1)# Ssh-Keygen 回車

會出來這三樣,第一個…..(/root/.ssh/id_rsa) 這是這個命令 在根下root下 .ssh 點就是隱藏文件。後邊的id_rsa就是祕鑰對的名字     (在這個目錄下生成一個叫id_rsa的文件)          

                       第二個是密碼  直接回車不設就行

                       第三個也是密碼,直接回車

                       就建立完了。

(2)#ls .ssh   看一下  有三個文件 分別是

id_rsa 私鑰     id_rsa.pub 公鑰           known_hosts遠程登陸記錄

客戶端拿私鑰     服務端拿公鑰 (就是誰登陸誰 就把公鑰發給誰)

私鑰能夠有不少份,但公鑰只能有一份,私鑰去找公鑰。

(3)我如今在客戶端建立了祕鑰對

        如今得把公鑰給服務端複製過去                    

怎麼操做呢? 

首先(1)在服務端家目錄下建立一個 mkdir  .ssh  目錄

(2)ll  -d  .ssh/   看看他是什麼權限?  爲何看呢?由於你的祕鑰權限過大,Linux系統擔憂安全是不會讓你成功的。

因此你得給它設置下權限(客戶端服務端雙方都要設置700權限)

      #:chmod 700 .ssh/             它權限必須是700

(3)在服務端把公鑰更名vi /etc/ssh/sshd_config

         進入編輯器在47行  複製authorized_keys 這個名字

          mv id_rsa.pub authorized_keys     改爲這個名字

                   set nu                                   顯示行號

 

或者cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  這樣更名

 

(5)如今來客戶端把公鑰 複製過去給服務端(或者相反)

#:scp .ssh/authorized_keys 192.168.29.144:~/.ssh/

(6)還有些提升效率的操做。

vim /etc/ssh/sshd_config 後  

79行改爲no             (centOS6是81行 改爲on)  這是驗證改爲on 不驗了

115行改爲no           (centOS6是122行 改爲on)   NDS 改爲no

以後重啓一下systemctl restart network

而後scp /etc/ssh/sshd_config root@192.168.29.144:/etc/ssh/

這個sshd_config這個修改後的配置文件給對方發過去。覆蓋對方的配置文件(免得對方改了)  這是ssh的配置文件。

對方也重啓一下systemctl sshd reload

(7)ssh  192.168.29.144  這就無密碼的鏈接上了 

 結束           這就是祕鑰鏈接 免祕鑰的過程。

可是你連普通用戶照樣還有密碼,除非普通用戶也有公鑰照以上這麼改。

 

示範一下鏈接普通用戶

前提:要在對方電腦上建立個普通用戶

(1)Useradd yunjisuan   建立一個叫yunjisuan 的用戶  路徑在/home 裏

          Echo 「123123」 | passwd –stdin yunjisuan   給yunjisun 用戶添加密碼。

        (2)而後進去對方電腦普通用戶下(yunjisuan下)建立

#:mkdir   .ssh 目錄   

在改.ssh的屬主爲yunjisuan   #:chown yujisuan  .ssh

                權限爲700           #:chown 700  .ssh

                                           #:ll –d .ssh   查看下

(3) 由於普通用戶裏沒有.ssh目錄。全部要把我方的公鑰給複製過去到yunjisuan用戶的超級用戶也就是~家目錄裏

#scp ~/.ssh/authorized_keys yunjisuan@192.168.29.144:~

(4)而後進去對方電腦cd /home/yunjisuan  就有authorized_keys文件了。

在把authorized_keys移到  .ssh裏

mv authorized_keys  .ssh

(5)可是這時我進的是普通用戶,普通用戶要能用這文件就要把authorized_keys的屬主改爲普通用戶:   

#:chown yujisuan  authorized_keys

(6)鏈接ssh yunjisuan@192.168.29.144 就鏈接上了

 

 

 總結3

ssh 祕鑰鏈接的簡化方式

在客戶端.ssh下  還有個ssh-copy-id  它是用來分發公鑰的剛纔服務端作的那些操做它都能自動來完成。

(1)

一條命令生成祕鑰對。 而不用以前的ssh-Keygen 生成祕鑰對的命令  (交互生成手動分發)

        -d dsa   指定加密算法 dsa

         -f         指生成的祕鑰放在哪裏

         -P         槓大P 「」裏邊沒東西就是空密碼

#ssh-keygen –t dsa –f ~/.ssh/id_dsa –P 「」 回車

(2)一條命令分發

我如今要分發

         -i    你要分發什麼?(要分發這個~/.ssh/id_dsa.pub公鑰)

         ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144

           如今進入服務端 家目錄下/home

Ls –a 看一下  yunjisuan

最後一行多了一個700權限屬主屬組都是yungjisuan(直接就把權限改了)

回車後再看下.ssh裏邊公鑰在不在。

    以後用客戶端直接鏈接服務端。能夠了

(3) 可是以上步驟分發祕鑰時還須要輸入密碼。  怎麼把這個密碼也刪掉呢?

       有個命令叫sshpass    須要雲yum安裝本地yum沒有

sshpass –p 「123123」   輸入密碼以後再分發。

       #sshpass –p 「123123」 ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144

      以後登錄OK了

(4)cd .ssh回車

Ls裏有個這個目錄  known_hosts 

這是記錄來訪的IP  若是要清空了,再去登錄對方還要輸入密碼

清理方法是[.ssh] #  > know_hosts

怎麼作我在清空known_hosts後,在鏈接對方,還能免密的鏈接上呢?

須要再加幾個參數:

–o StrictHostKeyChecking=no

#sshpass –p 「123123」 ssh-copy-id –i ~/.ssh/id_dsa.pub 「–o StrictHostKeyChecking=no  yunjisuan@192.168.29.144」 回車

(5)在鏈接就能夠了                                           結束

相關文章
相關標籤/搜索