一、前言
在日常使用linux過程中,我們希望不用每次登入linux伺服器都要輸入密碼,那麼這個時候可以選擇ssh金鑰登入,就是rsa公鑰放到伺服器上,私鑰放在客戶端上,每次登入的時候,用金鑰登入;這樣更方便也更安全。
二、步驟
1、首先準備兩台伺服器,一台用作客戶端(zn),一台用作服務端(tos)。
(1)如果需要實現乙個使用者對另乙個使用者的訪問,則需要在建立使用者的時候使用adduser,會在/home下自動建立家目錄。
(2)可以選擇從服務端建立好私鑰、公鑰,然後下發給客戶端;當然也可以從客戶端建立好私鑰、公鑰,然後下發給服務端。以下採用的是服務端生成金鑰對。
2、金鑰登入流程:
(1)服務端生成乙個金鑰對,私鑰自己保留,將公鑰拷貝給客戶端。
(2)客戶端傳送免密登入請求。
(3)伺服器查詢~/.ssh/authorized_keys檔案下是否有對應客戶端ip的公鑰。
(4)如果有,則隨機生成一段字串,並用客戶端的公鑰將字串進行加密,然後傳送給客戶端。
(5)客戶端收到加密的字串後,用私鑰進行解密。
(6)客戶端將解密之後的字串傳送給服務端。
(7)服務端檢查客戶端發來的字串與之前發給客戶端的字串是否一致,若一致則驗證通過。
3、服務端(tos):
(1)cd /home/tos/.ssh (若沒有該目錄,先執行ssh localhost或者mkdir /home/tos/.ssh)
(2)生成公鑰對,此時一直按回車就行
ssh-keygen -t rsa
(3)檢查下.ssh目錄下authorized_keys檔案是否存在,沒有的話建立乙個
touch authorized_keys
(4)將id_rsa.pub的內容追加到authorized_keys檔案尾
cat ./id_rsa.pub >> ./authorized_keys
(5)ssh-copy-id -i /home/tos/.ssh/id_rsa.pub zn@zn的ip位址(將公鑰傳輸到zn;若無ssh-copy-id需要另外安裝)
(6)切換到上級目錄,修改.ssh的許可權為700, authorized_keys的許可權為600或者更嚴格的400,否則登入的時候會提示server refuse you key。
cd ..
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
4、客戶端(zn):
(1)cd /home/zn/.ssh(檢查客戶端是否有rsa私鑰)
(2)登入服務端:
ssh tos@***.***.***.xx
5、關閉密碼登入:
修改配置檔案/etc/ssh/sshd_config
把#號去掉,yes改為no即可
此時該裝置只能用金鑰登入
linux 免密碼登入 金鑰原理
shell指令碼中經常會用到免密碼登入,要了解ssh則需要理解現代密碼學當中的非對稱金鑰及認證中心處理機制等基礎概念 首先說明一下處理機制 1.非對稱金鑰就是一對金鑰 公鑰和私鑰。2.私鑰由系統中沒個人自己持有,一般儲存在自己的電腦裡或u盤裡。3.公鑰則在網路上傳遞,就是可以傳遞給通訊中的對方,也就...
Linux下ssh金鑰多裝置免密碼登入
運維是乙個耐心的活,同時又是乙個需要創新的活。今天工作需要維護幾十台linux機器,之前知道通過儲存金鑰資訊在遠端機器的authorized keys中,但是多台機器互相免密碼登入就很費事。重新有梳理下ssh金鑰登入的流程,遠端機器儲存公鑰匙資訊,ssh傳送請求要登入到遠端機器時,遠端機器會隨機返回...
ssh 免密碼登入 金鑰登入
原文 ssh 免密碼登入 此方法配合ssh 別名登入可以快速登入伺服器 此方法配合ssh tab 自動補全主機名 別名可以快速登入伺服器 ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b ...