SSH 連線是所有 VPS 管理的起點,但對新手來說,真正困難的不是下 ssh 指令,而是第一次連線跳出指紋、金鑰、權限或連線逾時時不知道該信誰。這篇會把最常見情境講清楚。
你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。
你會學到什麼
- 完成 Windows、macOS 常見 SSH 連線流程。
- 理解第一次連線出現的主機指紋是什麼。
- 遇到連不上時知道先檢查哪些地方。
- 學會用 SSH config 管理多台主機。
- 建立正確的 SSH 安全習慣。
什麼情況最適合先看這篇
- 第一次自己管理 Linux 主機,想把操作做穩而不是只會貼指令的人
- 你現在正要處理「VPS SSH 連線」這類操作
- 你希望做完之後不只功能能用,連驗證與排錯也有概念
開始前先確認
- 手邊先準備好 IP、port、帳號與登入方式。
- 確認主機防火牆有開 SSH port。
- 如果是公司網路,注意某些環境會擋 SSH。
先提醒你一件事
VPS 最怕的不是不會下指令,而是你不知道指令會影響到哪個服務、哪個設定檔、哪個對外連線。
詳細教學與操作步驟
SSH(Secure Shell)是管理 VPS 最常用的遠端連線方式。本文介紹 macOS、Linux 及 Windows 的 SSH 連線方法,並說明如何設定金鑰登入以提升安全性。
macOS / Linux 使用終端機連線
macOS 和 Linux 內建 SSH 用戶端,開啟「終端機」(Terminal)直接輸入:
ssh root@您的VPS_IP
若 SSH 連接埠非預設的 22,請加上 -p 參數:
ssh -p 2222 root@您的VPS_IP
第一次連線會看到主機指紋提示,這是正常的安全機制。SSH 會把伺服器的指紋記錄在 ~/.ssh/known_hosts 中,之後再連線時會自動比對。如果指紋不符,SSH 會警告你 -- 這可能是伺服器重灌過(正常),也可能是中間人攻擊(危險)。
Windows -- 使用 PowerShell / Windows Terminal
Windows 10 以上版本已內建 OpenSSH 用戶端,開啟 PowerShell 或 Windows Terminal,輸入:
ssh root@您的VPS_IP
操作方式與 macOS/Linux 完全相同。推薦安裝 Windows Terminal,它支援多分頁、自訂配色,體驗更好。
Windows -- 使用 PuTTY
如果您偏好圖形化工具,可以使用 PuTTY:
- 前往 PuTTY 官方網站 下載安裝。
- 開啟 PuTTY,在 Host Name 欄位輸入您的 VPS IP。
- 確認 Port 為
22(或您自訂的連接埠)。 - Connection type 選擇 SSH。
- 在左側 Saved Sessions 輸入名稱(例如「My Kanrays VPS」),點擊 Save 儲存設定。
- 點擊 Open 開始連線,輸入帳號密碼即可登入。
設定 SSH 金鑰登入
金鑰登入比密碼更安全,強烈建議設定。
步驟一:在本機產生金鑰對
ssh-keygen -t ed25519 -C "your_email@example.com"
連續按 Enter 使用預設路徑,可選擇設定密碼短語(passphrase)以增加安全性。
金鑰會產生在:
- 私鑰:
~/.ssh/id_ed25519(絕對不要給別人) - 公鑰:
~/.ssh/id_ed25519.pub(這個要上傳到伺服器)
步驟二:將公鑰上傳至 VPS
ssh-copy-id root@您的VPS_IP
系統會要求輸入一次密碼,之後即可使用金鑰免密碼登入。
如果 ssh-copy-id 不能用(例如 Windows),手動操作:
# 在本機查看公鑰內容
cat ~/.ssh/id_ed25519.pub
# SSH 登入 VPS 後,把公鑰內容貼到這個檔案
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
# 貼上公鑰內容,儲存離開
# 設定正確的權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
步驟三:測試金鑰登入
ssh root@您的VPS_IP
若不再詢問密碼,表示金鑰登入設定成功。
停用密碼登入(建議)
確認金鑰登入正常後,停用密碼登入可防止暴力破解:
-
編輯 SSH 設定檔:
nano /etc/ssh/sshd_config -
找到以下設定並修改:
PasswordAuthentication no PubkeyAuthentication yes -
重新啟動 SSH 服務:
systemctl restart sshd
**注意:**請務必先確認金鑰登入正常,再停用密碼登入,否則可能無法連線。建議開兩個 SSH 視窗,一個改設定,另一個測試新連線。
用 SSH Config 管理多台主機
如果你管理好幾台 VPS,每次都輸一長串很累。建立 ~/.ssh/config:
nano ~/.ssh/config
寫入:
# 侃瑞科技 VPS - 正式站
Host prod
HostName 123.45.67.89
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
# 測試站
Host staging
HostName 98.76.54.32
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
# 所有連線的共用設定
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yes
之後只要輸入:
ssh prod
ssh staging
就能連線,不用再記 IP、port 和使用者名稱。
連線失敗排錯
Connection refused:
# 確認 SSH 服務是否在跑
systemctl status sshd
# 確認 port 有沒有開
ss -lntp | grep ssh
# 確認防火牆是否擋住
ufw status
Connection timed out:
- 檢查 IP 是否正確
- 確認你的網路環境沒有擋 SSH port(公司網路常見)
- 嘗試用手機熱點測試排除網路因素
Permission denied (publickey):
# 用 verbose 模式查看詳細資訊
ssh -vvv root@VPS_IP
# 檢查金鑰權限
ls -la ~/.ssh/
# id_ed25519 應該是 600
# .ssh 目錄應該是 700
Host key verification failed:
# 如果確認是伺服器重灌過,刪除舊的指紋記錄
ssh-keygen -R VPS_IP
額外安全建議
- **更改 SSH 連接埠:**將預設的 22 改為其他埠號(如 2222),可減少自動掃描攻擊。在
/etc/ssh/sshd_config修改Port 2222,記得同時開放防火牆。 - **僅使用金鑰登入:**搭配停用密碼登入,是目前最安全的 SSH 連線方式。
- **安裝 Fail2Ban:**自動封鎖多次登入失敗的 IP,進一步強化防護。參考 Fail2Ban 防護教學。
- **禁止 root 直接登入:**建立一般使用者後,在 sshd_config 設定
PermitRootLogin no。 - 定期更新 SSH:
sudo apt update && sudo apt upgrade openssh-server
做完後怎麼確認自己真的有設對
- 用新的 SSH 連線測試,確認能正常登入。
- 如果設了金鑰登入,確認不輸入密碼就能進去。
- 如果停用了密碼登入,確認用密碼真的不能登入。
- 從不同網路環境試一次連線,確認防火牆設定正確。
- 確認 SSH config 中的設定都能正常使用。
這一題最常踩的坑
- 沒有確認指紋就直接接受,長期來看風險很高。
- 把 SSH 金鑰權限設錯,自己也會登不進去。
- 一連不上就以為主機掛了,其實常常只是 port 或 IP 輸錯。
- 停用密碼登入前沒確認金鑰登入正常,把自己鎖在門外。
- 金鑰沒有設 passphrase,筆電被偷等於主機也被偷。
如果你要往下一步走
如果你會長時間用 SSH 管理主機,接著看 SSH 常用指令手冊。想在終端機工作更有效率,推薦學習 tmux 教學。如果你準備開始自己架服務,可以直接對照侃瑞的 VPS 方案與價格 選環境。