iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
IT Operation

從零開始的 Linux 維運與 Bash 自動化實戰 30 天系列 第 8

Day 08: SSH 遠端連線安全與金鑰認證

  • 分享至 

  • xImage
  •  

管理多台雲端伺服器(AWS, GCP)或實體機時,如果每次連線都要輸入長密碼,不僅效率低,還容易遭受爆破攻擊(Brute-force Attack)。
現代 Linux 維運的標準規範是使用 SSH 金鑰認證(Public Key Authentication)。透過「非對稱加密」技術,我們只需要把「公鑰」放在伺服器上,就能用本機的「私鑰」免密碼秒速登入,同時具備極高的安全性。

SSH 金鑰原理:公鑰與私鑰

金鑰種類 英文名稱 放置位置 比喻 / 概念說明 權限保護
私鑰 Private Key (id_ed25519) 本機電腦(Mac/Windows) 鑰匙:只有自己持有。 600(僅本人可讀寫)
公鑰 Public Key (id_ed25519.pub) 遠端伺服器 鎖頭:可公開發放給任何想登入的伺服器。 644 或放於 authorized_keys

SSH 金鑰三部曲
在 Mac 本機終端機中,只需要三個步驟就能建立並部署金鑰:

步驟 指令 / 操作 說明
產生金鑰 ssh-keygen -t ed25519 -C "your_email@example.com" 產生一對金鑰(推薦使用現代高安全的 ED25519 演算法)。
傳送公鑰 ssh-copy-id ubuntu@<虛擬機IP> 自動將本機公鑰寫入伺服器的 ~/.ssh/authorized_keys 中。
免密連線 ssh ubuntu@<虛擬機IP> 無需輸入密碼,直接安全登入 Linux 伺服器

資安防禦:修改 SSH 設定檔
為了徹底防止駭客暴力破解,我們通常會修改伺服器內部的 SSH 設定檔(/etc/ssh/sshd_config):

建議安全設定點:

  • PasswordAuthentication no:完全停用密碼登入(僅允許金鑰認證)。
  • PermitRootLogin no:禁止 root 帳號直接遠端連線。
  • Port 22:(可選)將預設的 Port 22 改為其他高位埠號,減少遭自動化腳本掃描的機率。

修改後必須重啟服務:sudo systemctl restart ssh

實作
https://ithelp.ithome.com.tw/upload/images/20260909/20183847KYl8d8YTwx.png
產生 SSH 金鑰與檢查檔案(本機 Mac)

  • 產生金鑰 (ssh-keygen -t ed25519):
    在 Mac 本機上使用高安全性的 ED25519 演算法產生一對 SSH 金鑰,包含私鑰(id_ed25519)與公鑰(id_ed25519.pub)。
  • 檢查金鑰目錄 (ls -l ~/.ssh/):
    確認金鑰成功寫入 ~/.ssh/ 資料夾,私鑰權限設定為僅本人可存取(600 / -rw-------)。
  • 準備傳送公鑰 (ssh-copy-id ubuntu@192.168.252.2):
    指定將本機的公鑰部署至 IP 為 192.168.252.2 的 Linux 虛擬機中。

https://ithelp.ithome.com.tw/upload/images/20260909/20183847wnLDil6ddl.png
首次信任驗證與免密碼登入(遠端虛擬機)

  • 首次主機信任確認 (Are you sure... yes):
    輸入 yes 將虛擬機的 ED25519 金鑰指紋寫入 Mac 的已知主機清單(known_hosts),確保未來連線不會遭受中間人攻擊(MITM)。
  • 免密碼順利登入 (ubuntu@my-linux:~$):
    驗證通過後直接進入 Ubuntu 系統,無需輸入傳統帳號密碼,成功達成安全又方便的遠端 SSH 金鑰認證。

上一篇
Day 07: APT 套件管理與 Nginx 服務控制
下一篇
Day 09: Cron 定時排程與 Shell 腳本實作
系列文
從零開始的 Linux 維運與 Bash 自動化實戰 30 天10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言