linux(十)配置ssh免密登錄實現


知道ssh的朋友應該知道它是用來干什么的,如果你不知道什么是ssh遠程登錄的話,可以去看一下我的上一篇博客,關於linux的網絡基礎的知識。
備注:ssh是用於遠端登入。執行ssh指令開啟終端機階段作業,並登入遠端主機。

一、ssh遠程登錄    

今天要和大家說的是,當我們一台客戶機要遠程登錄到服務器的時候,輸入密碼才能登錄成功。

過程流程圖:

    

  所以我們在想能不能我們不需要輸入密碼,直接使用ssh 用戶名@服務器ip就可以登錄呢?

二、ssh免密登錄原理   

  

    看到這個圖可能大家有一點蒙逼。我給大家解釋一下。

    我們在主機A和主機B中分別使用ssh-lkeygen命令,生成用來加密的公鑰和私鑰。然后我們把主機A的公鑰放到主機B下面的.ssh/authorized_keys文件當中。

    當我們下次使用ssh 用戶名@服務器ip登錄的時候,主機B呢就使用:主機A的公鑰+主機B 的密碼發送給主機A,然后主機A使用自己的私鑰解密,得到主機B的密碼,

    這樣就實現了ssh免密登錄的功能。

三、和ssh相關的遠程拷貝命令scp

  3.1、命令說明

    進行遠程拷貝

  3.2、命令語法

    scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2

    簡易寫法:scp [option(s)] source destination

  3.3、參數說明

      -1: 強制scp命令使用協議ssh1
           -2: 強制scp命令使用協議ssh2
           -4: 強制scp命令只使用IPv4尋址
           -6: 強制scp命令只使用IPv6尋址
           -B: 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
           -C: 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)
           -p:保留原文件的修改時間,訪問時間和訪問權限。
           -q: 不顯示傳輸進度條。
           -r: 遞歸復制整個目錄。
           -v:詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。
            -c cipher:以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
            -F ssh_config:指定一個替代的ssh配置文件,此參數直接傳遞給ssh。
            -i  identity_file:從指定文件讀取傳輸時使用的密鑰文件,此參數傳遞給ssh。
            -l  limit: 限定用戶所能使用的帶寬,以Kbit/s為單位。
            -o  ssh_option: 如果習慣於使用ssh_config(5)中的參數傳遞方式,
            -P  port:注意是大寫的P, port是指定數據傳輸用到的端口號
            -S  program:指定加密傳輸時所使用的程序。此程序必須能夠理解ssh的選項。

  3.4、測試

   
  服務端

  

  如果遠程拷貝的是目錄的話,要加-r

四、免密登錄的實現

  4.1、環境

  本人是使用的ubuntu17.04的版本的桌面版作為客戶端,使用ubuntu的server版作為服務器端。

  4.2、實現過程

  注意:進行SSH免密登錄的是兩台機器的用戶名相同例如有A、B兩台機器,這兩台機器上都有一個用戶名同為zyh的用戶。現在的需求是在A機器上通過免密(不輸入密碼,即免密)方式登錄B機器。。我們可以直接使用:ssh 服務器端的ip登錄。
     當用戶名不相同的時候,就要使用:ssh 服務器端的用戶名@服務器端的ip進行登錄。在這里我本人的是兩台機器用戶名是相同的

      客戶端:       服務器端:

 

   第一步:分別在A和B機器上使用命令“ssh-keygen”生成公鑰和私鑰。
                     執行該命令之后會在zyh用戶的家目錄下生成“.ssh/”目錄和在該“.ssh/”目錄下生成公鑰“id_rsa.pub”文件和私鑰“id_rsa”文件

                       

    注意:公鑰是用來加密的,私鑰是用來解密的。

  第二步:A機器上的zyh用戶家目錄下的.ssh/目錄下的id_rsa.pub拷貝到B機器的zyh用戶的家目錄下(注意是家目錄,不是.ssh目錄)。

      命令:scp /home/zyh/.ssh/id_rsa.pub zyh@1.0.0.3:~
                     命令說明:將上述命令中的“B”更換為具體的主機名或者是IP。注意是拷貝到B機器上的briup用戶的家目錄,不是“.ssh”目錄。

     

    這里是因為主機A和主機B使用的是同一個用戶,所以沒有使用zyh@1.0.0.3:~

    查看服務器端

    

  第三步:在B機器上,將剛剛從A機器上拷貝過來的“id_rsa.pub”(即B機器zyh用戶家目錄下的“id_rsa.pub”)的內容復制到B機器上的zyh家目錄下的“.ssh”目錄下的“authorized_keys”文件(注意:第一次使用的話,是沒有這個文件的)中
                        命令:cat /home/zyh/id_rsa.pub >> /home/zyh/.ssh/authorized_keys
                        命令說明:上述命令是在B機器上執行

    

  第四步:更改第三步執行命令所生成的“authorized_keys”文件的操作權限為600。(這是ssh協議所要求的)
                        命令:chmod 600 /home/zyh/.ssh/authorized_keys
                        命令說明:上述命令在B機器上執行

  

  第五步:在A機器上通過無密碼登錄B機器。
                        命令:ssh B
                        命令說明:上述命令在B機器上執行,將“B”更換為具體的主機名或IP地址。(這是在主機A和主機B用戶名相同的情況)

    成功測試

 

  補充:在使用SSH工具進行遠程登錄的時候,如果登錄的兩個機器的用戶名相同,可以直接使用命令“ssh 主機名/IP”來遠程登錄,而不需要輸入用戶名即不需要以“ssh zyh@主機名/IP”這樣的方式登錄

 

 

  

      

 

      

 

  

 

 

 

 (


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM