天天看點

Linux下使用密鑰設定SSH無密碼登入,網管必會技能

作者:鸠摩智首席音效師

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 指令的輸出如下所示

Linux下使用密鑰設定SSH無密碼登入,網管必會技能

使用 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]           
Linux下使用密鑰設定SSH無密碼登入,網管必會技能

複制使用者 Public Key 到遠端 Linux 系統

(3) 測試無密碼 SSH 身份驗證

現在嘗試從客戶主機 ssh 遠端系統

$ ssh [email protected]           
Linux下使用密鑰設定SSH無密碼登入,網管必會技能

測試無密碼 SSH 身份驗證

很好,上面的輸出确認了我們可以登入到遠端系統,而不需要指定任何密碼。

注意: 一旦密鑰交換和測試完畢,我們應該禁用 root 和其他使用者的基于密碼的身份驗證。

為此,請編輯 /etc/ssh/sshd_config 檔案,然後設定以下參數:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM yes           

儲存并退出檔案,并使用下面的 systemctl 指令重新啟動 ssh 服務

$ sudo systemctl restart sshd           

另一個要點是遠端使用者,在我們的例子中 kadmin 應該是 sudo 組的一部分,并且擁有管理權限,這樣它就可以執行管理任務。

以上就是這篇文章的全部内容,我希望你覺得它有用,請在下面的評論區寫下你的問題和回報。

我的開源項目

Linux下使用密鑰設定SSH無密碼登入,網管必會技能

酷瓜雲課堂-開源線上教育方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee 倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github 倉庫)

繼續閱讀