跳轉到內容

SSH 密鑰登錄配置指南

購買 VPS 後,大部分服務商默認提供的是賬號密碼登錄。然而,隨著公網上惡意的掃描程序和自動化工具越來越多,僅僅使用密碼登錄有著極高被暴力破解(爆破)的風險。

最安全的做法是:改用 SSH 密鑰登錄,並關閉密碼登錄。這樣即便是世界上最頂級的黑客,在沒有你的私鑰的情況下也無法登入你的服務器。

什麼是 SSH 密鑰?

SSH 密鑰由兩部分組成:

  • 私鑰 (Private Key):存放在你自己的電腦上,絕對不能洩露給任何人。
  • 公鑰 (Public Key):上傳並保存在你的 VPS 服務器上。

登錄時,服務器通過公鑰來驗證你電腦上的私鑰,驗證匹配後即允許登錄,全程無需輸入密碼。


步驟一:在本地電腦生成密鑰對

無論你使用的是 Windows、macOS 還是 Linux 電腦,目前的系統均內置了生成 SSH 密鑰的工具。

打開你本地電腦的終端(Windows 可以使用 PowerShell 或 CMD,macOS 使用 Terminal),輸入以下命令並回車:

bash
ssh-keygen -t ed25519 -C "your_email@example.com"

注:-t ed25519 是一種更新、更安全、更高效的加密算法。如果較老的系統不支持,可使用 ssh-keygen -t rsa -b 4096。後面的郵箱只作為標識備註。

輸入命令後,系統會連續向你詢問三個問題,通常直接一直按回車鍵即可:

  1. 保存路徑確認:默認保存在 ~/.ssh/id_ed25519(Windows 一般在 C:\Users\用戶名\.ssh\id_ed25519)。
  2. 設置密鑰保護密碼(passphrase):如果設置了,每次使用私鑰還需要輸入這個密碼。為圖方便可以直接留空回車。
  3. 再次確認密碼:留空回車。

完成後,你的本地電腦上會生成兩個文件:

  • id_ed25519(這就是私鑰
  • id_ed25519.pub(這就是公鑰

步驟二:將公鑰上傳到 VPS

目前你的公鑰還在本地,接下來我們要把它放到 VPS 服務器的指定位置。我們將它放在 root 賬戶下(如果你使用的是其它用戶如 ubuntu,請自行替換路徑):

方法 1:使用快捷命令 ssh-copy-id (推薦 macOS / Linux / 較新 Windows)

在本地電腦終端中輸入:

bash
ssh-copy-id root@你的VPS_IP地址

然後系統會提示你輸入 VPS 的 root 密碼,輸入完畢回車,公鑰就會被自動導入。

方法 2:手動複製公鑰

如果你覺得命令不好用,也可以通過手動方式:

  1. 用記事本(或用 cat 命令)打開本地的 id_ed25519.pub 文件,複製裡面那一長串以 ssh-ed25519 開頭的文本。
  2. 使用密碼正常登錄你的 VPS。
  3. 在 VPS 終端上執行以下命令:
    bash
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
  4. 將剛剛複製的公鑰文本粘貼進去。
  5. Ctrl + X,再按 Y,然後按回車保存退出。
  6. 最後設置權限:
    bash
    chmod 600 ~/.ssh/authorized_keys

步驟三:測試密鑰登錄是否成功

在沒關閉密碼登錄之前,務必先測試一次密鑰登錄是否生效! 如果生效了,再去關閉密碼,否則你可能會把你自己鎖在服務器外面!

在本地電腦終端重新登錄服務器:

bash
ssh root@你的VPS_IP地址

如果你發現這一次沒有讓你輸入密碼就直接登錄進去了,恭喜你,密鑰配置成功!


步驟四:關閉 SSH 密碼登錄(關鍵一步)

密鑰登錄成功後,我們需要徹底關掉傳統的賬號密碼登錄入口。

  1. 在 VPS 終端中,編輯 SSH 配置文件:

    bash
    nano /etc/ssh/sshd_config
  2. 在文件中尋找以下這兩行配置項,把它們改成 no(如果前面有 # 號註釋,記得把 # 刪掉):

    text
    PasswordAuthentication no
    PermitEmptyPasswords no

    提示:在 nano 編輯器中可以按 Ctrl + W 搜索 "PasswordAuthentication"。

  3. 修改完成後,按 Ctrl + X,再按 Y,回車保存退出。

  4. 重啟 SSH 動作使配置生效:

    bash
    systemctl restart sshd

    注意:Debian/Ubuntu 系統有時服務名叫 ssh,可以嘗試 systemctl restart ssh


額外建議與安全提醒

  • 保管好你的私鑰! 既然密碼登錄已經關閉,那麼本地電腦上的那個 id_ed25519 私鑰文件就是你連接這臺服務器的 唯一憑證。如果你重裝了電腦或者弄丟了這個私鑰文件,你將永遠無法再次登入這臺服務器!(除非主機面板提供了 VNC 救援控制檯)
  • 不要把私鑰發送給任何人,尤其是不要將其上傳到公開的代碼倉庫(如 GitHub)。

按照以上步驟,你可以高枕無憂了,公網上的無聊掃描機器人再也無法攻破你的 SSH 堡壘。


免责声明

本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。

最後更新於: