我們正常使用 ssh 遠(yuǎn)程登錄服務(wù)器進(jìn)行操作,需要輸入用戶名、服務(wù)器ip以及密碼,當(dāng)我們需要同時(shí)管理多個(gè)服務(wù)器的時(shí)候,每次都需要重復(fù)輸入這些東西會(huì)顯得特別麻煩和浪費(fèi)時(shí)間,因此我們可以通過(guò)配置密鑰來(lái)實(shí)現(xiàn)Ubuntu免密碼登錄。
實(shí)現(xiàn)這一目標(biāo)五部,分別為:
- 本地客戶端生成密鑰對(duì)
- 上傳密鑰到服務(wù)器端
- 服務(wù)器端將密鑰添加到 authorized_keys
- 本地客戶端配置 ssh,添加服務(wù)器別名
- 測(cè)試
如果客戶端是使用 MacOS 或者 Linux 系統(tǒng),可以直接在終端使用以下操作即可,如果 Window 系統(tǒng),建議先安裝 Git-Bash,Git-bash 自帶 ssh 工具,在 Git-Bash 下,操作也和 Linux 或者 MacOS 系統(tǒng)一樣。
本地客戶端生成密鑰對(duì)
在生成密鑰對(duì)之前,我們可以先查看一下我們是否已經(jīng)生成過(guò)密鑰對(duì),可以通過(guò)以下命令:
ls -la ~/.ssh
如果輸出有 id_rsa 和 id_rsa.pub,那么就證明之前曾經(jīng)生成過(guò)密鑰對(duì),其中 id_rsa 是私鑰,id_rsa.pub 是公鑰,我們可以直接使用。如果沒(méi)有看到這兩個(gè)文件,那么請(qǐng)回憶是否自己命名的密鑰對(duì),如果沒(méi)有或者已經(jīng)忘記是否曾經(jīng)生成過(guò),那么久可以重新創(chuàng)建一個(gè)。方法如下:
ssh-keygen -t rsa -b 2048
執(zhí)行命令后,會(huì)提示密鑰存儲(chǔ)位置,以及詢問(wèn)是否需要設(shè)置密碼,一般我們可以一路按 Enter 確認(rèn)即可完成密鑰生成。
完成后我們?cè)俅尾榭?~/.ssh 文件夾下是否由我們新創(chuàng)建的密鑰即可。
上傳密鑰的服務(wù)器端
接下來(lái),我們將我們創(chuàng)建好的公鑰上傳到服務(wù)器上,我們將會(huì)使用到 scp 命令。
scp ~/.ssh/id_rsa.pub <YOUR SERVER USERNAME>@<YOUR SERVER IP ADDRESS>:~
這里需要注意的是,我們需要上傳的是公鑰,其文件名為 id_rsa.pub,私鑰是需要我們保密的,這里不要上傳錯(cuò)。
服務(wù)器端將密鑰添加到 authorized_keys
接下來(lái),我們需要登錄我們的服務(wù)器,然后將我們剛上傳的公鑰添加到 authorized_keys中。在添加之前,我們需要先做一下準(zhǔn)備,具體如下:
- 檢查是否存在 .ssh 文件
- 如果不存在需要自行創(chuàng)建
如果是剛安裝的系統(tǒng),以我的 Ubuntu 16.04.4 為例,默認(rèn)的 ssh 是沒(méi)有自動(dòng)創(chuàng)建 .ssh 文件夾的,這需要我們自己創(chuàng)建。不同版本的系統(tǒng)或者以不同途徑安裝的 ssh 可能情況會(huì)有所不一樣,請(qǐng)根據(jù)實(shí)際情況處理。
- 如果不存在需要自行創(chuàng)建
# 查看是否存來(lái) .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>
如果配置正確就可以正常免密碼登錄。
為了解決需要管理多臺(tái)服務(wù)器,不希望記住太多不同的用戶名和地址的問(wèn)題,我們還可以為設(shè)置別名登錄,具體操作如下:
- 在本地 .ssh/ 文件夾下創(chuàng)建 config
- 向 config 中添加別名信息
# ~/.ssh/config 配置格式
Host <YourServerAlias>
HostName <YourServerIPAddress>
Port <YourServerSSHPort>
User <YourServerUserName>
IdentityFile ~/.ssh/id_rsa
測(cè)試
完成所有配置后,我們可以測(cè)試一下配置是否正確:
ssh <Host Alias>
如果能正常免密碼登錄,說(shuō)明配置成功,我們以后便可以通過(guò)這樣直接輸入服務(wù)器別名的方式快速登錄服務(wù)器了。