linux(十)配置ssh免密登錄實現
知道ssh的朋友應該知道它是用來幹什麽的,如果你不知道什麽是ssh遠程登錄的話,可以去看一下我的上一篇博客,關於linux的網絡基礎的知識。
備註:ssh是用於遠端登入。執行ssh指令開啟終端機階段作業,並登入遠端主機。
一、ssh遠程登錄
今天要和大家說的是,當我們一臺客戶機要遠程登錄到服務器的時候,輸入密碼才能登錄成功。
過程流程圖:
所以我們在想能不能我們不需要輸入密碼,直接使用ssh 用戶名@服務器ip就可以登錄呢?
二、ssh免密登錄原理
看到這個圖可能大家有一點蒙逼。我給大家解釋一下。
我們在主機A和主機B中分別使用ssh-lkeygen命令
當我們下次使用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: 不顯示傳輸進度條。
-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免密登錄實現