Windows Server VPSにリモートデスクトップ接続できない時のRDPトラブルシューティング

9 分で読めます 7 回閲覧 0
目次

Windows Server VPSにリモートデスクトップ接続できない場合、原因はたいてい次の5つのどれかです。3389ポートまでのネットワーク経路、RDPの無効化、Windowsファイアウォール、NLA/CredSSPの認証不一致、アカウントのロックアウトです。このRDPトラブルシューティングガイドでは、それぞれを順番に確認します。対象はWindows Server 2016/2019/2022で、ヨハネスブルグ・モスクワ・東京・ソウルのどのJUSTGクラウドサーバーでも同じ手順が使えます。例ではサーバーIPを203.0.113.10としているので、ご自身のIPに置き換えてください。

RDPを直すのにRDPは不要です。すべてのJUSTG VPSにはブラウザから使えるVNCコンソールがあります。クライアントエリアにログイン → 製品とサービス → 対象のVPS → 管理/コントロールパネルからコンソールを開いてください。見つからない場合はチケットでお問い合わせください。

ステップ1:手元のPCからRDPの3389ポートをテストする

まず外側から確認します。TCPテストが失敗するならネットワーク経路かサーバー側の待ち受けの問題、成功するのにログインできないならステップ4へ進みます。

# On your own Windows PC (PowerShell)
Test-NetConnection -ComputerName 203.0.113.10 -Port 3389

# On macOS / Linux
nc -vz 203.0.113.10 3389

TcpTestSucceeded : True と表示されればポートは開いています。Falseの場合は、クライアントエリアでVPSが起動中か、pingに応答するかを確認してください。社内ネットワークやプロバイダーが外向きの3389を遮断していることもあるので、スマートフォンのテザリングから一度試すと切り分けが早くなります。

ステップ2:リモートデスクトップが有効で待ち受けているか確認する

VNCコンソールでサインインし、PowerShellを管理者として起動します。Remote Desktop Services(TermService)の状態、fDenyTSConnections の値(0で許可、1で拒否)、そしてRDPが実際に使っているポートを確認します。

Get-Service -Name TermService
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
Get-NetTCPConnection -LocalPort 3389 -State Listen

以前にRDPポートを変更していれば PortNumber に新しい番号が表示されるので、接続時は IP:ポート の形式で指定します。RDPが無効、またはサービスが止まっている場合は次のコマンドで戻します。

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Set-Service -Name TermService -StartupType Automatic
Start-Service -Name TermService

ステップ3:リモートデスクトップ用のWindowsファイアウォール規則を修正する

セキュリティ強化スクリプトや規則の整理で、組み込みのリモートデスクトップ規則が無効化されていることがよくあります。日本語版ではグループの表示名が翻訳されているため、どの言語でも同じように動くリソースIDベースのグループ名を使います。

# Language-independent group name for the built-in Remote Desktop rules
Enable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"
Get-NetFirewallRule -Group "@FirewallAPI.dll,-28752" | Select-Object DisplayName, Enabled, Profile

# If the built-in rules were deleted, create one manually
New-NetFirewallRule -DisplayName "Allow RDP 3389" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow

RDPポートを変更している場合は、3389ではなくそのポートを許可してください。そのあとステップ1をもう一度実行すれば、TCPテストは成功するはずです。

ステップ4:NLA・CredSSPの認証エラーを解決する

ポートは開いているのに「認証エラーが発生しました…CredSSP 暗号化オラクルの修復」やNLA関連のメッセージが出る場合は、クライアントとサーバーの更新レベルが合っていません。本来の対処はVNCコンソールからサーバーにWindows Updateを適用し、手元のPCも更新することです。一時的な回避策としてサーバー側でネットワークレベル認証(NLA)を無効にし、ログインして更新後に再度有効化する方法があります。

# Temporary: turn off Network Level Authentication (run in the VNC console)
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 0

# Turn it back on after the server is fully updated
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
NLAを無効にしたままだと、ログイン画面がインターネットにそのままさらされます。更新が終わったらすぐに有効へ戻し、強力なパスワードを使ってください。

ステップ5:アカウントのロックアウトと「セッション数超過」

インターネットに公開されたRDPにはパスワード総当たりのボットが絶えずアクセスするため、ロックアウトポリシーでアカウントが止められていることがあります。VNCコンソールでポリシーとアカウントの状態、現在のセッションを確認しましょう。Windows Serverの既定では管理用セッションは2つまでなので、残っている古いセッションはIDを指定してログオフします。

net accounts
net user Administrator
qwinsta
logoff 2

ローカルアカウントがロックされている場合は、lusrmgr.msc でユーザーのプロパティを開き「アカウントのロックアウト」のチェックを外すか、net accounts に表示されるロックアウト期間が過ぎるのを待ちます。総当たり対策としては、RDPを既定以外のポートに変更し、ファイアウォール規則の接続元を自分のIPに限定するのが有効です。

よくある質問

pingは通るのにリモートデスクトップ接続できないのはなぜですか?

pingはICMPが届いていることしか示しません。RDPにはTCP 3389(または変更後のポート)での待ち受けとファイアウォールの許可が必要です。VNCコンソールからステップ2と3を実施してください。

Windows Updateで再起動した後から接続できなくなりました。

再起動直後は数分待ってください。大きな更新では「更新プログラムを構成しています」の画面が長く続くことがあり、VNCコンソールで進行状況を見られます。その後CredSSPエラーが出るなら、手元のPCも更新してください。

JUSTGのWindows VPSにIPv6でRDP接続できますか?

できます。JUSTGのクラウドサーバーはすべてIPv6が無料です。サーバーに設定したあと、リモートデスクトップクライアントでアドレスを角かっこで囲んで入力します(例:[2001:db8::10])。

これらを確認してもリモートデスクトップ接続できない場合は、ステップ1と2の出力結果を添えてチケットを送信し、JUSTGテクニカルサポートへご相談ください。

この回答は役に立ちましたか?

関連チュートリアル

Windows PowerShell PS> Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentC…PS> Get-NetTCPConnection -LocalPort 40125 -ErrorA…PS> $port = 40125 Windowsサーバー Windows Serverのリモートデスクトップ(RDP)ポート3389を変更する方法 PowerShellでWindows ServerのRDPポートを3389から変更。レジストリPortNumber、ファイアウォール、TermService再起動と復旧方法。 8 分で読めます 7 チュートリアルを読む Windows PowerShell PS> Get-WinSystemLocalePS> Get-WinUILanguageOverridePS> Get-WinUserLanguageList Windowsサーバー Windows Serverの表示言語を日本語に変更・システムロケールとタイムゾーン設定(2016/2019/2022) Install-Languageや言語パックでWindows Serverの表示言語を変更し、システムロケール・ユーザー言語・タイムゾーンを設定します。 8 分で読めます 2 チュートリアルを読む Windows PowerShell PS> Update-HostStorageCachePS> Get-Disk | Select-Object Number, FriendlyName…PS> Get-Partition -DiskNumber 0 | Select-Object P… Windowsサーバー Windows ServerでCドライブを拡張する方法:ディスク増設後のボリューム拡張と新規ディスクの初期化 ディスク増設後にWindows ServerのCドライブを拡張し、回復パーティションの問題を解消、新しいデータディスクを初期化します。 8 分で読めます 2 チュートリアルを読む Windows PowerShell PS> Get-NetAdapterPS> Get-NetIPConfiguration -InterfaceAlias "Ether…PS> Get-NetIPInterface -InterfaceAlias "Ethernet"… Windowsサーバー Windows Serverに追加IPv4アドレスを設定し、IPv6を構成する方法 Windows ServerでGUI・PowerShell・netshを使い追加IPv4とIPv6を設定。SkipAsSource、ゲートウェイ、DNS、疎通確認まで解説。 10 分で読めます 7 チュートリアルを読む