我們正常使用 ssh 遠端登入伺服器進行操作,需要輸入使用者名稱、伺服器ip以及密碼,當我們需要同時管理多個伺服器的時候,每次都需要重複輸入這些東西會顯得特別麻煩和浪費時間,因此我們可以透過配置金鑰來實現Ubuntu免密碼登入。 實現這一目標五部,分別為:- 本地客戶端生成金鑰對- 上傳金鑰到伺服器端- 伺服器端將金鑰新增到 authorized_keys- 本地客戶端配置 ssh,新增伺服器別名- 測試 如果客戶端是使用 MacOS 或者 Linux 系統,可以直接在終端使用以下操作即可,如果 Window 系統,建議先安裝 Git-Bash,Git-bash 自帶 ssh 工具,在 Git-Bash 下,操作也和 Linux 或者 MacOS 系統一樣。 本地客戶端生成金鑰對在生成金鑰對之前,我們可以先檢視一下我們是否已經生成過金鑰對,可以透過以下命令:
我們正常使用 ssh 遠端登入伺服器進行操作,需要輸入使用者名稱、伺服器ip以及密碼,當我們需要同時管理多個伺服器的時候,每次都需要重複輸入這些東西會顯得特別麻煩和浪費時間,因此我們可以透過配置金鑰來實現Ubuntu免密碼登入。 實現這一目標五部,分別為:- 本地客戶端生成金鑰對- 上傳金鑰到伺服器端- 伺服器端將金鑰新增到 authorized_keys- 本地客戶端配置 ssh,新增伺服器別名- 測試 如果客戶端是使用 MacOS 或者 Linux 系統,可以直接在終端使用以下操作即可,如果 Window 系統,建議先安裝 Git-Bash,Git-bash 自帶 ssh 工具,在 Git-Bash 下,操作也和 Linux 或者 MacOS 系統一樣。 本地客戶端生成金鑰對在生成金鑰對之前,我們可以先檢視一下我們是否已經生成過金鑰對,可以透過以下命令:
如果輸出有 和 ,那麼就證明之前曾經生成過金鑰對,其中 是私鑰, 是公鑰,我們可以直接使用。如果沒有看到這兩個檔案,那麼請回憶是否自己命名的金鑰對,如果沒有或者已經忘記是否曾經生成過,那麼久可以重新建立一個。方法如下: 執行命令後,會提示金鑰儲存位置,以及詢問是否需要設定密碼,一般我們可以一路按 確認即可完成金鑰生成。 完成後我們再次檢視 資料夾下是否由我們新建立的金鑰即可。 上傳金鑰的伺服器端接下來,我們將我們建立好的公鑰上傳到伺服器上,我們將會使用到 命令。 這裡需要注意的是,我們需要上傳的是公鑰,其檔名為 ,私鑰是需要我們保密的,這裡不要上傳錯。 伺服器端將金鑰新增到 authorized_keys接下來,我們需要登入我們的伺服器,然後將我們剛上傳的公鑰新增到 authorized_keys中。在新增之前,我們需要先做一下準備,具體如下:- 檢查是否存在 .ssh 檔案 - 如果不存在需要自行建立 如果是剛安裝的系統,以我的 Ubuntu 16.04.4 為例,預設的 ssh 是沒有自動建立 .ssh 資料夾的,這需要我們自己建立。不同版本的系統或者以不同途徑安裝的 ssh 可能情況會有所不一樣,請根據實際情況處理。 以上即完成操作,在 Ubuntu 16.04.4 的系統預設配置中,以上操作完成即可。然而,在一些不同版本的系統中,可能還需要配置以下 ssh 的配置,具體如下:- 備份 - 編輯 ,將 修改為 本地客戶端配置 ssh,新增伺服器別名完成上面的配置後,我們可以嘗試在本地中嘗試使用金鑰登入看是否成功: 如果配置正確就可以正常免密碼登入。 為了解決需要管理多臺伺服器,不希望記住太多不同的使用者名稱和地址的問題,我們還可以為設定別名登入,具體操作如下:- 在本地 .ssh/ 資料夾下建立 config- 向 config 中新增別名資訊 測試完成所有配置後,我們可以測試一下配置是否正確: 如果能正常免密碼登入,說明配置成功,我們以後便可以透過這樣直接輸入伺服器別名的方式快速登入伺服器了。