使用 SSH 安全地使用遠端桌面連接到 Windows

更新頁 :
頁面創建日期 :

操作環境

遠端連接到 Windows
  • 窗戶11
從 Windows 遠端連接
  • 視窗 10
OpenSSH的
  • OpenSSH_for_Windows_8.1p1、LibreSSL 3.0.2

先決條件

遠端連接到 Windows
  • Windows 10 或更高版本(需要專業版或其他版本)。 但是,如果 OpenSSH 可以單獨準備,則不適用。
  • Windows Server 2019 或更高版本。 但是,如果 OpenSSH 可以單獨準備,則不適用。
從 Windows 遠端連接
  • Windows(大多數版本都是可能的)
  • Windows Server(大多數版本都是可能的)

起先

在雲端或 VPS 的 Internet 上構建 Windows 環境後,您通常會使用遠端桌面連接來操作遠端 Windows 目標。

在遠端桌面連接中,通信內容是加密的,如果使用者名和密碼沒有洩露,其他人不會在未經許可的情況下登錄。 人們總是擔心人們會嘗試從任何地方登錄。

一些主流雲的防火牆與虛擬機是分開的,並且有限制連接源的功能。 這些功能可能並非在所有服務中都可用。 特別是在預算較低的環境中,在許多情況下,此類功能不可用。

因此,這一次,我想通過添加 SSH 功能來盡可能地限制連接源。 由於使用了私鑰和公鑰,只要私鑰不洩露,就可以盡可能地減少從其他環境遠端登錄的可能性。

在這種情況下,我們將使用 OpenSSH 來構建 SSH 環境。

構建遠端目標 Windows 環境

構建允許您通過 Internet 進行遠端連接的 Windows 環境。 只要它通過 Internet 構建,它在哪裡構建並不重要,但對於此驗證,它將在 Microsoft Azure 上構建為虛擬機。 在 Azure 上構建的步驟與此提示無關,因此我將省略它們。 由於這次將使用埠 22,因此如果使用 Azure,請確保埠 22 通信通過 Azure 上虛擬機的設置。

如果要在 Azure 以外的環境中進行構建,請確保可以為你的環境與 Windows 建立遠端桌面連接。

此外,Windows 版本面向 Windows 10 或更高版本,或者 Windows Server 2019 或更高版本,這使得構建 OpenSSH 環境變得容易。 它可以在早期的環境中實現,但需要更多的時間和精力,因為您需要單獨下載和設置 OpenSSH。

在這種情況下,過程與 SFTP 相同,因此請參考以下提示。

設置 OpenSSH

從這裡開始,我們將在遠端 Windows 環境中工作。 首先,使用遠端桌面連接連接到遠端目標。 如果您的雲或 VPS 提供主控台,您可以使用它。 由於我們這次是在 Windows 11 環境中運行,因此其他版本的步驟可能略有不同。

打開「開始」功能表,然後選擇「設置」。

選擇一個應用。

選擇可選功能。

選擇「顯示功能」。

清單中有“OpenSSH伺服器”,因此請檢查它並按兩下一步“。

按兩下安裝”

安裝完成後,將“OpenSSH Server”添加到下面的清單中,您就完成了。

OpenSSH 的服務配置

右鍵按鍵按「開始」功能表,然後選擇「電腦管理」。

從左側清單中選擇服務。

在中間清單中找到“OpenSSH SSH Server”,右鍵按兩下並選擇“屬性”。

遠端連接時,我們希望OpenSSH伺服器正在運行,因此將「啟動類型」設置為「自動」。。

由於它目前沒有運行,我將在這裡啟動它,包括設置它。

啟動后,按兩下OK按鈕將其關閉。 它應該在清單中運行。

配置 OpenSSH

在初始狀態下,私鑰身份驗證被禁用,因此請設置它。 在資源管理員中打開以下資料夾。

  • C:\ProgramData\ssh

但是,上面的資料夾可能是一個隱藏資料夾,因此請通過設置資源管理器選項使其可見。

資料夾中有一個名為 sshd_config 的檔,因此請使用記事本等文本編輯器打開它。 由於我們這次將進行更改,因此請在更改前複製並複製作為 sshd_config_old 備份。

PubkeyAuthentication yes 尋找: 此項是用於是否啟用金鑰身份驗證的設置。 默認情況下,它被禁用並顯示 ,但它被註釋掉了, yes 所以取消註釋。

更改前

#PubkeyAuthentication yes

更改後

PubkeyAuthentication yes

PasswordAuthentication yes 尋找: 此項是是否啟用密碼認證的設置。 它預設處於啟用狀態,即使您啟用私鑰身份驗證,如果保持啟用狀態,從安全角度來看也毫無意義,因此請取消註釋並 no 設置 .

更改前

#PasswordAuthentication yes

更改後

PasswordAuthentication no

在末尾附近註釋掉以下行: 這是管理員組的關鍵設置,我們將禁用它,因為在這種情況下,我們將支援每用戶登錄。

更改前

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

更改後

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

更改後 OpenSSH SSH Server 保存檔后,重新啟動服務以反映設置。

如果要更改埠

如果要更改 SSH 連接埠,請更改以下內容。

更改前

#Port 22

更改後

#Port <任意の番号>

通過更改埠號,預設埠不會受到攻擊,這將導致更強的安全性。 另一方面,它增加了操作的複雜性,因此您需要小心。

如果更改埠號,則必須在連接時指定 22 以外的埠。

創建私鑰和公鑰

這是一項客戶端任務。 但是,您在哪裡工作並不重要。 但是,請注意不要洩露您創建的私鑰。

如果你有 Windows 10 或更高版本、Windows Server 2019 或更高版本,則預設安裝 OpenSSH 用戶端,因此你可以使用命令輕鬆創建它。 在其他環境中,您將需要安裝單獨的 OpenSSH 用戶端或使用單獨的工具。

以下提示適用於 SFTP,但請參考它們來設置 OpenSSH 用戶端。

在客戶端環境中,啟動命令提示符、PowerShell、終端或任何可以執行命令的工具。

由於您將創建一個檔,因此請使用命令移動到 cd 任何目錄。

執行以下命令:

ssh-keygen -t rsa -f id_rsa

您可以為金鑰設定密碼,因此如有必要,請輸入密碼。 如果設置密碼,安全性將得到增強,但會增加在後續過程中輸入密碼的時間和精力。

已創建公鑰 (id_rsa.pub) 和私鑰 (id_rsa)。

公鑰 (id_rsa.pub) 稍後將放置在遠端目標上。 私鑰可以位於遠端用戶端上的任何位置,但必須位於只能由用於安全目的的帳戶訪問的資料夾中。 基本上,我認為如果您將其放在用戶端的以下資料夾中,則沒有問題。 如果您使用 OpenSSH 用戶端,預設情況下它將瀏覽到此資料夾。

  • C:\Users\<ユーザー名>\.ssh

如果無法在資源管理員中創建上述資料夾,可以使用以下命令創建它。

cd C:\Users\<ユーザー名>
mkdir .ssh

公鑰的放置

這是一項遠端操作。 將創建的公鑰 (id_rsa.pub) 放在遠端目標上。 將此檔案移至以下資料夾: <ユーザー名> 是實際遠端連接時將登錄的用戶帳戶的名稱。

  • C:\Users\<ユーザー名>\.ssh

如果沒有資料夾,並且無法在資源管理器中創建資料夾,則可以使用以下命令創建資料夾。

cd C:\Users\<ユーザー名>
mkdir .ssh

將已部署的公鑰檔案 authorized_keys 變更為 。 就是這樣。

根據您的環境,您可能已經 authorized_keys 擁有該檔。 如果您出於其他目的設置了 SSH 連接,則可能會出現這種情況。 在這種情況下 authorized_keys ,您已經註冊了檔,方法是打開檔和使用記事本等檔,並在 id_rsa.pub authorized_keys的下一行列出 id_rsa.pub 的內容。 您可以在 authorized_keys 中註冊多個公鑰。

使用 SSH 進行連接

使用 OpenSSH 命令連接時

有多種方法可以連接 SSH,但讓我們從基於命令的連接開始。 實際上,步驟數最少的連接是通過命令進行的。 作為先決條件,您必須安裝 OpenSSH 用戶端。

啟動所選的命令工具(命令提示符、PowerShell、終端)。

輸入以下命令:

命令格式

ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>

以下是參數說明。 根據您的環境進行設置。

變數參數名稱說明
SSH的 將 SSH 與 OpenSSH 一起使用的聲明。
-我 使用私鑰檔的聲明。
<私鑰檔案路徑> 描述您建立的私鑰檔案的位置。 C:\Users\<ユーザー名>\.ssh 路徑是可選的。 否則,需要絕對路徑或相對路徑。
-L 此聲明指定連接到遠端目標時要在本地和遠端使用的埠。
<當地的自由港> 遠端桌面連接通常使用埠 3389,但你可以使用任何埠進行連接。 不管它是什麼號碼,只要它是免費的。
127.0.0.1 這是識別遠端目標連接位置的主機IP位址。 基本上,127.0.0.1 就可以了。
3389 要在遠端目標處使用的埠號。 遠端目標通常通過埠 3389 與遠端桌面連接進行連接,因此可以保持原樣。
<要連接到的用戶帳戶的名稱> 指定要在遠端目標連接到的帳戶。
<要連接到的伺服器的IP位址或主機名> 指定遠端目標伺服器。

示例輸入

ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194

第一次,系統會提示您輸入一個鍵,因此 yes 請鍵入並按 Enter。

如果您為私鑰設置了密碼,則必須輸入密碼。

以下內容將處於連接狀態。 您可以看到顯示的是伺服器端的使用者,而不是用戶端。 顯示此視窗時,它已連接,因此請不要關閉它。 如果關閉它,連接將斷開。

與 PuTTY 連接時

在這裡,我們將嘗試使用名為 PuTTY 的工具連接到 SSH。

轉換私鑰

首先,如果您使用 PuTTY,則需要轉換私鑰。 我認為附加工具中有“puttygen .exe”,所以請啟動它。

從功能表中選擇「轉換 -> 匯入金鑰」。。

選擇您創建的私鑰,在本例中為“id_rsa”。

如果您設置了密碼,請輸入該密碼。

從功能表中選擇「檔案 -> 保存私鑰」。

「. .ppk“檔。

創建完成後,您就完成了。

配置 PuTTY

啟動 putty.exe。

輸入要連接到的環境的IP位址。 如果您有功能變數名稱,則可以使用功能變數名稱進行連接。

從左側功能表中選擇「連接」->」數據」。 在「自動登錄使用者名」字段中,輸入要連接到的環境的帳戶名稱。

從左側功能表中,選擇「連接」-“>”SSH“-”> 隧道“。 在下面的輸入欄位中輸入它們中的每一個,然後按下「添加」按鈕。

參數名稱值註解
源埠 13389 任何自由港都可以。 我稍後會用到
目的地 127.0.0.1:3389

添加后,它應如下所示:

接下來,從左側功能表中選擇「連接 -> SSH -> 身份驗證 -> Cledentioals」,然後按下「用於身份驗證的私鑰檔」的“瀏覽”按鈕。

選擇已保存的私鑰。

在左側功能表中選擇「會話」,為「保存工作階段」輸入您選擇的名稱,然後按下「保存」 按鈕。 從下次開始,如果載入此設置是可以的。

確認保存後,按兩下打開按鈕。

首次連接時將顯示以下螢幕。 按兩下接受“按鈕。

您將看到一個看起來像命令提示符的螢幕。 如果您有私鑰的密碼,請輸入該密碼。

如果顯示內容如下圖所示發生變化,則將連接。 您可以看到顯示的是伺服器端的使用者,而不是用戶端。 顯示此視窗時,它已連接,因此請不要關閉它。 如果關閉它,連接將斷開。

使用 SSH 建立遠端桌面連接

現在,讓我們在使用 SSH 連接時建立遠端桌面連接。

連接時,計算機部分不是實際的遠端位址,而是“localhost:< >SSH連接中指定的埠名”。 在示例中,指定了 13389,因此在這裡我們將連接到“localhost:13389”。

如果顯示身份驗證螢幕,則可以判斷連接是否完成。 輸入您的使用者名和密碼進行連接。

如果你能像這樣連接,你就成功了。

在防火牆設置中禁用常規遠端桌面連接

在上一項時,您現在可以使用 SSH 與遠端桌面連接。 但是,在此狀態下,「通過 SSH 進行遠端桌面連接」僅添加到「正常遠端桌面連接」 中。 在安全性方面,它沒有增加任何東西。 因此,接下來要做的就是防止「正常的遠端桌面連接」。

如果進行此設置,則除了“通過SSH進行遠端桌面連接”外,您將無法進行連接,因此,如果您弄亂了設置,則可能無法進行遠端連接。 因此,請務必提前檢查“通過SSH進行遠端桌面連接”是否可能,並且即使您嘗試連接的用戶端消失,也能夠通過其他方式操作遠程環境。

在這裡,在“通過 SSH 進行遠端桌面連接”中配置防火牆設置。 這是因為如果您使用「正常遠端桌面連接」執行操作,它將在您設置防火牆的那一刻斷開連接。

查看具有高級安全性的Windows Defender防火牆。 根據 Windows 版本的不同,顯示器的位置會有所不同,因此請根據該版本進行顯示。

從左側功能表中選擇入站規則。

在中間清單中,找到「遠端桌面 - 使用者模式(TCP 輸入)」並打開其屬性。

選擇“作用域”選項卡,將“本地 IP 位址”更改為“這些IP位址”,然後按兩下「添加」按鈕。

輸入 127.0.0.1 並按下確定按鈕。 這將阻止來自 127.0.0.1 以外的任何位置的遠端桌面連接。 127.0.0.1 是指向您的電腦的IP位址。 如果輸入錯誤的值,則可能無法從任何地方進行連接,因此請小心。

點擊OK按鈕進行確認。

目前,僅此一項就是一種對策,但我們也設置了“遠端桌面 - 使用者模式(UDP 接收)”。

驗證是否無法使用 SSH 以外的任何設備進行遠端連接

現在,嘗試從另一台未使用 SSH 的電腦建立遠端桌面連接。

如果可以連接,將顯示身份驗證螢幕。 如果您可以確認無法進行連接,如下所示,則可以。

總結

使用最新的 Windows,現在可以輕鬆引入 SSH 伺服器。 通過添加設置,您現在可以輕鬆提高遠端桌面連接的安全性。 但是,由於它只負責 Windows 本身的安全措施, 如果你想讓它更安全,我認為最好在連接到 Windows 之前設置一個單獨的 SSH 伺服器或防火牆。

此外,您可以使用SSH嚴格設置安全性,但是當它太難時,由於操作錯誤,沒有人可以連接。 小心不要以此結束。