SSH (Secure Shell) 密鑰為我們提供了登入 Linux 和 UNIX 的安全方法。當我們使用 SSH 密鑰通路 Linux 系統時,它也被稱為無密碼 SSH 身份驗證。
在這篇文章中,我們将學習如何在 Linux 中使用密鑰設定無密碼 SSH 身份驗證。
實驗準備
- 客戶主機 (Rocky Linux) — SSH Client — 192.168.1.135
- 遠端主機 (Ubuntu 20.04) — 192.168.1.130
(1) 使用 SSH -keygen 指令在客戶主機上生成 SSH 密鑰
登入跳轉主機,執行 ssh-keyen 指令,使用 rsa 算法生成公私鑰對
$ ssh-keygen -t rsa
此指令将提示您輸入公鑰和私鑰的路徑,如果您想保持預設路徑,則按 enter 鍵,并在提示設定密碼短語時按 enter 鍵
ssh-keygen 指令的輸出如下所示
使用 SSH -keygen 指令在客戶主機上生成 SSH 密鑰
注意: ssh-keygen 指令預設生成的密鑰大小為 2048 位。如果你想改變鍵的大小,那麼使用-b 選項後面跟着 size (以位為機關),示例如下所示
$ ssh-keygen -t rsa -b 4096
(2) 複制使用者 Public Key 到遠端 Linux 系統
使用 ssh-copy-id 指令将使用者公鑰拷貝到遠端 linux 系統使用者授權密鑰檔案中。
Syntax: ssh-copy-id <user-name>@<Remote-Linux-System-IP>
$ ssh-copy-id [email protected]
複制使用者 Public Key 到遠端 Linux 系統
(3) 測試無密碼 SSH 身份驗證
現在嘗試從客戶主機 ssh 遠端系統
$ ssh [email protected]
測試無密碼 SSH 身份驗證
很好,上面的輸出确認了我們可以登入到遠端系統,而不需要指定任何密碼。
注意: 一旦密鑰交換和測試完畢,我們應該禁用 root 和其他使用者的基于密碼的身份驗證。
為此,請編輯 /etc/ssh/sshd_config 檔案,然後設定以下參數:
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM yes
儲存并退出檔案,并使用下面的 systemctl 指令重新啟動 ssh 服務
$ sudo systemctl restart sshd
另一個要點是遠端使用者,在我們的例子中 kadmin 應該是 sudo 組的一部分,并且擁有管理權限,這樣它就可以執行管理任務。
以上就是這篇文章的全部内容,我希望你覺得它有用,請在下面的評論區寫下你的問題和回報。
我的開源項目
酷瓜雲課堂-開源線上教育方案
- course-tencent-cloud(酷瓜雲課堂 - gitee 倉庫)
- course-tencent-cloud(酷瓜雲課堂 - github 倉庫)