如何向服務(wù)器添加 ssh 公鑰
使用用戶賬號進行 ssh 連接認證有密碼被泄露的風險,為了規(guī)避這個風險,可以使用密鑰的方式進行身份認證。使用密鑰就需要將公鑰添加到服務(wù)器,我們今天介紹一下如何將公鑰添加到服務(wù)器。
我們假設(shè)大家了解 ssh 的基本概念,且在 Linux 服務(wù)器上已經(jīng)啟動了 ssh,個人計算機上已經(jīng)生成了 ssh 密鑰。現(xiàn)在需要做的就是將公鑰上傳到服務(wù)器的授權(quán)密鑰,這樣就可以不需要賬號密碼來訪問服務(wù)器了。
前置條件
在正式開始介紹之前,我們需要準備的東西如下:
1)目標服務(wù)器已經(jīng)啟用 ssh;
2)已經(jīng)生成了公鑰和私鑰(使用命令 ssh-keygen -t rsa);
3)在服務(wù)器上有可用的賬戶(用戶名和密碼,root 也可以);
4)知道服務(wù)器的 IP 地址。
滿足上述四個條件后,接下來我們就來看看如何使用公鑰身份認證。
方法1:自動將ssh密鑰復制到服務(wù)器
第一種方法是用戶將其個人計算機的公鑰復制到遠程服務(wù)器上的授權(quán)密鑰列表中。
這里,我假設(shè)你能夠使用 ssh 登錄到遠程服務(wù)器 user_name@ip_of_server,它會詢問你的帳戶密碼,然后您進入服務(wù)器。
如果你將公鑰添加到服務(wù)器,那么就應(yīng)該可以在不輸入密碼的情況下登錄。
OpenSSH 提供了一個稱為 ssh-copy-id 的工具,用于將 ssh 公鑰復制到遠程系統(tǒng),它還可以創(chuàng)建所需的目錄和文件。如下命令:
出現(xiàn)系統(tǒng)提示時,輸入遠程服務(wù)器上用戶帳戶的密碼,公鑰就會自動復制到遠程服務(wù)器上的相應(yīng)文件夾中。
上述命令中有個路徑:~/.ssh/id_rsa.pu,這是 ssh 公鑰的默認位置,大家需要根據(jù)自己實際情況修改這個路徑。
方法2:手動將 ssh 公鑰添加到服務(wù)器
第一種方法在用戶端執(zhí)行操作。假設(shè)你是系統(tǒng)管理員,你的服務(wù)器不允許通過密碼進行 ssh 登錄,那么訪問服務(wù)器的唯一方法是使用 ssh 公鑰身份驗證。
在這種情況下,你可以要求最終用戶提供其公鑰。現(xiàn)在,你可以做的是創(chuàng)建 .ssh/authorized_keys 目錄,然后在這里復制公鑰。
步驟1:獲取公鑰
鍵入如下命令,要求用戶提供公鑰:
它將顯示一個以 ssh-rsa 開頭的長字符串:
你可以通過電子郵件或即時消息工具來獲取上述文本。
步驟2:在用戶的主目錄中創(chuàng)建ssh目錄(作為sysadmin)
注意,你必須在最終用戶的主目錄中創(chuàng)建這些新目錄和文件,而不是你的主目錄(root/sysadmin)。
然后使用文本編輯器(比如 vim)打開這個文件 /home/user_name/.ssh/authorized_keys,并在此處添加用戶公鑰:
保存并關(guān)閉。
步驟3:為文件設(shè)置權(quán)限
然后我們需要為文件設(shè)置適當?shù)臋?quán)限,否則回看到類似 Permission denied (publickey) 的報錯信息。
首先,確保設(shè)置正確的文件權(quán)限:
由于我們使用 root 或我們自己的管理員帳戶為其他用戶創(chuàng)建了這些文件,所以需要更改用戶的所有權(quán):
這樣就完成了,可以讓最終用戶嘗試登錄一下了。