SSH 完整入門教學:Windows & macOS 遠端連線與檔案傳輸指南

快速了解內容

什麼是 SSH?為什麼需要 SSH?

SSH (Secure Shell) 是一個加密的遠端連線協議,讓你可以安全地連線到遠端伺服器、執行指令、甚至上傳/下載檔案。與老舊的 Telnet 不同,SSH 使用加密連線,確保你的密碼和資料不會被竊聽。

SSH 的常見用途

  • 🖥️ 遠端管理伺服器:執行指令、重啟服務、檢查日誌
  • 📤 上傳/下載檔案:透過 SFTP (SSH File Transfer Protocol)
  • 🚀 部署網站:上傳程式碼到伺服器
  • 🔧 維護應用程式:停止、啟動、更新服務
  • 🎮 遊戲伺服器管理:例如 FiveM、Minecraft 伺服器

不論你用 Windows 還是 macOS,現在都有內建的 SSH 工具,不需要安裝額外軟體。


Windows 上的 SSH

方式 1:使用內建 OpenSSH (推薦 – 最簡單)

Windows 10 (1809 版本後) 和 Windows 11 都內建了 OpenSSH Client,完全免費。

步驟 1:啟用 OpenSSH Client

Windows 11:

  1. 開啟 Settings (設定)
  2. 左邊選擇 Apps
  3. 點擊 Optional features (選用功能)
  4. 搜尋欄位輸入 “OpenSSH Client
  5. 如果已安裝會顯示 “Installed”;如果沒有,點擊 “View features” → 搜尋 “OpenSSH” → 勾選 “OpenSSH Client” → 點擊 “Next” → “Install

等待安裝完成 (通常 1-2 分鐘)。

Windows 10:

  1. 開啟 Settings
  2. 選擇 Apps → Apps & features
  3. 點擊 Manage optional features
  4. 點擊 Add a feature
  5. 搜尋 “OpenSSH Client” 並點擊 Install

步驟 2:開啟 PowerShell 連線到伺服器

右鍵點擊 開始 按鈕,選擇 Windows PowerShell (或 Terminal)。

輸入以下指令:

ssh 使用者名稱@伺服器IP

例如:

ssh [email protected]

或連線到特定的連接埠 (預設 22):

ssh [email protected] -p 2222

首次連線會出現類似的訊息:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:abcde123...
Are you sure you want to continue connecting (yes/no)?

輸入 yes 並按 Enter,然後輸入密碼即可連線。

步驟 3:使用 SFTP 上傳/下載檔案

在 PowerShell 中輸入:

sftp 使用者名稱@伺服器IP

例如:

sftp [email protected]

成功連線後會看到 sftp> 提示符。常用指令如下:

指令說明範例
ls列出遠端檔案ls /home/alamza/
lcd 路徑切換本機資料夾lcd C:\Users\YourName\Documents
cd 路徑切換遠端資料夾cd /var/www/
put 本機檔案上傳檔案到伺服器put myfile.txt /home/alamza/
get 遠端檔案下載檔案到本機get config.php C:\backup\
exit 或 quit結束 SFTP 連線exit

上傳檔案範例:

sftp> lcd C:\Users\YourName\Downloads
sftp> cd /home/alamza/public_html
sftp> put website.zip

下載檔案範例:

sftp> get backup.sql C:\Backups\
sftp> exit

方式 2:使用第三方 GUI 軟體

如果你不喜歡指令列介面,以下是一些好用的 GUI 工具:

PuTTY (完全免費)

  • 官網https://www.putty.org/
  • 優點:老牌軟體、功能完整、輕量
  • 缺點:介面較舊
  • 適合:喜歡傳統介面、管理多個連線的使用者

PuTTY 連線方式:

  1. 下載並安裝
  2. 開啟 PuTTY
  3. 在 “Host Name” 輸入伺服器 IP
  4. Port 保留 22 (或自訂)
  5. Connection Type 選 “SSH”
  6. 點擊 “Open”
  7. 輸入使用者名稱和密碼

WinSCP (完全免費)

  • 官網https://winscp.net/
  • 優點:整合檔案管理、視覺化操作、支援拖拉
  • 缺點:較少用於純指令操作
  • 適合:主要做檔案傳輸的使用者

WinSCP 連線方式:

  1. 下載並安裝
  2. 開啟 WinSCP
  3. Protocol 選 “SFTP”
  4. Host name: 伺服器 IP
  5. Port: 22 (通常)
  6. User name: 你的帳號
  7. Password: 你的密碼
  8. 點擊 “Login”
  9. 即可看到本機和遠端檔案,直接拖拉即可傳輸

MobaXterm (部分功能免費)

Termius (免費版+付費版)

  • 官網https://www.termius.com/
  • 優點:介面現代美觀、支援多裝置同步
  • 缺點:進階功能需付費
  • 適合:追求美觀介面的使用者

macOS 上的 SSH

方式 1:使用內建 Terminal (推薦 – 最簡單)

macOS 已經內建完整的 SSH 工具,開箱即用,完全免費。

步驟 1:開啟 Terminal

方法 A (快速):

  • 按 Command + Space 開啟 Spotlight
  • 輸入 “terminal”
  • 按 Enter

方法 B (標準):

  • Finder → Applications → Utilities → Terminal

步驟 2:連線到伺服器

在 Terminal 中輸入:

ssh 使用者名稱@伺服器IP

例如:

ssh [email protected]

或連線到特定連接埠:

ssh [email protected] -p 2222

首次連線會要求確認主機金鑰,輸入 yes 並按 Enter,然後輸入密碼。

步驟 3:使用 SFTP 上傳/下載檔案

在 Terminal 中輸入:

sftp 使用者名稱@伺服器IP

例如:

sftp [email protected]

常用指令與 Windows 相同:

# 查看遠端檔案
sftp> ls /home/alamza/

# 查看本機檔案
sftp> lls ~/Documents

# 上傳檔案
sftp> put ~/Downloads/website.zip /var/www/

# 下載檔案
sftp> get /home/alamza/backup.sql ~/Documents/

# 結束連線
sftp> exit

方式 2:使用 SSH Config 簡化連線

每次都要輸入 IP 和帳號很麻煩?可以設定 SSH config 檔案,讓連線變得更簡單。

編輯 SSH 設定檔

開啟 Terminal 並執行:

nano ~/.ssh/config

如果檔案不存在,會自動建立。加入以下內容:

Host my-server
    HostName 192.168.1.100
    User alamza
    Port 22

Host gameserver
    HostName 203.0.113.45
    User gameadmin
    Port 2222

按 Control + O 儲存,Control + X 結束。

之後就可以簡單地連線:

ssh my-server
ssh gameserver

方式 3:使用內建 SSH 連線管理器 (macOS 12+)

macOS 12 Monterey 以後,Terminal 內建了 SSH 連線管理器,不需要編輯 config 檔案。

步驟 1:開啟 SSH 連線管理器

  1. 開啟 Terminal
  2. 在選單列選擇 Shell → New Remote Connection

步驟 2:新增伺服器

  1. 會彈出一個小視窗
  2. 確保 “Service” 選 SSH
  3. 點擊 “+” 按鈕新增伺服器
  4. 輸入伺服器位址,格式為:使用者名稱@伺服器IP

例如:[email protected]

  1. 點擊 “OK” 儲存

步驟 3:連線

下次開啟 Terminal,選擇 Shell → New Remote Connection,就會看到你新增的伺服器,雙擊即可連線。


方式 4:使用第三方 GUI 軟體

iTerm2 (免費)

  • 官網https://iterm2.com/
  • 優點:比內建 Terminal 更強大、支援分割視窗
  • 缺點:需要學習新的快捷鍵
  • 適合:進階開發者

Termius (免費版+付費版)

  • 官網https://www.termius.com/
  • 優點:介面美觀、支援多平台同步、整合 SFTP
  • 缺點:進階功能付費
  • 適合:追求現代化介面的使用者

SSH Commander (免費試用)

  • 官網https://www.wunderbucket.com/
  • 優點:整合 SFTP、SSHFS 掛載、SSH 隧道
  • 缺點:完整功能需購買授權
  • 適合:需要進階功能的管理員

CloudMounter (免費版+付費版)

  • 官網https://cloudmounter.net/
  • 優點:可將遠端伺服器當作本機磁碟、支援多種協議
  • 缺點:某些功能付費
  • 適合:習慣用 Finder 操作的使用者

實用技巧:SSH Keys (無密碼連線)

每次連線都要輸入密碼很煩?可以生成 SSH Key 進行無密碼連線。

生成 SSH Key (Windows & macOS)

Windows PowerShell 或 macOS Terminal:

ssh-keygen -t rsa -b 4096

會出現以下提示:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/alamza/.ssh/id_rsa):

直接按 Enter 使用預設路徑。

Enter passphrase (empty for no passphrase):

可以選擇設定密碼 (按 Enter 表示不設密碼)。

完成後會產生兩個檔案:

  • ~/.ssh/id_rsa (私鑰 – 保管好,不要分享)
  • ~/.ssh/id_rsa.pub (公鑰 – 上傳到伺服器)

上傳公鑰到伺服器

方法 1:使用 ssh-copy-id (最簡單,macOS 和 Linux)

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

輸入一次密碼後完成。之後連線不再需要密碼。

方法 2:手動上傳 (如果沒有 ssh-copy-id)

  1. 複製你的公鑰內容:macOS:cat ~/.ssh/id_rsa.pub | pbcopy Windows PowerShell:Get-Content C:\Users\YourName\.ssh\id_rsa.pub | Set-Clipboard
  2. SSH 到伺服器:ssh [email protected]
  3. 編輯授權金鑰檔案:nano ~/.ssh/authorized_keys
  4. 貼上你複製的公鑰 (右鍵或 Command + V),儲存並結束
  5. 設定正確的權限:chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
  6. 登出並重新連線 – 應該不需要密碼了!

常見問題 (Q&A)

Q1:連線時出現 “Connection refused” 怎麼辦?

A: 檢查以下項目:

  1. 伺服器是否在線ping 伺服器IP 如果 ping 不通,伺服器可能離線。
  2. SSH 服務是否執行
    • 在伺服器上執行:sudo systemctl status ssh (Linux)
    • 或 sudo systemctl status sshd (某些 Linux)
  3. 防火牆是否允許 SSH 連線
    • 檢查伺服器防火牆是否開放 22 埠 (或你設定的埠)
    • 檢查本機防火牆設定
  4. 確認連接埠正確
    • 預設是 22,但有些伺服器用不同埠
    • 確認用 -p 參數指定正確的埠:ssh [email protected] -p 2222

Q2:忘記密碼怎麼辦?

A: 有幾種方式:

  1. 聯絡伺服器供應商 – 最直接的方式
  2. 使用 SSH Key – 如果你已設定 SSH Key,可以不用密碼連線
  3. 實體存取伺服器 – 如果你有伺服器的實體存取權,可以重設密碼
  4. 使用救援模式 – 某些主機商提供救援模式重設密碼

Q3:出現 “Host key verification failed” 怎麼辦?

A: 這通常表示連線有風險。如果確認伺服器無誤,可以:

  1. 認識新的主機金鑰,輸入 yes
  2. 手動添加伺服器到已知主機:ssh-keyscan -H 192.168.1.100 >> ~/.ssh/known_hosts

Q4:如何限制只能用 SSH Key 連線,不允許密碼連線?

A: 在伺服器上編輯 SSH 設定檔:

sudo nano /etc/ssh/sshd_config

找到並修改以下行:

PasswordAuthentication no
PubkeyAuthentication yes

儲存後重啟 SSH 服務:

sudo systemctl restart ssh

警告:執行此操作前,務必確保你已設定 SSH Key 無密碼連線,否則會被鎖在伺服器外!

Q5:如何在 Windows 上用 GUI 工具快速傳輸檔案?

A: 推薦使用 WinSCP

  1. 下載安裝 WinSCP
  2. Protocol 選 “SFTP”
  3. Host name:伺服器 IP
  4. User name:帳號
  5. Password:密碼
  6. 點擊 Login
  7. 左邊是本機檔案,右邊是遠端檔案
  8. 直接拖拉檔案即可傳輸

Q6:連線時出現 “WARNING: UNPROTECTED PRIVATE KEY FILE” 怎麼辦?

A: 這表示私鑰檔案權限設定太寬鬆。修正權限:

macOS / Linux:

chmod 600 ~/.ssh/id_rsa

Windows: 需要透過 PowerShell 修改:

icacls "C:\Users\YourName\.ssh\id_rsa" /inheritance:r /grant:r "%username%:F"

Q7:如何同時上傳多個檔案?

A: 在 SFTP 中使用 mput 指令:

sftp> mput file1.txt file2.txt file3.txt

或使用萬用字元:

sftp> mput *.php

Q8:如何下載整個資料夾?

A: 使用 -r 參數:

sftp> get -r /home/alamza/backup ~/Local-Backup

Q9:如何在 macOS 上建立快速 SSH 連線捷徑?

A: 編輯 ~/.ssh/config 檔案:

nano ~/.ssh/config

加入以下設定:

Host myserver
    HostName 192.168.1.100
    User alamza
    Port 22
    IdentityFile ~/.ssh/id_rsa

之後就可以用 ssh myserver 快速連線。

Q10:如何測試 SSH 連線而不執行任何指令?

A: 使用 -v (verbose) 參數查看詳細連線過程:

ssh -v [email protected]

或使用更詳細的 -vv

ssh -vv [email protected]

這有助於診斷連線問題。

Q11:可以同時連線多個伺服器嗎?

A: 完全可以!開啟多個 Terminal 標籤或視窗,分別連線不同伺服器。

如果想在同一個連線中開啟多個通道,可以使用 screen 或 tmux (進階技巧)。

Q12:SSH 的預設連接埠是多少?

A: 預設是 22

如果伺服器用不同連接埠 (例如 2222),記得用 -p 參數指定:

ssh -p 2222 [email protected]

快速參考表

Windows 常用指令 (PowerShell)

功能指令
連線到伺服器ssh 使用者@IP
指定連接埠連線ssh -p 2222 使用者@IP
開啟 SFTPsftp 使用者@IP
生成 SSH Keyssh-keygen -t rsa -b 4096
複製公鑰Get-Content C:\Users\YourName\.ssh\id_rsa.pub | Set-Clipboard

macOS 常用指令 (Terminal)

功能指令
連線到伺服器ssh 使用者@IP
指定連接埠連線ssh -p 2222 使用者@IP
開啟 SFTPsftp 使用者@IP
生成 SSH Keyssh-keygen -t rsa -b 4096
複製公鑰到伺服器ssh-copy-id -i ~/.ssh/id_rsa.pub 使用者@IP
複製公鑰cat ~/.ssh/id_rsa.pub | pbcopy

SFTP 常用指令 (通用)

指令說明
ls列出遠端檔案
lls列出本機檔案
cd 路徑切換遠端資料夾
lcd 路徑切換本機資料夾
put 檔案上傳檔案
get 檔案下載檔案
mput 檔案1 檔案2上傳多個檔案
mget 檔案1 檔案2下載多個檔案
exit 或 quit結束連線

安全建議

1. 定期更新密碼

如果用密碼認證,建議每 3 個月更新一次密碼。

2. 使用 SSH Key

SSH Key 比密碼更安全。建議所有常用伺服器都設定 SSH Key。

3. 禁用 Root 登入

編輯 /etc/ssh/sshd_config

PermitRootLogin no

4. 改變預設連接埠

改用非標準連接埠 (例如 2222) 可減少自動化攻擊。

5. 設定登入嘗試限制

在 /etc/ssh/sshd_config 設定:

MaxAuthTries 3
LoginGraceTime 30

6. 監控 SSH 日誌

定期檢查 SSH 連線日誌,尋找異常活動:

tail -f /var/log/auth.log  # Linux