コンテンツへスキップ

【Windows Server 2019】SSH 経由で、リモートデスクトップ接続する。

Windows Server のリモートデスクトップ接続も、よりセキュアにしたい。

RDP 通信自体は暗号化されていますが、

セッション開始のログインがパスワード認証だけだと不安。

暗号鍵認証を導入したい。

ファイアウォールに余計な穴を開けておきたくない。

という方にいかがでしょうか。

昨今、Windows でもSSH 接続が標準で使えるようになってきた訳ですし。

SSH のポートフォワーディング(トンネリング)を使用して、リモートデスクトップ接続する。

RDP 接続をSSH 接続でよりセキュアにしよう。

AWS のEC2 でのLinux サーバー構築向けのドキュメントに、
SSH ポートフォワーディング 経由でリモート接続をする手順が書かれていました。

■ [AWS] 「Amazon Linux 2」に、Windows 10 からGUI で接続する。

これならリモート先のサーバーのファイアウォールを貫通できるし、暗号鍵認証も使えるからいいね。
ということで、WindowsServer でもやってみた。という話です。

まずはSSH 接続の準備をする。

鍵認証SSH 接続を設定するまでの手順です。


リモートデスクトップ接続の準備をする。

デフォルトではRDP(リモートデスクトップ)は有効になっていません。

Windows Home エディションとかも対応していません。

サーバー側で、リモート接続を有効する。

Windows ロゴマーク > 設定 > システム をクリックします。

図1: 設定画面のホーム。「システム」をクリックして進む。
図1: 設定画面のホーム。「システム」をクリックして進む。

1.「リモートディスクトップ」 をクリック。
2.「リモート デスクトップ を有効にする」をオン にします。

図2: 「リモートデスクトップ」設定画面。まだオフの状態。
図2: 「リモートデスクトップ」設定画面。まだオフの状態。

はーい。有効にしまーす。

図3: 「リモートデスクトップを有効にしますか?」の確認ダイアログ。「確認」をクリック。
図3: 「リモートデスクトップを有効にしますか?」の確認ダイアログ。「確認」をクリック。

必要に応じていろいろと決めてください。

図4: Windows Defender ファイアウォールの受信の規則。リモートデスクトップ関連の規則を右クリックして「規則の無効化」を選択。
図4: Windows Defender ファイアウォールの受信の規則。リモートデスクトップ関連の規則を右クリックして「規則の無効化」を選択。

ポート「3389」を開放しない(ファイアーウォールで通過させない)。

リモート接続を有効にすると、同時にリモート接続用のポートが開かれるので閉じておきます。

SSH でトンネリングする場合、ファイアーウォールも越えられるので、この設定は不要です。

図5: 無効化後、リモートデスクトップ関連の規則の「有効」列が「いいえ」になった。
図5: 無効化後、リモートデスクトップ関連の規則の「有効」列が「いいえ」になった。

これで3389ポートから普通にリモート接続することは困難に。

図6: 普通にリモートデスクトップ接続しようとするとブロックされてエラーに。
図6: 普通にリモートデスクトップ接続しようとするとブロックされてエラーに。

通常のリモートデスクトップ接続ができないことを確認。

先ほど、リモート接続ポート通過用の規則を無効化しているので、
普通に接続すると、ファイアウォールにプロックされて接続できません。

図7: PowerShell でSSH ポートフォワーディングのコマンドを実行したところ。
図7: PowerShell でSSH ポートフォワーディングのコマンドを実行したところ。

SSH ポートフォワーディングを使ってリモートデスクトップ接続する。

SSH ポートフォワーディングを使ってトンネリング。

Power Shell などで下記のコマンドを実行。

<接続先のポート番号>を<自身のポート番号>にマッピングしています。
※改行しないで、1行で実行します。

ssh -L <自身のポート番号>:<接続先サーバー名 or IPアドレス>:<接続先のポート番号> 
 -i <秘密鍵の場所>/<秘密鍵ファイル名> <接続先ユーザー名>@<接続先サーバー名 or IPアドレス>

実行例:

ssh -L 3389:192.168.3.29:3389 -i .ssh/id_rsa uniuni@192.168.3.29

SSH 接続した時と同じです。
Power Shell はこのまま開いておきます。
※閉じると、ポートフォワーディングが停止されます。

図8: SSH 接続が完了した状態。このPowerShell はこのまま開いておく。
図8: SSH 接続が完了した状態。このPowerShell はこのまま開いておく。

リモートデスクトップ接続する。

現在、サーバーの3389 ポートがローカルの3389 にマッピングされている状態ですので、
ローカルホストを指定してリモートデスクトップ接続が可能です。

図9: リモートデスクトップ接続のダイアログ。接続先に「localhost」を指定。
図9: リモートデスクトップ接続のダイアログ。接続先に「localhost」を指定。
図10: 資格情報の入力ダイアログ。ユーザー名とパスワードを入力。
図10: 資格情報の入力ダイアログ。ユーザー名とパスワードを入力。

接続できました。(※1)

図11: 接続成功。奥にVM のロック画面、手前にリモートデスクトップのウィンドウが表示されている。
図11: 接続成功。奥にVM のロック画面、手前にリモートデスクトップのウィンドウが表示されている。

※1:奥のVM の画面はロック画面になり、手前のリモート接続に切り替わっています。

図12: 手前と奥、それぞれのウィンドウを矢印で示したところ。奥がVM 本体、手前がリモートデスクトップ接続。
図12: 手前と奥、それぞれのウィンドウを矢印で示したところ。奥がVM 本体、手前がリモートデスクトップ接続。

接続状況の確認

参考までにWireshark で通信状況を確認してみました。

SSH 経由でリモートデスクトップ接続した場合。

ループバック

図13: Wireshark でループバックのキャプチャ。SSH 経由の接続なので、ポート3389 宛のTLS 通信がループバックに流れている。
図13: Wireshark でループバックのキャプチャ。SSH 経由の接続なので、ポート3389 宛のTLS 通信がループバックに流れている。

イーサネット

図14: Wireshark でイーサネットのキャプチャ。実際の通信はSSH(ポート22)の暗号化パケットのみ。
図14: Wireshark でイーサネットのキャプチャ。実際の通信はSSH(ポート22)の暗号化パケットのみ。
普通にリモートデスクトップ接続した場合。

ループバック

図15: 普通に接続した場合のループバックキャプチャ。何も流れていない。
図15: 普通に接続した場合のループバックキャプチャ。何も流れていない。

イーサネット

図16: 普通に接続した場合のイーサネットキャプチャ。ポート3389 宛のUDP 通信がそのまま流れている。
図16: 普通に接続した場合のイーサネットキャプチャ。ポート3389 宛のUDP 通信がそのまま流れている。

発生するかもしれない事例と対策について。

私の環境では起きたので、対処法をメモして置おきます。

既に進行中のコンソールセッションがあるため、、、

図17: 「既に進行中のコンソールセッションがあるため…」のエラーダイアログ。
図17: 「既に進行中のコンソールセッションがあるため…」のエラーダイアログ。

リモートデスクトップ接続するときに「 既に進行中のコンソールセッションがあるため、、、 」のエラーが出るときは、下記の様に接続するポートを変えてみてください。

※60000番は適当に決めてます。

 ssh -L 60000:192.168.3.29:3389 -i .ssh/id_rsa uniuni@192.168.3.29

60000 番ポートへリモートデスクトップ接続する。

図18: 接続先に「localhost:60000」を指定してリモートデスクトップ接続。
図18: 接続先に「localhost:60000」を指定してリモートデスクトップ接続。

しばらくすると、SSH 接続が切れて、リモートデスクトップ接続が中断してしまう場合。

サーバーのssh.config ファイルにて、下記のプロパティをコメントアウトを外して有効にする。

ClientAliveInterval 0
図19: sshd_config を編集して、ClientAliveInterval 0 を有効化したところ。
図19: sshd_config を編集して、ClientAliveInterval 0 を有効化したところ。

sshd を再起動します。

図20: タスクマネージャーのサービスタブからsshd を右クリックして再起動。
図20: タスクマネージャーのサービスタブからsshd を右クリックして再起動。

以上です。

(Visited 2,302 times, 1 visits today)

「【Windows Server 2019】SSH 経由で、リモートデスクトップ接続する。」への1件のフィードバック

  1. ピンバック: Windows で SSH 接続する時のまとめ。Windows 10、Windows Server 2016、2019 - .zapping

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です