HELPER VPS

在 Windows 以 SSH 登入 VPS:PowerShell 及 PuTTY 使用方法

只需一部 Windows 電腦,毋須另購程式即可直接登入 Linux 伺服器。整理了內建 PowerShell 的 ssh 指令及長期廣泛使用的 PuTTY 兩種方法。

登入前的準備

SSH 是在你的電腦與伺服器之間加密收發指令的方法。Linux VPS 建立時 SSH 伺服器已經啟用,預設連接埠為 22。登入只需三項資料。

  • 伺服器的 IPv4 位址:顯示在伺服器頁面的概覽。
  • 用戶名稱:一開始使用 root。
  • root 密碼:在伺服器頁面的 root 密碼欄按查看便會顯示。設定後顯示 7 日,請存入密碼管理工具。

請在伺服器狀態轉為運行中後才登入。如伺服器正在建立或重新安裝中,稍等安裝完成便可。下方指令中的 YOUR_SERVER_IP 請換成你伺服器的 IPv4 位址輸入。

方法 1:以 PowerShell 內建 ssh 指令登入

Windows 10 版本 1809 或以後及 Windows 11 已內建 OpenSSH 客戶端。毋須另外安裝,在 PowerShell 或 Windows 終端機即可使用與 Mac、Linux 完全相同的 ssh 指令。

第 1 步:開啟 PowerShell

在開始選單搜尋 PowerShell 或終端機並開啟。以下列指令確認 ssh 是否已準備好。顯示一行 OpenSSH 版本即表示準備完成。

PowerShell
ssh -V

如未顯示版本而出現找不到指令的提示,請在設定的選用功能加入 OpenSSH 客戶端。Windows 11 在設定 > 系統 > 選用功能,Windows 10 在設定 > 應用程式 > 選用功能。亦可在管理員權限的 PowerShell 以下列一行指令加入。

PowerShell(管理員)
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

第 2 步:登入伺服器

PowerShell
ssh root@YOUR_SERVER_IP

首次登入時會詢問是否儲存伺服器指紋。輸入 yes 並按 Enter,指紋便會儲存到你電腦的 known_hosts 檔案,之後不會再問。接著出現 password 輸入欄時,貼上從伺服器頁面複製的 root 密碼。

在 Windows 終端機及 PowerShell 視窗以滑鼠右鍵或 Ctrl+Shift+V 貼上。輸入密碼時畫面不會顯示是正常的,只需貼上一次再按 Enter。提示符變成 root@伺服器名稱:~# 的樣子,即表示登入成功。

第 3 步:執行首個指令

登入後最好立即把系統更新至最新。Ubuntu 及 Debian 執行 apt update && apt upgrade -y,AlmaLinux 及 Rocky Linux 執行 dnf upgrade -y。建立一般用戶及更新次序詳見首次登入指南。完成工作後以 exit 結束連線。

在 PowerShell 以 SSH 金鑰免密碼登入

使用 SSH 金鑰,便毋須每次貼上密碼,面對猜密碼的嘗試亦穩固得多。在 Windows 亦以相同的 ssh-keygen 指令建立金鑰。

PowerShell
ssh-keygen -t ed25519

詢問儲存位置時按 Enter 使用預設值,建議設定金鑰密碼(passphrase)。兩個檔案會建立在 C:\Users\username\.ssh 資料夾。id_ed25519 是私密金鑰,只留在你的電腦;id_ed25519.pub 是放入伺服器的公開金鑰。以下列指令查看並複製公開金鑰內容。

PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

如是新伺服器,把公開金鑰貼到帳戶的 SSH 金鑰選單,建立伺服器時選擇該金鑰,由一開始便以金鑰登入。步驟見SSH 金鑰指南。已在使用的伺服器,以下列一行指令加入公開金鑰,此時只需輸入一次 root 密碼。

PowerShell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@YOUR_SERVER_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

如有多部伺服器,以名稱儲存登入資料會很方便。用記事本建立 C:\Users\username\.ssh\config 檔案並如下填寫,便可以 ssh myvps 一個詞登入。

C:\Users\username\.ssh\config
Host myvps
    HostName YOUR_SERVER_IP
    User root
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 30

ServerAliveInterval 30 每 30 秒發送一次訊號,即使短暫離開,連線亦會長時間保持。

方法 2:以 PuTTY 登入

PuTTY 是在 Windows 長期使用的免費 SSH 程式。如喜歡按名稱儲存登入資料、按兩下開啟的方式,PuTTY 最合適。在官方網站(putty.org)下載 64 位元安裝檔(MSI)安裝,便會一併安裝 PuTTY 及建立金鑰的 PuTTYgen。

第 1 步:輸入並儲存登入資料

  • 開啟 PuTTY 會顯示 Session 畫面。
  • 在 Host Name 填入伺服器 IPv4 位址,Port 填 22,Connection type 保持 SSH。
  • 在左邊 Connection > Data 的 Auto-login username 填寫 root。
  • 在 Connection 的 Seconds between keepalives 填 30,連線便會長時間保持。
  • 回到 Session 畫面,在 Saved Sessions 填寫名稱(例如 myvps)並按 Save。

第 2 步:登入

選擇已儲存的名稱並按 Open。首次會出現確認伺服器指紋的視窗,按 Accept 便會儲存指紋。出現 password 欄時,以滑鼠右鍵貼上 root 密碼並按 Enter。在 PuTTY 中,右鍵即貼上,拖曳選取文字即複製。

第 3 步:以 PuTTYgen 使用 SSH 金鑰

開啟 PuTTYgen,在 Key 類型選擇 EdDSA(Ed25519)後按 Generate,在空白處移動滑鼠直至進度列填滿。設定 Key passphrase,再以 Save private key 把私密金鑰存為 .ppk 檔案。

視窗上方 Public key for pasting into OpenSSH authorized_keys file 欄內的一行就是公開金鑰。把這一行登記到帳戶的 SSH 金鑰選單,或貼到已在使用伺服器的 ~/.ssh/authorized_keys 檔案末尾。然後在 PuTTY 的 Connection > SSH > Auth > Credentials 中,於 Private key file for authentication 選擇 .ppk 檔案,再回到 Session 畫面按 Save,之後便可免密碼登入。

如想在 PuTTY 使用在 PowerShell 建立的 OpenSSH 金鑰,可在 PuTTYgen 的 Conversions > Import key 載入 id_ed25519 並存為 .ppk。一把金鑰便可在兩個程式一同使用。

在 Windows 與伺服器之間傳送檔案

PowerShell 除 ssh 外亦內建 scp 指令,用於把你電腦的檔案上載到伺服器,或把伺服器的檔案下載到你的電腦。

PowerShell
scp .\site.zip root@YOUR_SERVER_IP:/root/
scp root@YOUR_SERVER_IP:/root/backup.tar.gz .\

傳送整個資料夾時加上 scp -r。如喜歡像檔案總管般拖放,可在 WinSCP 等 SFTP 程式填入相同位址、連接埠 22 及用戶 root。WinSCP 可直接載入在 PuTTY 儲存的工作階段及 .ppk 金鑰。

無法登入時的檢查次序

大多是以下四種之一,按次序檢查很快便可重新登入。

  • Connection timed out:先確認伺服器狀態是否運行中、IP 位址是否正確。如已啟用防火牆,必須允許 SSH(22 號)。部分公司或學校網絡會封鎖 22 號,可改用手機熱點等其他網絡試一次。
  • Permission denied:重新複製密碼並只貼上一次,亦確認前後沒有一併複製空格。超過 7 日看不到密碼時,在伺服器頁面以建立新 root 密碼取得新密碼。
  • REMOTE HOST IDENTIFICATION HAS CHANGED:重新安裝伺服器會產生新的伺服器指紋,便會出現此提示。以 ssh-keygen -R YOUR_SERVER_IP 刪除已儲存的舊指紋再登入便可。
  • Connection refused:伺服器內的 SSH 服務已停止或已更改連接埠。如已更改連接埠,以 ssh -p PORT root@YOUR_SERVER_IP 登入。

重新產生密碼及重新安裝後的登入次序已整理在重新安裝與 root 密碼指南。登入成功後,請按基本防火牆指南只開放使用的連接埠。

接下來最好完成的工作

能以 SSH 金鑰登入後,停用密碼登入可更穩固地保護伺服器。先確認金鑰登入正常,再在伺服器把 /etc/ssh/sshd_config 檔案的 PasswordAuthentication 改為 no,並重新啟動 SSH 服務。Ubuntu 及 Debian 為 systemctl restart ssh,AlmaLinux 為 systemctl restart sshd。

如打算架設網站或應用程式,可接續Docker 安裝指南或WordPress 安裝指南。如工作需要原本的 Windows 桌面,經遠端桌面登入的 Windows VPS 更合適。

值得一併查看的指南

接續此指南最好一併完成的設定。

查看所有指南