Linux下實現SSH免密碼登入

2021-07-31 06:09:49 字數 2157 閱讀 1092

一般linux伺服器之間通過ssh(secure shell)進行通訊,埠為22,在登入別的伺服器(或自己)時需要輸入密碼,包括在linux上搭建hadoop偽分布啟動hadoop時需要一直輸入密碼。如下所示

很麻煩,一般會設定ssh免密碼登入。

準備工作:

準備兩台linux伺服器,hostname和ip分別為:itcast01:192.168.8.88;itcast02:192.168.8.99 。並保證相互之間能ping通(網路通暢)。

第一步:連線本機(不要小看連線本機,連線本機也是需要輸密碼的,在搭建hadoop時經常會用到)

使用itcast01,在根目錄下 :ls -al 可以發現由個.ssh的隱藏檔案。

檢視.ssh資料夾可以發現是空的。

接下來我們連線itcast02。

可以看到我們首次連線itcast02:192.168.8.88,會提示我們第一次連線,鍵入yes後輸入密碼,連線成功。

exit退出後,我們可以看見在itcast01的.ssh目錄下多出了個known_hosts資料夾,檢視後我們可以看出是對前面連線的itcast02的乙個記錄,再次連線時便是直接輸入密碼即可

好了,接下來我們便實現免密碼登入。

首先需要在.ssh目錄下生成秘鑰和公鑰:在.ssh目錄下鍵入:ssh-keygen -t rsa(-t rsa表示:生成的演算法選擇為rsa)。

可以看出生成了乙個公鑰(id_rsa.pub)和乙個秘鑰(id_rsa)

接下來,在.ssh資料夾下建立cp id_rsa.pub authorized_keys

可以看出,該操作是在.ssh資料夾下建立authorized_keys(注意,檔案的名稱必須是:authorized_keys,而且是個檔案,不是個資料夾),並將公鑰中的資訊複製進去。

這時候我們可以發現,itcast01自登陸時就可以免密碼登陸了。

第二部:實現不同機器之間的免密碼登入

接下來實現不同linux伺服器之間的免密碼登入。

當然,ssh提供了指令來實現這一系列操作: ssh-copy-id ******即將自己的公鑰發到指定機器的.ssh資料夾下的authorized_keys檔案(沒有則自動建立)

在鍵入密碼後連線成功。

這時候,我們可以發現在itcast02的.ssh下的authorized_keys檔案中存在了itcast01的公鑰資訊。

如此則實現了itcast01免密碼登入到itcast02的目的,但這時候itcast02卻不能免密碼登入itcast01,

原因是,itcast01的authorized_keys檔案中沒有itcast02的公鑰,要實現itcast02免密碼登入itcast01,其操作和itcast01登入itcast02相同。

第三步:了解原理

Linux下SSH免密碼登入

ssh配置 主機a 10.0.5.199 主機b 10.0.5.198 需要配置主機a無密碼登入主機a,主機b 先確保所有主機的防火牆處於關閉狀態。在主機a上執行如下 1.cd ssh 2.ssh keygen t rsa 然後一直按回車鍵,就會按照預設的選項將生成的金鑰儲存在.ssh id rsa...

Linux下SSH免密碼登入

ssh配置 主機a 10.0.5.199 主機b 10.0.5.198 需要配置主機a無密碼登入主機a,主機b 先確保所有主機的防火牆處於關閉狀態。在主機a上執行如下 1.cd ssh 2.ssh keygen t rsa 然後一直按回車鍵,就會按照預設的選項將生成的金鑰儲存在.ssh id rsa...

Linux下SSH免密碼登入

ssh配置 主機a 10.0.5.199 主機b 10.0.5.198 需要配置主機a無密碼登入主機a,主機b 先確保所有主機的防火牆處於關閉狀態。在主機a上執行如下 1.cd ssh 2.ssh keygen t rsa 然後一直按回車鍵,就會按照預設的選項將生成的金鑰儲存在.ssh id rsa...