我們正常使用 ssh 遠(yuǎn)程登錄服務(wù)器進(jìn)行操作徘意,需要輸入用戶名苔悦、服務(wù)器ip以及密碼,當(dāng)我們需要同時管理多個服務(wù)器的時候椎咧,每次都需要重復(fù)輸入這些東西會顯得特別麻煩和浪費時間玖详,因此我們可以通過配置密鑰來實現(xiàn)Ubuntu免密碼登錄。
實現(xiàn)這一目標(biāo)五部勤讽,分別為:
- 本地客戶端生成密鑰對
- 上傳密鑰到服務(wù)器端
- 服務(wù)器端將密鑰添加到 authorized_keys
- 本地客戶端配置 ssh蟋座,添加服務(wù)器別名
- 測試
如果客戶端是使用 MacOS 或者 Linux 系統(tǒng),可以直接在終端使用以下操作即可脚牍,如果 Window 系統(tǒng)向臀,建議先安裝 Git-Bash,Git-bash 自帶 ssh 工具诸狭,在 Git-Bash 下券膀,操作也和 Linux 或者 MacOS 系統(tǒng)一樣。
本地客戶端生成密鑰對
在生成密鑰對之前驯遇,我們可以先查看一下我們是否已經(jīng)生成過密鑰對芹彬,可以通過以下命令:
ls -la ~/.ssh
如果輸出有 id_rsa
和 id_rsa.pub
,那么就證明之前曾經(jīng)生成過密鑰對叉庐,其中 id_rsa
是私鑰舒帮,id_rsa.pub
是公鑰,我們可以直接使用。如果沒有看到這兩個文件会前,那么請回憶是否自己命名的密鑰對,如果沒有或者已經(jīng)忘記是否曾經(jīng)生成過匾竿,那么久可以重新創(chuàng)建一個瓦宜。方法如下:
ssh-keygen -t rsa -b 2048
執(zhí)行命令后,會提示密鑰存儲位置岭妖,以及詢問是否需要設(shè)置密碼临庇,一般我們可以一路按 Enter
確認(rèn)即可完成密鑰生成。
完成后我們再次查看 ~/.ssh
文件夾下是否由我們新創(chuàng)建的密鑰即可昵慌。
上傳密鑰的服務(wù)器端
接下來假夺,我們將我們創(chuàng)建好的公鑰上傳到服務(wù)器上,我們將會使用到 scp
命令斋攀。
scp ~/.ssh/id_rsa.pub <YOUR SERVER USERNAME>@<YOUR SERVER IP ADDRESS>:~
這里需要注意的是已卷,我們需要上傳的是公鑰,其文件名為 id_rsa.pub
淳蔼,私鑰是需要我們保密的侧蘸,這里不要上傳錯。
服務(wù)器端將密鑰添加到 authorized_keys
接下來鹉梨,我們需要登錄我們的服務(wù)器讳癌,然后將我們剛上傳的公鑰添加到 authorized_keys中。在添加之前存皂,我們需要先做一下準(zhǔn)備晌坤,具體如下:
- 檢查是否存在 .ssh 文件
- 如果不存在需要自行創(chuàng)建
如果是剛安裝的系統(tǒng),以我的 Ubuntu 16.04.4 為例旦袋,默認(rèn)的 ssh 是沒有自動創(chuàng)建 .ssh 文件夾的骤菠,這需要我們自己創(chuàng)建。不同版本的系統(tǒng)或者以不同途徑安裝的 ssh 可能情況會有所不一樣猜憎,請根據(jù)實際情況處理娩怎。
- 如果不存在需要自行創(chuàng)建
# 查看是否存來 .ssh 文件夾
ls -la ~
# 如果不存在,創(chuàng)建 .ssh 文件夾
mkdir .ssh
# 將公鑰添加到 authorized_keys 文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
以上即完成操作胰柑,在 Ubuntu 16.04.4 的系統(tǒng)默認(rèn)配置中截亦,以上操作完成即可。然而柬讨,在一些不同版本的系統(tǒng)中崩瓤,可能還需要配置以下 ssh 的配置,具體如下:
- 備份
/etc/ssh/sshd_config
- 編輯
/etc/ssh/sshd_config
踩官,將PubkeyAuthentication no
修改為PubkeyAuthentication yes
本地客戶端配置 ssh却桶,添加服務(wù)器別名
完成上面的配置后,我們可以嘗試在本地中嘗試使用密鑰登錄看是否成功:
ssh -i ~/.ssh/id_rsa <YOUR SERVER NAME>@<YOUR SERVER IP ADDRESS>
如果配置正確就可以正常免密碼登錄。
為了解決需要管理多臺服務(wù)器颖系,不希望記住太多不同的用戶名和地址的問題嗅剖,我們還可以為設(shè)置別名登錄,具體操作如下:
- 在本地 .ssh/ 文件夾下創(chuàng)建 config
- 向 config 中添加別名信息
# ~/.ssh/config 配置格式
Host <YourServerAlias>
HostName <YourServerIPAddress>
Port <YourServerSSHPort>
User <YourServerUserName>
IdentityFile ~/.ssh/id_rsa
測試
完成所有配置后嘁扼,我們可以測試一下配置是否正確:
ssh <Host Alias>
如果能正常免密碼登錄信粮,說明配置成功,我們以后便可以通過這樣直接輸入服務(wù)器別名的方式快速登錄服務(wù)器了趁啸。