SSH免密登入

2021-10-02 22:09:55 字數 3149 閱讀 7673

ssh是一種通訊協議,可以實現遠端安全登入。可以通過如putty、mobaxterm等工具通過ssh安全登入到虛擬機器進行操作。

openssh:ssh遠端安全登入的開源實現(軟體)。

一般mac os和linux系統中均有openssh,windows可以借助xshell等軟體。

ssh之所以能夠保證安全,原因在於它採用了公鑰加密。

當我們使用密碼登陸遠端伺服器,整個過程是這樣的:

①當遠端伺服器收到某個客戶端的登入請求,會準備把自己的公鑰傳送給客戶端。

②客戶端接收儲存後將使用這個公鑰,將輸入的登入密碼加密後,傳送給遠端伺服器。

③遠端伺服器用自己的私鑰,解密公鑰加密過的登入密碼,如果密碼正確,就同意使用者登入。

命令步驟是這樣的(這裡假設遠端主機ip為192.168.2.128,當然一般肯定不是這個數字):

$ ssh [email protected]

the authenticity of host '192.168.2.128 (192.168.2.128)' can't be established.

ecdsa key fingerprint is sha256:ogcmstimwxfiwnypauskfqv3gx6j/rujy6tq3dvoswi.

are you sure you want to continue connecting (yes/no)?

這段話的意思簡單來說就是,你想要接收遠端伺服器137.36.2.1的公鑰嗎?

你肯定要確定接收呀,輸入yes回車

系統會出現一句提示,表示host主機已經得到認可,並將公鑰儲存在檔案$home/.ssh/known_hosts之中。:

平常我們每次登陸遠端伺服器都要輸入密碼多麻煩啊,而且遠端伺服器開啟密碼登陸可能被黑客暴力試錯破解,因此後面我們會禁止伺服器通過密碼登入,不過我們先實現下免密登入再去那樣做(不然你把密碼登入關了還怎麼登???哈哈):

①首先在客戶端通過特定演算法生成一對秘鑰(公鑰私鑰)

ssh-keygen -t rsa  -c "[email protected]"

引數說明:

-t 加密演算法型別,這裡是使用rsa演算法 如果沒有指定則預設生成用於ssh-2的rsa金鑰。這裡使用的是rsa。

同時在金鑰中有乙個注釋字段,用-c來指定所指定的注釋,可以方便使用者標識這個金鑰,指出金鑰的用途或其他有用的資訊。

所以在這裡輸入自己的郵箱或者其他資訊都行

當然,如果不想要這些可以直接輸入(一般也是這麼做的)下面命令: 

ssh-keygen
之後會在使用者的根目錄下的.ssh資料夾生成私鑰id_rsa和公鑰id_rsa.pub。本地的.ssh的資料夾存在以下幾個檔案:

id_rsa : 執行命令後生成的私鑰檔案

id_rsa.pub : 執行命令後生成的公鑰檔案

know_hosts : 已知的主機公鑰清單//ssh命令遠端連線不同伺服器時可以選擇接受到不同的公鑰,會將這些主機的公鑰都儲存在這裡

注意:執行上面命令後,它要求你輸入加密的一些附加引數,不用管,一般預設就好,一直回車即可生成秘鑰。

②將客戶端的公鑰~/.ssh/id_rsa.pub通過ssh-copy-id -i拷貝到伺服器

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@***.***.***.***

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

注意:執行上面命令後,它要求你輸入加密的一些附加引數,不用管,一般預設就好,一直回車即可生成秘鑰。

②將客戶端的公鑰~/.ssh/id_rsa.pub通過ssh-copy-id -i拷貝到伺服器

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@***.***.***.***

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

注意:此時需要登入到user@***.***.***.***伺服器的密碼(沒錯,這裡又用到了前面ssh密碼登入裡講過的步驟),輸入正確後即可在伺服器生成公鑰,該公鑰儲存在伺服器家目錄的.sshauthorized_keys檔案中(作用:存放遠端免密登入的公鑰,主要通過這個檔案記錄多台機器的公鑰),然後退出即可。

③當客戶端以後再傳送連線請求,包括使用者名稱、ip

ssh root@***.***.***.***
④伺服器得到客戶端的請求後,就會到authorized_keys中查詢,如果有響應的使用者名稱和ip,就會隨機生成乙個字串;

⑤伺服器將使用客戶端拷貝過來的公鑰進行加密,然後傳送給客戶端;

⑥得到伺服器傳送來的訊息後,客戶端會使用私鑰進行解密,然後將解密後的字串傳送給伺服器;

⑦伺服器接收到客戶端傳送來的字串後,跟之前的字串進行對比,如果一致,就允許免密碼登入。

是不是很方便呢?

思考:兩台linux如何配置互相免密登入,n臺liunx如何配置互相免密登入。

SSH免密登入

a為本地主機 b為遠端主機 生成公鑰私鑰對 ssh keygen t rsa登入遠端機器 ssh root 然後輸入密碼 將.ssh的許可權設為700 mkdir ssh 如果資料夾已存在,跳過 chmod 700 ssh將本地生成的rsa公鑰複製到遠端機器 scp ssh id rsa.pub r...

SSH免密登入

當我們在配置多台計算,使之可以相互使用無密碼登入 ssh,之前都是一台一台的配置,現在一台a上新增b,然後在另一台b上再次新增a,這樣使得authorized keys中的內容相同,但時並不是完全相同,比如新增順序。如果超過2臺,這種配置就相當複雜了,而且容易出錯。後來,在網上看到了一種簡單的配置,...

SSH免密登入

前提 本地和遠端伺服器都已經安裝了ssh 遠端伺服器ip 192.168.1.145 遠端登入使用者 admin 本地命令 1 ssh keygen t rsa p 一路回車 2 scp ssh id rsa.pub admin 192.168.1.145 home admin ssh 3 按提示輸...