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

2021-08-07 17:08:08 字數 3257 閱讀 6217

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

過程流程圖:

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

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

我們在主機a和主機b中分別使用ssh-lkeygen命令,生成用來加密的公鑰和私鑰。然後我們把主機a的公鑰放到主機b下面的.ssh/authorized_keys檔案當中。

當我們下次使用ssh 使用者名稱@伺服器ip登入的時候,主機b呢就使用:主機a的公鑰+主機b 的密碼傳送給主機a,然後主機a使用自己的私鑰解密,得到主機b的密碼,

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

進行遠端拷貝

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

-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的選項。

服務端

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

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

注意:進行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 zyh@主機名/ip」這樣的方式登入。

linux配置ssh免密登入

linux配置ssh免密登入 a主機ssh keygen t rsa cat ssh id rsa.pub ssh authorized keys 注意 ssh keygen t rsa 這一步一直按enter鍵,不能輸入密碼 a主機複製生成的秘鑰到b機器上 scp ssh authorized k...

Linux配置SSH免密登入

一 準備 1.同步時間 date 命令可以檢視虛擬機器當前日期和時間 date s 2018 08 08 08 08 08 手動設定時間 ntpdate cn.pool.ntp.org 網路同步時間 2.設定主機名 方式一 vim etc sysconfig network 設定hostname n...

Linux 配置SSH免密登入

記得之前有一片文章應該寫過了,不過今天我們換一種方法,直接通過ssh copy id來進行操作 主要內容就三步,生產金鑰,copy金鑰,驗證登入。假設我們需要從機器a免密登入到機器b,那麼只要按著上述三步進行以下操作即可。在機器a上生成金鑰 ssh keygen t rsa一路回車即可 將金鑰通過s...