Visual Studio でターゲットの Linux システムに接続するConnect to your target Linux system in Visual Studio

Linux サポートは Visual Studio 2017 以降で使用できます。Linux support is available in Visual Studio 2017 and later.

Linux プロジェクトのターゲットは、リモート マシンとなるように構成することも、Windows Subsystem for Linux (WSL) とすることもできます。You can configure a Linux project to target a remote machine or the Windows Subsystem for Linux (WSL). リモート マシンの場合と、Visual Studio 2017 上の WSL の場合は、リモート接続を設定する必要があります。For remote machines, and for WSL on Visual Studio 2017, you need to set up a remote connection.

リモートの Linux コンピューターに接続するConnect to a remote Linux computer

C++ の Linux プロジェクトをリモートの Linux システム (VM または物理マシン) 用にビルドするときは、Linux のソース コードがリモートの Linux コンピューターにコピーされ、Visual Studio の設定に基づいてコンパイルされます。When building a C++ Linux project for a remote Linux system (VM or physical machine), Linux source code is copied to your remote Linux computer and then compiled based on Visual Studio settings.

このリモート接続をセットアップするには、次のようにします。To set up this remote connection:

  1. 最初にプロジェクトをビルドするか、新しいエントリを手動で作成します。その場合、 [ツール]、[オプション] の順に選択し、 [クロス プラットフォーム]、[接続マネージャー] ノードの順に開き、 [追加] ボタンをクリックします。Build the project for the first time or manually create a new entry by selecting Tools > Options and then open the Cross Platform > Connection Manager node and click the Add button.

    接続マネージャー

    いずれの場合も、 [Connect to Remote System] (リモート システムへの接続) ウィンドウが表示されます。In either scenario, the Connect to Remote System window will be displayed.

    リモート システムへの接続

  2. 次の情報を入力します。Enter the following information:

    入力Entry 説明Description
    ホスト名Host Name ターゲット デバイスの名前または IP アドレスName or IP address of your target device
    ポートPort SSH サービスが実行されているポート (通常は 22)Port that the SSH service is running on, typically 22
    ユーザー名User name 認証するユーザーUser to authenticate as
    認証の種類Authentication type パスワードと秘密キーの両方がサポートされます。Password or Private Key are both supported
    パスワードPassword 入力したユーザー名のパスワードPassword for the entered user name
    秘密キー ファイルPrivate key file ssh 接続用に作成された秘密キー ファイルPrivate key file created for ssh connection
    パスフレーズPassphrase 上で選択した秘密キーで使用されるパスフレーズPassphrase used with private key selected above

    認証には、パスワードまたはキー ファイルとパスフレーズを使用することができます。You can use either a password or key file and passphrase for authentication. 多くの開発シナリオでは、パスワード認証で十分です。For many development scenarios, password authentication is sufficient. 公開/秘密キー ファイルを使う方がよい場合は、新しいものを作成するか、既存のものを再利用することができます。If you prefer to use a public/private key file, you can create a new one or reuse an existing one. 現在は、RSA および DSA キーのみがサポートされています。Currently only RSA and DSA keys are supported.

    秘密 RSA キー ファイルを作成するには、次の手順のようにします。You can create a private RSA key file by following these steps:

    1. Windows コンピューターで、ssh-keygen -t rsa を使って ssh キー ペアを作成します。On the Windows machine, create the ssh key pair with ssh-keygen -t rsa. これにより、公開キーと秘密キーが作成されます。This will create a public key and a private key. 既定では、キーは id_rsa.pub および id_rsa という名前で C:\Users\%USERNAME%\.ssh に配置されます。By default the keys are placed under C:\Users\%USERNAME%\.ssh with names id_rsa.pub and id_rsa.

    2. Windows から Linux マシンに公開キーをコピーします: scp -p C:\Users\%USERNAME%\.ssh\id_rsa.pub user@hostnameFrom Windows, copy the public key to the Linux machine: scp -p C:\Users\%USERNAME%\.ssh\id_rsa.pub user@hostname.

    3. Linux システムで、承認済みキーのリストにキーを追加します (および、ファイルに適切なアクセス許可があることを確認します): cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keysOn the Linux system, add the key to the list of authorized keys (and ensure the file has the correct permissions): cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys

  3. [接続] ボタンをクリックすると、リモート コンピューターへの接続が試行されます。Click the Connect button to attempt a connection to the remote computer.

    接続が成功すると、Visual Studio ではリモートのヘッダーを使うように IntelliSense の構成が開始されます。If the connection succeeds, Visual Studio will begin configuring IntelliSense to use the remote headers. 詳しくは、「リモート システムのヘッダーでの IntelliSense」をご覧ください。For more information, see IntelliSense for headers on remote systems.

    接続に失敗した場合は、変更する必要がある入力ボックスが赤色で示されます。If the connection fails, the entry boxes that need to be changed are outlined in red.

    接続マネージャーのエラー

    キー ファイルを認証に使う場合は、ターゲット マシンの SSH サーバーが実行され、正しく構成されていることを確認します。If you are using key files for authentication, ensure the target machine's SSH server is running and configured properly.

[ツール] > [オプション] > [クロス プラットフォーム] > [ログ] に移動し、接続に関する問題のトラブルシューティングに役立つログ記録を有効にします。Go to Tools > Options > Cross Platform > Logging to enable logging to help troubleshoot connection problems:

リモート ログ記録

ログには、接続、リモート マシンに送信されたすべてのコマンド (そのテキスト、終了コード、実行時間)、および Visual Studio からシェルへのすべての出力が含まれます。Logs include connections, all commands sent to the remote machine (their text, exit code and execution time), and all output from Visual Studio to the shell. ログ記録は、Visual Studio でのすべてのクロスプラットフォーム CMake プロジェクトまたは MSBuild ベースの Linux プロジェクトで機能します。Logging works for any cross-platform CMake project or MSBuild-based Linux project in Visual Studio.

ファイルまたは出力ウィンドウの [クロス プラットフォームのログ] ウィンドウに送られるように、出力を構成できます。You can configure the output to go to a file or to the Cross Platform Logging pane in the Output Window. MSBuild ベースの Linux プロジェクトの場合、MSBuild によってリモート マシンに発行されたコマンドは、プロセス外で出力されるため、 [出力ウィンドウ] にはルーティングされません。For MSBuild-based Linux projects, commands issued to the remote machine by MSBuild are not routed to the Output Window because they are emitted out-of-process. 代わりに、"msbuild_" というプレフィックスが付いたファイルに記録されます。Instead, they are logged to a file with the "msbuild_" prefix.

TCP ポート フォワーディングTCP Port Forwarding

Visual Studio の Linux サポートは、TCP ポート フォワーディングに依存しています。Visual Studio's Linux support has a dependency on TCP port forwarding. リモート システムで TCP ポート フォワーディングが無効になっている場合、Rsyncgdbserver が影響を受けます。Rsync and gdbserver will be affected if TCP port forwarding is disabled on your remote system.

Rsync は、MSBuild ベースの Linux プロジェクトと CMake プロジェクトの両方で使用され、IntelliSense に使用するヘッダーをリモート システムから Windows にコピーしますRsync is used by both MSBuild-based Linux projects and CMake projects to copy headers from your remote system to Windows to be used for IntelliSense. TCP ポート フォワーディングを有効にできない場合は、[ツール]、[オプション]、[クロス プラットフォーム]、[接続マネージャー]、[リモート ヘッダー IntelliSense マネージャー] の順に選択して、リモート ヘッダーの自動ダウンロードを無効にすることができます。If you're not able to enable TCP port forwarding then you can disable the automatic download of remote headers via Tools > Options > Cross Platform > Connection Manager > Remote Headers IntelliSense Manager. 接続しようとしているリモート システムで TCP ポート フォワーディングが有効になっていない場合、IntelliSense のリモート ヘッダーのダウンロードが開始されると、次のエラーが表示されます。If the remote system you are trying to connect to does not have TCP port forwarding enabled, then you will see the following error when the download of remote headers for IntelliSense begins.

ヘッダー エラー

Rsync は、ソース ファイルをリモート システムにコピーするために、Visual Studio の CMake サポートでも使用されます。Rsync is also used by Visual Studio's CMake support to copy source files to the remote system. TCP ポート フォワーディングを有効にできない場合は、リモート コピー ソース メソッドとして sftp を使用できます。If you're not able to enable TCP port forwarding then you can use sftp as your remote copy sources method . Sftp は通常、rsync よりも低速ですが、TCP ポート フォワーディングとの依存関係がありません。Sftp is generally slower than rsync but does not have a dependency on TCP port forwarding. CMake 設定エディターで、remoteCopySourcesMethod プロパティを使用してリモート コピー ソース メソッドを管理できます。You can manage your remote copy sources method with the remoteCopySourcesMethod property in the CMake Settings Editor. リモート システムで TCP ポート フォワーディングが無効になっている場合は、最初に rsync が呼び出されたときに CMake 出力ウィンドウにエラーが表示されます。If TCP port forwarding is disabled on your remote system then you will see an error in the CMake output window the first time rsync is invoked.

Rsync エラー

Gdbserver は、埋め込みデバイスでのデバッグに使用できます。Gdbserver can be used for debugging on embedded devices. TCP ポート フォワーディングを有効にできない場合は、すべてのリモート デバッグ シナリオで gdb を使用する必要があります。If you're not able to enable TCP port forwarding then you will need to use the gdb for all remote debugging scenarios. リモート システム上のプロジェクトをデバッグする場合、既定で Gdb が使用されます。Gdb is used by default when debugging projects on a remote system.

WSL に接続するConnect to WSL

Visual Studio 2017 では、この記事で前に説明したリモート Linux マシンへの接続と同じ手順を使って、WSL に接続します。In Visual Studio 2017, you connect to WSL by using the same steps as connecting to a remote Linux machine as described earlier in this article. ホスト名には localhost を使います。Use localhost for the Host Name.

Visual Studio 2019 バージョン 16.1 では、C++ を Windows Subsystem for Linux (WSL) とともに使用するためのネイティブ サポートが追加されています。Visual Studio 2019 version 16.1 added native support for using C++ with the Windows Subsystem for Linux (WSL). これは、ローカルの WSL インストールでビルドおよびデバッグするために、リモート接続を追加したり、SSH を構成したりする必要がなくなったことを意味します。This means that you no longer need to add a remote connection or configure SSH in order to build and debug on your local WSL installation. 詳細については、こちらの WSL をインストールする方法の説明をご覧ください。You can find details on how to install WSL here.

Visual Studio と連携するように WSL インストールを構成するには、次のツールがインストールされている必要があります: gcc または clang、gdb、make、rsync、および zip。To configure your WSL installation to work with Visual Studio you need the following tools installed: gcc or clang, gdb, make, rsync, and zip. 次のコマンドを使うことで、apt が使われるディストリビューションにこれらをインストールできます。これによって g++ コンパイラもインストールされます。You can install them on distros that use apt by using this command, which also installs the g++ compiler:

sudo apt install g++ gdb make rsync zip

詳細については、「Linux ワークロードのダウンロード、インストール、セットアップ」をご覧ください。For more information, see Download, install, and set up the Linux workload.

WSL 用にプロジェクトを構成するには、プロジェクトの種類に応じて、「Linux プロジェクトを構成する」または「Linux CMake プロジェクトを構成する」をご覧ください。To configure your project for WSL, see Configure a Linux project or Configure a Linux CMake project depending on which kind of project you have. WSL を使用するシンプルなコンソール アプリケーションを作成するための詳細な手順については、入門のブログ記事「C++ with Visual Studio 2019 and the Windows Subsystem for Linux (WSL)」 (C++ と Visual Studio 2019 および Windows Subsystem for Linux (WSL)) をご覧ください。To follow step-by-step instructions for creating a simple console application with WSL, check out this introductory blog post on C++ with Visual Studio 2019 and the Windows Subsystem for Linux (WSL).

関連項目See Also

Linux プロジェクトを構成するConfigure a Linux project
Linux CMake プロジェクトを構成するConfigure a Linux CMake project
Linux プロジェクトの配置、実行、デバッグDeploy, run and debug your Linux project
CMake デバッグ セッションを構成するConfigure CMake debugging sessions