1. 程式人生 > >[原創] SSH免密登錄設置----原理詳解

[原創] SSH免密登錄設置----原理詳解

authorize inf 截圖 弊端 連接 登錄驗證 操作 ssh 分享圖片

  首先介紹一下SSH:

  技術分享圖片

  當我們用一臺服務器登錄另一臺服務器可直接使用SSH協議進行登陸

//具體格式:
//        ssh  [用戶名]@[IP]

ssh wdy@192.168.33.12

  也可以直接遠程傳送文件到另一臺服務器,具體格式如下:

//具體格式:
//            scp [文件名] [目標服務器用戶名]@[目標服務器IP] : [目標復制位置]

scp test.txt root@192.168.33.12:/home

  

  註意:以上操作方法存在弊端,每次操作都需要輸入目標服務器的密碼,不適合集群服務器的批量操作。所以一般我們會用SSH的第二種身份驗證機制:密鑰驗證。

驗證流程如下圖:

技術分享圖片

  即在源服務器上先生成一份公鑰和一份密鑰,將公鑰復制到目標服務器,利用命令將公鑰添加至目標服務器的授權列表(authorized_keys)。當有服務器帶著公鑰申請連接服務器時,目標服務器首先在authorized_keys中查找是否存在該公鑰,如果存在則開始進行驗證。首先生成一個隨機字符串,利用對應公鑰進行加密,然後返回給申請連接的服務器,申請連接服務器利用私鑰進行解密,再將字符串返回給目標服務器完成驗證,進行後續操作。

  首先在源服務器上生成公鑰和密鑰:

//具體格式:
//    其中  -t  [加密方式]        
                ssh-keygen -t rsa
//默認會在 /root/.ssh/ 重生成公鑰和密鑰 id_rsa id_rsa.pub

  如下圖:

技術分享圖片

  接下來我們需要將源服務器生成的公鑰拷貝到目標服務器中並添加至authorized_keys列表中,這兩步可以使用一個簡便命令進行執行:

//將公鑰添加至目標服務器的authorized_keys列表中
//具體格式:
//            ssh-copy-id [目標服務器IP]
    ssh-copy-id 192.168.33.12

  截圖如下:

技術分享圖片

  我們在目標服務器的 /root/.ssh 文件夾中查看授權列表authorized_keys發現原服務器的公鑰已經添加進去:

技術分享圖片

  至此我們已經完成了SSH免密登錄的設置,可以再源服務器上進行登錄驗證,已經不需要再輸入密碼:

技術分享圖片

  同樣我們可以在目標服務器上進行同樣的設置使兩臺服務器相互免密登錄。

[原創] SSH免密登錄設置----原理詳解