VPS Linux SSH

SSH Key 設定教學:從產生金鑰到免密碼登入 VPS 完整指南

完整教學如何產生 SSH Key、設定免密碼登入 VPS,涵蓋 Windows、macOS、Linux 三大平台,使用 Ed25519 演算法搭配 ssh-config 管理多台主機,提升伺服器安全性。

拿到一台新的 VPS,第一件該做的事不是裝服務,而是把 SSH Key 設定好。密碼登入不僅每次都要打一串亂碼,更大的問題是它容易被暴力破解。SSH Key 用非對稱加密取代密碼驗證,既安全又方便,是每個系統管理員的基本功。

這篇文章會帶你從零開始,在 Windows、macOS、Linux 上產生 SSH Key,部署到 VPS 上,最後關閉密碼登入,把伺服器的大門鎖好。

SSH Key 驗證的原理

SSH Key 認證靠的是一對金鑰:公鑰(Public Key) 和 私鑰(Private Key)。公鑰放在伺服器上,私鑰留在你自己的電腦裡。

登入時,伺服器會用公鑰產生一段加密的「挑戰」訊息,只有持有對應私鑰的人才能正確回應。整個過程中,私鑰不會離開你的電腦,也不會透過網路傳輸,所以即使有人攔截封包,也拿不到你的私鑰。

跟密碼比起來,SSH Key 的優勢很明確:

  • 不怕暴力破解:金鑰長度遠超一般密碼
  • 不怕釣魚:私鑰不會被「騙走」
  • 免打密碼:連線時自動驗證,效率高
  • 可以針對不同主機用不同金鑰:管理更靈活

選擇金鑰演算法:為什麼推薦 Ed25519

產生金鑰時要選演算法。你可能看過很多教學用 RSA,但 2026 年的建議是直接用 Ed25519。

演算法 金鑰長度 安全性 速度 建議
RSA 2048 2048 bit 基本 慢 不建議
RSA 4096 4096 bit 好 更慢 可接受但沒必要
Ed25519 256 bit 很好 快 推薦

Ed25519 基於橢圓曲線密碼學,金鑰短、運算快、安全性比同長度的 RSA 更高。除非你的目標伺服器真的太老舊(OpenSSH 6.5 以前),否則沒理由不用它。

Step 1:在本機產生 SSH Key

三個平台的指令幾乎一樣。打開終端機,輸入:

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

-C 後面是註解,通常填你的 email,方便辨識這把金鑰是誰的。

系統會問你幾個問題:

1
2
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/you/.ssh/id_ed25519):

直接按 Enter 使用預設路徑即可。

1
Enter passphrase (empty for no passphrase):

Passphrase 建議設定一組。這是私鑰的二次保護——就算私鑰檔案被偷走,沒有 passphrase 也用不了。如果你真的覺得每次輸入很煩,可以搭配 ssh-agent 來快取(後面會講)。

完成後,你的 ~/.ssh/ 資料夾裡會多兩個檔案:

  • id_ed25519:私鑰,絕對不能外洩
  • id_ed25519.pub:公鑰,這個要放到伺服器上

Windows 使用者注意

Windows 10 以上已經內建 OpenSSH,可以直接在 PowerShell 或 Windows Terminal 執行上面的指令。金鑰預設存在 C:\Users\你的帳號\.ssh\ 裡。

如果你用的是更早的 Windows 版本,可以安裝 Git for Windows,裡面的 Git Bash 也自帶 ssh-keygen。

Step 2:把公鑰部署到 VPS

最簡單的方式是用 ssh-copy-id(macOS 和 Linux 內建,Windows 需額外安裝或手動操作):

1
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的VPS_IP

這個指令會自動把公鑰內容附加到伺服器的 ~/.ssh/authorized_keys 檔案裡。

手動部署(適用於所有平台)

如果你的環境沒有 ssh-copy-id,可以手動操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 先用密碼登入 VPS
ssh root@你的VPS_IP

# 在伺服器上建立 .ssh 資料夾(如果還沒有的話)
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 回到本機,把公鑰內容貼上去
# 在本機執行:
cat ~/.ssh/id_ed25519.pub
# 複製輸出的整行內容

# 在伺服器上執行:
echo "貼上你的公鑰內容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

權限設定很重要,搞錯的話 SSH 會拒絕金鑰登入:

路徑 權限 指令
~/.ssh/ 700 chmod 700 ~/.ssh
~/.ssh/authorized_keys 600 chmod 600 ~/.ssh/authorized_keys

Step 3:測試金鑰登入

部署完公鑰後,開一個新的終端機視窗測試:

1
ssh root@你的VPS_IP

如果你有設定 passphrase,這時會要求輸入;如果沒有,應該直接就登入了。看到命令提示字元就表示成功。

重要:在確認金鑰登入成功之前,不要關閉密碼登入。 不然你可能會把自己鎖在門外。

Step 4:關閉密碼登入

確認金鑰登入沒問題後,就可以關閉密碼驗證了。編輯 VPS 上的 SSH 設定檔:

1
sudo nano /etc/ssh/sshd_config

找到以下幾行,修改成這樣(如果前面有 # 要拿掉):

1
2
3
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password

PermitRootLogin prohibit-password 表示 root 帳號只能用金鑰登入,不接受密碼。如果你已經建立了一般使用者帳號,也可以直接設成 PermitRootLogin no,安全性更高。

儲存後重新啟動 SSH 服務:

1
sudo systemctl restart sshd

再次提醒:改完之後先用另一個終端機視窗測試能不能登入,確認沒問題再關掉舊的連線。

進階:用 ssh-config 管理多台主機

當你管理的 VPS 越來越多,每次都打 ssh root@123.456.789.0 會很累。這時候可以設定 ~/.ssh/config:

1
2
3
4
5
6
7
8
9
10
Host ncse-web
HostName 203.0.113.10
User root
IdentityFile ~/.ssh/id_ed25519

Host ncse-db
HostName 203.0.113.11
User deploy
IdentityFile ~/.ssh/id_ed25519
Port 2222

設定好之後,連線只要打:

1
ssh ncse-web

就會自動帶入 IP、帳號、金鑰檔案和 Port。SCP 和 SFTP 也可以直接用這個別名。

進階:用 ssh-agent 快取 Passphrase

如果你有設 passphrase 但不想每次都輸入,可以用 ssh-agent:

1
2
3
4
5
# 啟動 agent
eval "$(ssh-agent -s)"

# 把私鑰加進去(會要求輸入一次 passphrase)
ssh-add ~/.ssh/id_ed25519

加入之後,這個終端機 session 內的所有 SSH 連線都不用再輸入 passphrase。

macOS 使用者可以在 ~/.ssh/config 加上這段,讓系統自動幫你記住:

1
2
3
Host *
AddKeysToAgent yes
UseKeychain yes

常見問題排除

Q:設定完金鑰還是要求輸入密碼?

八成是權限問題。在伺服器上執行:

1
2
3
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $(whoami):$(whoami) ~/.ssh

如果還是不行,檢查 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)裡有沒有錯誤訊息。

Q:可以多台電腦用同一組金鑰嗎?

技術上可以,但不建議。每台電腦各自產生一組金鑰,分別加到伺服器的 authorized_keys 裡。這樣某台電腦遺失時,只要移除那把公鑰就好,不會影響其他電腦。

Q:私鑰不小心外洩了怎麼辦?

立刻登入所有伺服器,從 authorized_keys 裡移除對應的公鑰,然後重新產生一組新的金鑰對。如果有設 passphrase,至少還有一層防護可以爭取時間。

結語

SSH Key 設定不難,但它是 VPS 安全的第一道防線。產生金鑰、部署公鑰、關閉密碼登入,這三個步驟做完,你的伺服器就比大多數人的安全了。搭配 ssh-config 和 ssh-agent,日常管理也會順手很多。

如果你正在找一台效能穩定的台灣 VPS 來實作這篇教學的內容,NCSE Network 提供搭載 Intel Gold CPU 和 NVMe SSD 的 VPS 主機,機房位於台灣,連線延遲低、網路品質好。開通後就能直接用 SSH Key 登入,馬上開始部署你的服務。

需要穩定的雲端主機?

NCSE Network 提供企業級 VPS,7 天免費試用,臺灣是方電訊機房,99% SLA 保證。

查看 VPS 方案 →