Linux SSH VPS

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 方案 →