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

鳩摩智首席音效師 發佈 2022-11-29T01:56:48.871476+00:00

SSH (Secure Shell) 密鑰為我們提供了登錄 Linux 和 UNIX 的安全方法。當我們使用 SSH 密鑰訪問 Linux 系統時,它也被稱為無密碼 SSH 身份驗證。在這篇文章中,我們將學習如何在 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 命令的輸出如下所示

注意: 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 kadmin@192.168.1.130

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

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

$ ssh kadmin@192.168.1.130

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

注意: 一旦密鑰交換和測試完畢,我們應該禁用 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 倉庫)
關鍵字: