Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

本記事では、Windows 10に標準搭載されているOpenSSHサーバーを利用して、SSHトンネル経由でポートを転送する方法を詳しく解説します。SSHポートフォワーディングを活用すれば、アプリケーションのポートをローカルコンピューターからリモートサーバーへ、あるいはその逆方向へトンネリング(転送)できます。かつてSSHトンネリングはLinux/Unix環境専用のものでしたが、現在ではWindows 10やWindows Server 2016以降でも利用可能になっています。ここでは、SSHトンネル(TCPポート22)経由でRDP接続を行う具体的な事例を紹介します。

SSHトンネリングは、ファイアウォールの内側にあるリモートコンピューターへ接続する必要がある場面で特に役立ちます。たとえば、SSHポート(TCP 22)のみが開放され、その他のポートはハードウェアファイアウォールやWindowsファイアウォールによってすべてブロックされているWindows Serverがあるとします。この状態でリモートデスクトップ(RDP)クライアントから接続したい場合、通常はRDP用のポート3389が閉じられているため接続は不可能に思えます。しかし、SSHトンネルを経由したポートフォワーディング技術を使えば、この問題を回避できます。

SSHトンネリングの代表的な活用シーンは以下の3つです。

  • ローカルTCPフォワーディング: ローカル側のポートをリモートサーバーへ転送する方式
  • リモートTCPフォワーディング: リモート側のポートをローカルコンピューターへ転送する方式
  • 二重SSHトンネル: 専用のグローバルIPを持たないNAT環境下のコンピューター同士を、SSHサーバーを中継して接続する方式(OpenVPNが使えない場合の代替手段)

SSHトンネル経由でRDPアクセスする(ローカルTCPフォワーディング)

このモードでは、自分のコンピューター上にローカルTCPポートを作成し、そのポートへの接続をすべてSSHトンネル経由でリモートサーバーの指定ポートへ転送します。この例では、ローカルポート8888を作成し、そこへの接続をリモートWindowsマシンのRDPポート3389へ転送します。全体の接続イメージは以下の通りです。

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

Windows 10 1809およびWindows Server 2019以降にはOpenSSHクライアントが標準搭載されています。これを使ってSSHトンネルを作成するには、次のコマンドを実行します。

ssh -L 8888:192.168.1.90:3389 root@192.168.1.90

SSHトンネルをバックグラウンドで動作させたい場合は、-fオプションを追加してください。

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

SSHトンネル経由でリモートコンピューターのデスクトップに接続するには、RDPクライアント(mstsc.exe)から自分のコンピューターのローカルポート8888へ接続します。

127.0.0.1:8888

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

リモートコンピューターにログインすれば、安全なRDPセッションで作業できます(ファイアウォールでポート3389が閉じられたままである点に注意してください)。TCPViewなどのツールを使えば、RDP接続が実際にはローカルで動作しているSSHサーバーによって開始されていることを確認できます。

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

なお、暗号化されていないアプリケーション通信をフォワーディングした場合でも、公衆ネットワーク上では暗号化されて伝送されます。トラフィックはSSH接続の一端で暗号化され、もう一端で復号される仕組みです。

さらに、このモードではローカルネットワーク上の他のコンピューターも、直接接続が許可されていない場合(SSHもRDPも不可の場合)でもRDPサーバーへ接続できます。その際は、SSHトンネルが作成されたコンピューターのポート8888に対してRDPクライアントで接続します。

mstsc.exe /v 10.10.1.220:8888

Windows 10標準のOpenSSHを使ったSSHポートフォワーディング(トンネリング)徹底解説

リモートTCPフォワーディングでローカルPCへアクセスする

SSHトンネルにはもう一つの使い方があります。それがリモートTCPフォワーディングです。SSHトンネルを利用することで、リモートサーバーから自分のコンピューターのローカルポート、あるいはローカルネットワーク内の別のコンピューターのポートへアクセスできるようになります。たとえば、外部のサーバー(200.168.1.90)から、インターネットに公開していない社内サイトへアクセスしたいケースを考えてみましょう。リバースSSHトンネルを作成するには、次のコマンドを使用します。

ssh -R 8080:internalwww:80 user@200.168.1.90

リモートのSSHサーバーから社内サイト(internalwww)へアクセスするには、ブラウザーで次のアドレスを入力するだけです。https://localhost:8080

なお、すべてのWindowsバージョンでは、netsh interface portproxyコマンドを使用してポートフォワーディングのルールを作成することもできます。

また、SSHトンネルを組み合わせれば、多段のポートフォワーディングチェーンを構築することも可能です。SSHトンネリングの有効/無効を制御したい場合は、OpenSSHの設定ファイル(%programdata%\ssh\sshd_config)に以下のディレクティブを追加してください。

AllowStreamLocalForwarding yes
AllowTcpForwarding remote

  1. Windows 10 で SSH キーを生成する方法【標準搭載 OpenSSH を活用】

    Windows 環境で SSH キーを生成するには、かつてはサードパーティ製ツールをインストールする必要があり、手順も複雑でした。しかし、Windows 10 April 2018 Update 以降は OpenSSH クライアントが標準で搭載されるようになったため、ssh-keygen コマンドだけで簡単に SSH キーを作成できるようになりました。この記事では、事前確認からキーの生成、実際の接続までの全手順をわかりやすく解説します。 事前準備:OpenSSH クライアントの確認と有効化 まず、お使いの PC に OpenSSH がインストールされていることを確認しましょう。以前のバージョ

  2. Windows 10でSSHセキュアシェルを使う方法!おすすめクライアント5選を徹底解説

    パソコンをリモートデスクトップに接続したり、ネットワーク経由でデータを共有したりするには、セキュアシェル(SSH)が必要です。この記事では、Windows 10でSSHセキュアシェルを使用する方法について詳しく解説します。 SSHセキュアシェルは、デバイスとインターネットを含む任意のネットワーク間の通信システムと考えることができます。通信が暗号化されているため安全であり、ハッカーやスパイウェア、アドウェア、マルウェアなどから、ユーザーがどのサイトや場所にアクセスしているか、どこからデータを受信しているかといった情報を守ることができます。 Linux系OSはWindowsよりも安全性が高いと言わ