1. 程式人生 > >linux(十)配置ssh免密登錄實現

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

conf .cn key 操作 ipv4 必須 打開 什麽 gen

知道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] [[[email protected]]host1:]file1 [...] [[[email protected]]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 [email protected]:~
命令說明:將上述命令中的“B”更換為具體的主機名或者是IP。註意是拷貝到B機器上的briup用戶的家目錄,不是“.ssh”目錄。

    技術分享

    這裏是因為主機A和主機B使用的是同一個用戶,所以沒有使用[email protected]:~

    查看服務器端

    技術分享

  第三步:在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 [email protected]主機名/IP”這樣的方式登錄

 

  

      

      

  

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