有人寄了 SFTP 存取資訊給你。可能是廠商要你把檔案放到他們的伺服器、銀行需要你每天上傳,或是主機商開了網站的存取權給你。訊息裡有主機名稱、使用者名稱,以及密碼或附加的金鑰檔,卻沒說在 Windows 上要怎麼用。
這篇指南會說明每一項資訊的意思、兩種連線方式(用應用程式,或用 Windows 本來就有的 sftp 指令),以及常見錯誤訊息想告訴你什麼。
這些資訊代表什麼
| 你收到的 | 代表什麼 |
|---|---|
主機,例如 sftp.example.com | 伺服器的位址。有時候是 IP 位址而不是名稱。 |
| 連接埠 | 除非對方另外說明,否則是 22。有些主機用別的連接埠,例如 2222,請完全照對方給的使用。 |
| 使用者名稱 | 你在那台伺服器上的帳號。除非對方這麼說,否則不是你的電子郵件地址。 |
| 密碼 | 用密碼登入時使用。有些伺服器要求改用金鑰,或金鑰和密碼都要。 |
金鑰檔:.ppk、.pem、id_rsa 或 id_ed25519 | 你的私密金鑰,用於金鑰登入。它可能有自己的通關密語。 |
像 SHA256:... 這樣的指紋 | 伺服器的主機金鑰指紋,讓你在第一次連線時確認連到的是正確的伺服器。 |
像 /incoming 這樣的資料夾 | 你可以上傳的地方。在許多廠商的伺服器上,這是你唯一能寫入的位置。 |
像 sftp://user@host:2222/incoming 這樣的連結 | 把上面大部分資訊寫成一行。許多應用程式可以直接使用。 |
郵件裡常常沒提到的一點:許多廠商只接受來自已知位址的連線。如果對方問過你的 IP 位址,請在嘗試連線前,先把辦公室的公開 IP 告訴他們。
用應用程式連線
圖形化用戶端是看到伺服器內容、拖曳檔案進出最快的方式。在 FTPie 中:
- 選擇新增儲存空間,再選 SFTP。
- 輸入主機、連接埠和使用者名稱。如果收到的是
sftp://連結,把整個連結貼到主機欄位,FTPie 會從中填好連接埠、使用者名稱、密碼和資料夾。如果開啟了設定 > Windows 整合 > 在 FTPie 中開啟 ftp:// 和 sftp:// 連結,點一下連結,這個表單就會以填好、並已測試連線的狀態開啟。 - 在身分驗證方法中選擇密碼身分驗證或金鑰身分驗證;如果伺服器同時要求金鑰和密碼,就選兩者皆需。
- 使用金鑰時,按一下私鑰旁邊的選擇檔案,選取你的金鑰檔。如果有通關密語,請一併輸入。
- 視需要設定初始目錄,例如
/incoming,然後按測試連線。 - 第一次連線時,FTPie 會顯示伺服器的伺服器金鑰資訊。把指紋和對方給你的比對一下,再按接受。
個人使用時,SFTP 包含在 FTPie 的免費方案中,最多可用三台 FTP、FTPS 或 SFTP 伺服器。工作用途則可以免費試用 FTPie Pro。
金鑰檔:.ppk、.pem 還是 OpenSSH?
.ppk是 PuTTY 的格式,由 PuTTYgen 產生,有版本 2 和 3 兩種。.pem是 PEM 金鑰,例如 AWS 為 EC2 伺服器提供的金鑰。- 沒有副檔名的
id_rsa或id_ed25519,是用ssh-keygen產生的 OpenSSH 金鑰。 - 結尾是
.pub的檔案是公開的那一半。它應該放在伺服器上,你永遠不會把它載入用戶端。
大多數教學一開始都要你先用 PuTTYgen 轉換格式。FTPie 可以直接讀取這三種格式,不論有沒有通關密語,所以這一步可以省略。讀不了檔案時,它會告訴你原因:通關密語缺少或錯誤、檔案不是私密金鑰,或是你選到了 .pub 檔。
只有一種情況仍然需要轉換:Windows 內建的 sftp 指令讀不了 .ppk 檔。請在 PuTTYgen 中開啟金鑰,使用 Conversions > Export OpenSSH key。反過來,在 PuTTYgen 中先 Load 再 Save private key,就能把 .pem 轉成需要 .ppk 的工具可以用的格式。
用 Windows 內建的 sftp 指令連線
Windows 10 和 11 內建 OpenSSH 用戶端。在 PowerShell 或命令提示字元中執行:
sftp -P 22 exports@sftp.example.com
連接埠要用大寫的 -P 指定;小寫的 -p 在 sftp 裡是別的意思。第一次連線時,sftp 會顯示伺服器的指紋並詢問 Are you sure you want to continue connecting (yes/no/[fingerprint])? 把它和對方給你的指紋比對後,輸入 yes,再輸入密碼。改用金鑰檔時:
sftp -i C:\Users\you\.ssh\id_ed25519 exports@sftp.example.com
登入之後,ls 列出檔案,cd 切換資料夾,put 上傳,get 下載,bye 結束。其他指令請看 SFTP 指令參考;想把每天的上傳變成排程工作,請看自動化 FTP 與 SFTP 傳輸。
連不上的時候
- "Permission denied (publickey)":伺服器只接受金鑰,而你提供的金鑰不在伺服器上。請確認你載入的是私密金鑰而不是
.pub,以及伺服器管理者已經加入你的公開金鑰。 - "Permission denied (password)",或應用程式中的驗證錯誤:使用者名稱或密碼錯誤。大多數伺服器的使用者名稱會區分大小寫。
- "Connection timed out":完全沒有回應。通常是防火牆、連接埠錯誤,或伺服器只允許白名單中的 IP 位址。
- "Connection refused":主機有回應,但該連接埠上沒有服務在監聽。請檢查連接埠號碼。
- "Host key verification failed",或主機金鑰已變更的警告:伺服器的金鑰和你電腦上儲存的不再相符。可能只是伺服器重建了,也可能是更糟的情況,所以在接受新金鑰前,請先向伺服器管理者確認。如果用的是 Windows 的
sftp,執行ssh-keygen -R sftp.example.com就能刪除舊紀錄。 - 上傳時出現 "Permission denied":你已經連上,但沒有權限寫入那裡。廠商的伺服器常常只允許上傳到一個資料夾,例如
/incoming。 - FileZilla 的 "Could not connect to server" 涵蓋了上面大部分的情況;它的訊息記錄會告訴你是哪一種。
在寫信給廠商之前,三項免費檢查可以幫你縮小範圍:SFTP 連線測試工具(伺服器到底有沒有從網際網路回應?)、SFTP 驗證方式檢查工具(它要的是密碼、金鑰,還是兩者都要?),以及 SFTP 主機金鑰指紋(它提供的是哪些金鑰?)。只接受白名單位址的伺服器,也會拒絕這些檢查。
開始你的 30 天免費試用
下載 FTPie,開始 30 天免費試用。享受 FTP 與雲端的無縫整合,試用結束後仍可繼續使用免費版。
下載免費試用版