SSH 是什麼?用途、連線與金鑰入門教學
SSH 是什麼、怎麼用?從遠端連線用途、基本指令、Port 22、主機指紋到 SSH Key,白話解釋公私鑰、第一次登入步驟與常見錯誤,幫新手安全操作遠端主機。

SSH(Secure Shell,安全殼層協定)是一種讓你透過加密連線,登入並操作遠端電腦的通訊協定。你可以坐在自己的筆電前,連到另一個地方的伺服器,查看檔案、執行命令或維護網站,不必人到現場。
很多人第一次遇到 SSH,是在架站教學裡看到「請先 SSH 登入主機」,或在設定 GitHub 時被要求新增 SSH Key。文字看起來很工程,背後其實是三個問題:要連到哪裡、怎麼證明身分,以及連上之後能做什麼。
這篇文章會先把 SSH 的用途講清楚,再帶你看懂基本連線指令、公私鑰與常見錯誤。即使現在沒有伺服器,也能先理解操作邏輯;真正連線時,再代入主機商或管理員提供的資料。
SSH 是什麼?先理解「遠端操作」這件事
假設網站放在一台雲端主機上。平常你用瀏覽器開網站,是在使用它提供的網頁服務;如果要檢查網站程式、查看主機上的執行紀錄,可能就需要另一種管理入口。SSH 是常見的遠端管理方式,讓有權限的人透過網路登入主機。
你可以把 SSH 想成一條有身分查驗的加密通道。通道建立後,鍵入的指令與主機回傳的內容會受到傳輸保護;至於能看哪些資料、能不能改設定,仍取決於登入帳號的權限。這也符合 IETF 的 SSH 協定架構對安全遠端登入與其他網路服務的定位。
SSH、終端機、CLI 與 OpenSSH 有什麼不同?
終端機是讓你輸入文字指令、看結果的視窗;CLI 是透過指令操作軟體的介面;SSH 是連到遠端的協定;OpenSSH 則是實作 SSH 的一套軟體。常見的 ssh 指令,就是其中的用戶端工具。
因此,打開終端機不代表已經連到遠端。你也可能一直在操作自己的電腦。若還不習慣輸入指令,可以先看CLI 命令列入門教學,再回來理解 SSH 如何把操作延伸到另一台主機。
SSH 可以做什麼?三個常見用途
一、登入遠端主機,執行命令
網站管理者可以透過 SSH 查看伺服器狀態、閱讀紀錄或執行部署程序。連線成功並進入遠端命令列後,指令通常是在那台遠端電腦執行;你本機的終端機負責傳送輸入、顯示輸出。操作前先確認所在主機,就能減少改錯環境的機會。
二、透過 SFTP 傳送檔案
如果目的只是上傳圖片、程式或下載備份,可以使用 SFTP。它透過 SSH 提供的加密傳輸來進行檔案作業,也有圖形介面的客戶端可用,不一定得用文字指令。OpenSSH 的 SFTP 手冊列出了檔案傳送與管理功能。
要注意,主機商提供 SFTP 帳號,不代表同時開放完整命令列登入。服務端可以限制帳號只能傳檔。連線方式與可用權限,要以該主機的設定為準。
三、讓 Git 透過 SSH 連到 GitHub
GitHub 支援以 SSH 存取儲存庫。設定好金鑰後,Git 可以利用 SSH 完成身分驗證與資料傳送;這裡的 SSH 負責連線,Git 負責版本管理,GitHub 則提供託管服務。儲存庫的基本概念,可接著讀Repo 與 GitHub Repository 入門。
這不表示你能登入 GitHub 的一般伺服器桌面或命令列。GitHub 的 SSH 入口主要用於它開放的服務;官方也明確說明,驗證成功不等於提供 shell 存取。設定細節可參考 GitHub 的 SSH 說明。
SSH 跟 HTTPS、VPN 的差別
這些名詞都可能涉及加密,但要解決的工作不同。先看你要完成什麼,比只問「哪一個比較安全」更有幫助。
| 方式 | 主要用途 | 要注意的界線 |
|---|---|---|
| SSH | 遠端登入、執行命令與承載其他服務 | 能做什麼取決於帳號與服務設定 |
| SFTP | 透過 SSH 傳送與管理檔案 | 可只允許傳檔,不開放一般命令列 |
| HTTPS | 安全瀏覽網頁、呼叫網頁服務 | 一般網站後台多使用這種連線 |
| VPN | 依設定把網路流量送入虛擬私人網路 | 是否涵蓋所有流量,取決於路由與設定 |
例如,用 WordPress 後台寫文章,通常是透過 HTTPS;只有主機維護等需求,才可能用到 SSH。SSH 不會自動保護整台電腦所有應用程式的流量;SSH 通道轉送也需要另外設定,不能直接當成已開啟 VPN。
兩者的範圍可對照 Microsoft 的 VPN 路由說明;HTTPS 則由 HTTP 標準定義其安全連線語意。
SSH 怎麼運作?分清楚兩種身分驗證
SSH 採用戶端與伺服器架構。你這一端要有連線工具,遠端則要有正在運作、且能從你的網路連到的 SSH 服務。Microsoft 的 OpenSSH 說明把 ssh 稱為用戶端元件,sshd 稱為伺服器元件;兩者負責不同工作。
第一層是確認「我有沒有連到正確的主機」。伺服器會以主機金鑰(Host Key)證明身分,用戶端則檢查是否可信。第一次連線看到的 fingerprint,就是主機公鑰的指紋;它的用途是讓你比對身分,不是要你設定登入密碼。
第二層是確認「這位使用者能不能登入」。主機可以要求帳號密碼、公開金鑰驗證,或依組織政策搭配其他驗證方式。通過驗證後,才依權限提供命令列、檔案傳輸或其他服務。
連線建立過程也會協商加密金鑰,保護後續資料傳輸。不要把「用 SSH Key 登入」理解成「整段資料都拿你的登入私鑰加密」;登入身分驗證與通道加密,是不同的工作。密碼登入同樣可以走加密通道,但仍要確認主機身分。OpenSSH 手冊也說明了這些驗證與加密行為。

透過《SEO 排名攻略學》獲得穩定的 SEO 流量與實戰經驗。
再搭配《AI SEO 流量變革》看懂 AI 搜尋趨勢,搶佔 AI 搜尋紅利。

SSH 怎麼用?第一次連線的基本步驟
以下示範以 OpenSSH 指令為例,只適用於你擁有或已取得操作權限的主機。server.example.com 與 your-user 都是示意值,不能原封不動當成你的登入資料。
步驟一:拿到主機、帳號與登入方式
先向主機商或管理員確認四件事:主機網域或 IP、登入帳號、連接埠(Port),以及使用密碼或金鑰登入。如果主機只允許特定 IP、需先連公司 VPN,或必須經過跳板機,也要先滿足這些條件;光有一組密碼並不足夠。
SSH 預設使用 TCP 22,但管理者可以改用其他連接埠,因此以實際提供的資料為準。連接埠可以理解成主機上的服務入口;同一台主機的網站入口與 SSH 入口,不一定是同一個。預設值與可調設定可查 OpenSSH 用戶端設定手冊。
步驟二:確認本機有 SSH 用戶端
Windows 可以在 PowerShell 或 Windows Terminal 的命令列工作階段檢查;macOS 可以開啟「終端機」,Linux 則開啟所用的終端機程式。先輸入下面的指令,確認能否顯示 OpenSSH 版本:
ssh -V
如果顯示找不到指令,代表還需要安裝用戶端,或修正指令搜尋路徑。Windows 可依 Microsoft 官方文件安裝 OpenSSH Client;只是要從電腦連出去,不必為此開啟 OpenSSH Server。macOS 的遠端連線入口可參考 Apple 終端機使用手冊。
步驟三:輸入連線指令
最基本的寫法是「ssh 帳號@主機」。例如,將下方的帳號與網域換成你取得的資料:
ssh [email protected]
若管理員提供的連接埠是 2222,就用小寫 -p 指定。2222 在這裡只是示例,不能因為文章這樣寫,就假設你的主機也使用它:
ssh -p 2222 [email protected]
步驟四:核對主機指紋,再完成登入
第一次連到某台主機時,用戶端可能會詢問是否信任主機金鑰。先透過主機管理介面或已確認身分的管理員,取得正確指紋,比對一致後再接受。只是在同一個不明連線裡重新抓一次金鑰,無法獨立證明它可信。
接著依服務設定輸入密碼或使用金鑰驗證。輸入密碼時,終端機可能不顯示文字,也不顯示星號,這是常見的正常行為;輸入完按 Enter 即可。若服務只接受金鑰,就不會因為你知道帳號密碼而自動允許登入。
步驟五:確認遠端環境,完成後離開
登入一般 Linux 主機並取得 shell 後,可以先用 whoami 查看帳號、用 pwd 查看目前目錄。這些是確認環境的輕量操作;它們的可用性仍取決於遠端作業系統與帳號限制。結束時輸入 exit,離開遠端工作階段。
如果剛開始學Vibe Coding 與 AI 寫程式,尤其要建立這個習慣:每次貼上指令前,先知道它會在哪台電腦、哪個目錄執行。SSH 讓操作更方便,也讓遠端上的錯誤操作變得更直接。

SSH Key 是什麼?公鑰給服務,私鑰留自己
SSH Key 通常是指一對用於公開金鑰驗證的金鑰:公鑰(Public Key)登錄到要使用的伺服器或服務,私鑰(Private Key)由你保管。登入時,用戶端以私鑰完成簽章,讓服務端驗證你確實持有對應的私鑰,無須把私鑰交出去。
要特別區分,這裡講的是「使用者登入金鑰」,前面核對主機指紋時用的是「主機金鑰」。兩者都用到公私鑰,但前者辨識登入者,後者辨識伺服器。
建立金鑰前,先避免覆蓋舊檔
若服務支援 Ed25519,可以在本機執行以下範例。-t 指定類型,-C 加入方便自己辨識的註記;公司或主機有指定演算法時,則遵循其要求:
ssh-keygen -t ed25519 -C "my-laptop"
工具會詢問儲存位置。若該路徑已有金鑰,不要直接同意覆蓋,應先確認用途或改用新的檔名。常見預設檔名是 id_ed25519 與 id_ed25519.pub,前者為私鑰,後者為公鑰;檔名只是辨識線索,分享前仍要確認內容類型。
接著可以設定 passphrase,也就是保護私鑰檔案的密語。它用來解鎖你的私鑰,和遠端帳號密碼是不同東西。正式選項與金鑰保存方式可參考 ssh-keygen 手冊;不要為了省一次輸入,就隨意把保護取消。
把公鑰登錄到正確的帳號
金鑰產生後,還要把公鑰加到服務端。一般 Linux 主機常使用該帳號的 ~/.ssh/authorized_keys;主機商也可能提供控制台,GitHub 則有帳號的 SSH 金鑰設定。路徑、檔案權限或管理員帳號可能有例外,應依服務文件操作。OpenSSH 伺服器設定也允許管理者調整相關規則。
若要指定本機的私鑰檔,可使用小寫 -i。以下路徑仍是示意,需換成你的實際私鑰路徑;路徑含空白時保留引號:
ssh -i "path/to/private-key" [email protected]
可以交給服務端的是公鑰;私鑰不要貼到聊天、寄給他人或放進公開儲存庫。如果筆電遺失或私鑰疑似外流,應在相關服務撤銷舊公鑰的存取權,再設定新的金鑰。只刪掉自己電腦上的檔案,並不會撤銷其他地方已登錄的權限。

透過《SEO 排名攻略學》獲得穩定的 SEO 流量與實戰經驗。
再搭配《AI SEO 流量變革》看懂 AI 搜尋趨勢,搶佔 AI 搜尋紅利。

SSH 連不上怎麼辦?先看錯誤發生在哪一層
「連不上」不一定是密碼錯誤。從網址解析、網路可達性,到身分驗證,每一層都可能有不同原因。先保留完整錯誤訊息,再依下面的方向檢查,比反覆換密碼有效。
| 錯誤訊息 | 可能發生的問題 | 先檢查什麼 |
|---|---|---|
| Could not resolve hostname | 主機名稱無法解析 | 名稱是否打錯;DNS 是否正常 |
| Connection timed out | 連線未在期限內建立 | IP、連接埠、VPN、網路及防火牆規則 |
| Connection refused | 目標入口拒絕連線 | 服務是否啟動;Port 是否正確;是否被明確拒絕 |
| Permission denied (publickey) | 公開金鑰身分驗證未通過 | 帳號、指定私鑰、服務端是否登錄對應公鑰 |
| REMOTE HOST IDENTIFICATION HAS CHANGED | 本次主機金鑰與記錄不符 | 先確認主機變更及新指紋,暫停登入 |
若需要更詳細的連線資訊,可以用 ssh -v [email protected] 開啟除錯輸出。它有助於判斷連線停在哪個階段;分享紀錄前,先遮蔽帳號、主機與本機路徑等不必要資訊。GitHub 的 publickey 錯誤排查文件也示範了如何核對帳號與送出的金鑰。
如果正在測試 GitHub,可依官方流程執行 ssh -T [email protected]。這裡的連線使用者固定是 git,不是你的 GitHub 帳號名稱。出現驗證成功、但不提供 shell 的訊息是預期行為;官方指出這項成功測試仍可能以退出碼 1 結束,不能只憑這個數字判斷失敗。請對照 GitHub 的連線測試說明。
遇到主機金鑰變更,不要直接略過警告
REMOTE HOST IDENTIFICATION HAS CHANGED 可能源自主機重建、更換金鑰,也可能表示你連到錯誤對象。正確做法是先向可信來源確認變更與新指紋,再更新對應的信任紀錄。不要看到錯誤就刪掉整份 known_hosts,也不要以關閉主機驗證作為通用解法。
同樣地,把 SSH 連接埠改成別的數字,不能代替安全的認證、軟體更新與最小權限。SSH 保護的是連線過程;如果登入的帳號權限過大,或照貼了會刪除資料的指令,加密通道仍會把那個指令送到主機上執行。
掌握 SSH,從確認連線對象開始
SSH 最實用的價值,是讓你不受實體距離限制,安全地使用另一台電腦提供的管理或檔案服務。初學時先記住三件事:確認目的主機、保護自己的私鑰,以及知道目前指令在哪台電腦執行。
當教學再出現「SSH 登入主機」,你就能把它拆成具體步驟:取得正確資料、準備用戶端、核對主機、完成身分驗證,再開始操作。若目前的網站平台已經提供完整後台,也不必為了學會一個名詞就額外開放 SSH;有實際需求時,再依服務提供的方式使用即可。
本文指令與平台說明查核於 2026 年 9 月 9 日;主機登入方式、帳號權限與支援設定,仍以服務提供者及官方文件為準。



