リモート ワークスペースの設定Setting up remote workspaces

このトピックでは、SSL と適切な R サービスでリモート サーバーを構成する方法について説明します。This topic explains how to configure a remote server with SSL and an appropriate R service. これにより、R Tools for Visual Studio (RTVS) はそのサーバー上のリモート ワークスペースに接続できます。This allows R Tools for Visual Studio (RTVS) to connect to a remote workspace on that server.

リモート コンピューターの要件Remote computer requirements

  • Windows 10、Windows Server 2016、または Windows Server 2012 R2。Windows 10, Windows Server 2016, or Windows Server 2012 R2. RTVS には以下も必要です。RTVS also requires
  • .NET Framework 4.6.1 以降.NET Framework 4.6.1 or greater

SSL 証明書のインストールInstall an SSL certificate

RTVS を使用するには、リモート サーバーとのすべての通信を HTTP 上で行う必要があります。また、サーバー上に SSL 証明書が必要です。RTVS requires that all communications with a remote server happens over HTTP, which requires an SSL certificate on the server. 信頼できる証明機関が署名した証明書を使用する (推奨) か、自己署名証明書を使用できます You can use either a certificate signed by a trusted certificate authority (recommended), or a self-signed certificate. (接続時に自己署名証明書のために RTVS で警告が発生します)。(A self-signed certificate causes RTVS to issue warnings when connected). いずれの場合でも、コンピューター上に証明書をインストールし、その秘密キーにアクセスできるようにする必要があります。With either one, you then need to install it on the computer and allow access to its private key.

信頼できる証明書の取得Obtaining a trusted certificate

信頼できる証明書は、証明機関から発行されます (背景については、Wikipedia の証明機関のページを参照してください)。A trusted certificate is issued by a certificate authority (see certificate authorities on Wikipedia for background). 公的な身分証明書を入手する場合と同様に、信頼できる証明書の発行には多くのプロセスが必要で、料金がかかる可能性もありますが、要求と要求元の信頼性が検証されます。Like obtaining a government identification card, issuing a trusted certificate involves more process and possible fees, but verifies the authenticity of the request and the requestor.

証明書に含める必要がある重要なフィールドは、R サーバー コンピューターの完全修飾ドメイン名です。The key field that needs to be in the certificate is the fully-qualified domain name of your R server computer. 証明機関に対して、サーバーが属するドメインに新しいサーバーを作成する権限を持っていることを証明する必要があります。The certificate authority requires proof that you are authorized to create a new server for the domain to which your server belongs.

詳細な背景については、Wikipedia の公開鍵証明書のページを参照してください。For more background, see public key certificates on Wikipedia.

Windows での SSL 証明書のインストールInstall an SSL certificate on Windows

SSL 証明書は、Windows に手動でインストールする必要があります。The SSL certificate has to be installed manually on windows. 以下の手順に従って、SSL 証明書をインストールします。Follow the instructions below to install an SSL certificate.

自己署名証明書の取得 (Windows)Obtaining a self-signed certificate (Windows)

信頼された証明書がある場合は、このセクションはスキップしてください。Skip this section if you have a trusted certificate. 信頼できる証明機関の証明書と比較すると、自己署名証明書は自分の身分証明書を作成するようなものです。Compared with a certificate from a trusted authority, a self-signed certificate is like creating an identification card for yourself. 当然ながら、信頼できる証明機関の場合よりも作業は非常に単純ですが、強力な認証がありません。つまり、攻撃者が自分の証明書で未署名の証明書を上書きして、クライアントとサーバー間のすべてのトラフィックをキャプチャすることができます。This process is, of course, much simpler than working with a trusted authority, but also lacks strong authentication, meaning that an attacker can substitute their own certificate for the unsigned certificate and capture all of the traffic between the client and the server. したがって、"そのため、自己署名証明書は、信頼できるネットワーク上で、テスト シナリオの場合に限定して使用し、運用環境には使用しないことが推奨されます"。Therefore, self-signed certificate should be used only for testing scenarios, on a trusted network, and never in production.

この理由から、自己署名証明書を使用してサーバーに接続しようとすると、RTVS からは常に次の警告が発行されます。For this reason, RTVS always issues the following warning when connecting to a server with a self-signed certificate:

自己署名証明書の警告ダイアログ

自己署名証明書を発行するには:To issue a self-signed certificate:

  1. 管理者アカウントを使用して R サーバー コンピューターにログオンします。Log on to the R server computer using an administrator account.
  2. 新しい管理者用 PowerShell コマンド プロンプトを開き、次のコマンドを発行します。その際に、"remote-machine-name" は実際のサーバー コンピューターの完全修飾ドメイン名で置き換えます。Open a new administrator PowerShell command prompt and issue the following command, replacing "remote-machine-name" with the fully qualified domain name of your server computer.

    New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "remote-machine-name"
    
  3. R サーバー コンピューター上でまだ PowerShell を実行したことがない場合は、次のコマンドを実行して、コマンドの実行を明示的に有効にします。If you have never run Powershell before on the R server computer, run the following command to enable running of commands explicitly:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    

背景については、Wikipedia の自己署名証明書のページを参照してください。For background, see self-signed certificates on Wikipedia.

証明書のインストールInstalling the certificate

リモート コンピューターに証明書をインストールするには、コマンド プロンプトから certlm.msc (証明書マネージャー) を実行します。To install the certificate on the remote computer, run certlm.msc (the certificate manager) from a command prompt. [個人] フォルダーを右クリックし、[すべてのタスク]、[インポート] コマンドの順に選択します。Right click on the Personal folder and select the All Tasks > Import command:

証明書のインポート コマンド

SSL 証明書の秘密キーを読み取るアクセス許可の付与Granting permissions to read the SSL certificate's private key

証明書をインポートしたら、以下の手順で説明するように秘密キーを読み取るアクセス許可を NETWORK SERVICE アカウントに付与します。Once the certificate is imported, grant the NETWORK SERVICE account permissions to read the private key as described in the following instructions. NETWORK_SERVICE は、R Services ブローカーの実行に使用されるアカウントです。R Services ブローカーは、サーバー コンピューターに対する受信 SSL 接続を終了するサービスです。NETWORK_SERVICE is the account used to run the R Services broker, which is the service that terminates incoming SSL connections to the server computer.

  1. 管理者のコマンド プロンプトから certlm.msc (証明書マネージャー) を実行します。Run certlm.msc (the Certificate Manager) from an administrator command prompt.
  2. [個人] の [証明書] を展開し、証明書を右クリックし、[すべてのタスク]、[秘密キーの管理] の順に選択します。Expand Personal > Certificates, right-click your certificate, and select All Tasks > Manage Private Keys.
  3. 証明書を右クリックし、[すべてのタスク] の [秘密キーの管理] コマンドを選択します。Right-click on the certificate and select the Manage Private Keys command under All Tasks
  4. 表示されるダイアログで [追加] を選択し、アカウント名として「NETWORK SERVICE」と入力します。In the dialog that appears, select Add and enter NETWORK SERVICE as the account name:

    [秘密キーの管理] ダイアログ、NETWORK_SERVICE の追加

  5. [OK] を 2 回選択してダイアログを閉じて変更を確定します。Select OK twice to dismiss the dialogs and commit your changes.

Ubuntu での SSL 証明書のインストールInstall an SSL certificate on Ubuntu

rtvs-daemon パッケージは、インストールの一部として自己署名証明書を既定でインストールします。The rtvs-daemon package will install a self-signed certificate by default as a part of the installation.

自己署名証明書の取得 (Ubuntu)Obtaining a self-signed certificate (Ubuntu)

自己署名証明書を使用する利点とリスクは、Windows の説明を参照してください。For benefits and risks of using self-signed certificate see the windows description. rtvs-daemon パッケージはインストール時に自己署名証明書を生成および構成します。The rtvs-daemon package generates and configures the self signed certificate during installation. これは、自動生成された自己署名証明書を置換する場合にのみ行う必要があります。You will need to do this only if you wish to replace the auto-generated self-signed certificate.

自己署名証明書を発行するには、次の手順を実行します。To issue a self signed certificate yourself:

  1. SSH または Linux コンピューターにログインします。SSH or login to your linux machine.
  2. ssl-cert パッケージをインストールします。Install ssl-cert package: sh sudo apt-get install ssl-cert
  3. make-ssl-cert を実行して既定の自己署名 SSL 証明書を生成します。Run make-ssl-cert to generate the default self-signed SSL certificate: sh sudo make-ssl-cert generate-default-snakeoil --force-overwrite
  4. 生成されたキーと PEM ファイルを PFX に変換します。Convert the generated key and PEM files to PFX. 生成された PFX はホーム フォルダーにあります。The generated PFX should be in your home folder: sh openssl pkcs12 -export -out ~/ssl-cert-snakeoil.pfx -inkey /etc/ssl/private/ssl-cert-snakeoil.key -in /etc/ssl/certs/ssl-cert-snakeoil.pem -password pass:SnakeOil

RTVS デーモンの構成Configuring RTVS daemon

SSL 証明書ファイルのパス (PFX へのパス) を /etc/rtvs/rtvsd.config.json で設定する必要があります。The SSL certificate file path (path to the PFX) must be set in /etc/rtvs/rtvsd.config.json. X509CertificateFileX509CertificatePassword をファイル パスとパスワードでそれぞれ更新します。Update X509CertificateFile and X509CertificatePassword with the file path and password respectively.

{
  "logging": { "logFolder": "/tmp" },
  "security": {
    "allowedGroup": "",
    "X509CertificateFile": "/etc/rtvs/ssl-cert-snakeoil.pfx",
    "X509CertificatePassword": "SnakeOil"
  },
  "startup": { "name": "rtvsd" },
  "urls": "https://0.0.0.0:5444"
}

ファイルを保存し、デーモン sudo systemctl restart rtvsd を再起動します。Save the file and restart the daemon, sudo systemctl restart rtvsd.

Windows での R Services のインストールInstall R services on Windows

R コードを実行するには、次のようにリモート コンピューターに R インタープリターがインストールされている必要があります。To run R code, the remote computer must have an R interpreter installed as follows:

  1. 次のいずれかをダウンロードしてインストールします。Download and install one of the following:

  2. R Services インストーラーを実行し、プロンプトが表示された場合は再起動します。Run the R Services installer and reboot when prompted. インストーラーは次の処理を行います。The installer does the following:

    • %PROGRAMFILES%\R Tools for Visual Studio\1.0\ にフォルダーを作成し、必要なバイナリをすべてコピーします。Create a folder in %PROGRAMFILES%\R Tools for Visual Studio\1.0\ and copy all the required binaries.
    • RHostBrokerServiceRUserProfileService をインストールし、自動起動するように構成します。Install RHostBrokerService and RUserProfileService and configure to start automatically.
    • 自動起動するように seclogon サービスを構成します。Configure the seclogon service to start automatically.
    • 既定のポート 5444 のファイアウォールの受信規則に Microsoft.R.Host.exeMicrosoft.R.Host.Broker.exe を追加します。Add Microsoft.R.Host.exe and Microsoft.R.Host.Broker.exe to the firewall inbound rules on the default port 5444.

コンピューターを再起動すると、R Services は自動的に起動します。R services start automatically when the computer reboots:

  • R Host Broker Service は、Visual Studio と、コンピューター上で R コードが実行されるプロセス間のすべての HTTPS トラフィックを処理します。R Host Broker Service handles all HTTPS traffic between Visual Studio and process where the R code runs on the computer.
  • R User Profile Service は、Windows ユーザー プロファイルの作成を処理する特権を持つコンポーネントです。R User Profile Service is a privileged component that handles Windows user profile creation. このサービスは、新しいユーザーが R サーバー コンピューターに初めてログオンしたときに呼び出されます。The service is called when a new user first logs on to the R server computer.

これらのサービスは、サービス管理コンソール (compmgmt.msc) で確認できます。You can see these services in the services management console (compmgmt.msc).

Linux での R Services のインストールInstall R Services on Linux

R コードを実行するには、次のようにリモート コンピューターに R インタープリターがインストールされている必要があります。To run R code, the remote computer must have an R interpreter installed as follows:

  1. 次のいずれかをダウンロードしてインストールします。Download and install one of the following:

  2. Ubuntu の物理コンピューター、Azure Ubuntu VM、Windows Subsystem for Linux (WSL)、Docker コンテナー (Azure Container Repository で実行されているものを含む) に関する、「Remote R Service for Linux」 (Linux 用のリモート R サービス) の手順に従います。Follow the instructions on Remote R Service for Linux, which covers physical Ubuntu computers, Azure Ubuntu VMs, Windows Subsystem for Linux (WSL), and Docker containers, including those running on Azure Container Repository.

R Services の構成Configure R services

リモート コンピューター上で R Services が実行されている場合、ユーザー アカウントを作成し、ファイアウォール規則を設定し、Azure ネットワークを構成し、SSL 証明書を構成する必要があります。With R services running on the remote computer, you also need to create user accounts, set firewall rules, configure Azure networking, and configure the SSL certificate.

  1. ユーザー アカウント: リモート コンピューターにアクセスする各ユーザーのアカウントを作成します。User accounts: Create accounts for each user that accesses the remote computer. 標準の (特権のない) ローカル ユーザー アカウントを作成するか、R サーバー コンピューターをドメインに参加させて、適切なセキュリティ グループを Users セキュリティ グループに追加することができます。You can create either standard (non-privileged) local user accounts, or you can join your R server computer to your domain and add the appropriate security groups to the Users security group.

  2. ファイアウォール規則: R Host Broker の既定では、TCP ポート 5444 をリッスンしています。Firewall rules: By default, the R Host Broker listens on TCP port 5444. そのため、受信トラフィックと送信トラフィックの両方に有効な Windows ファイアウォール規則があるようにします (送信は、パッケージのインストールなどのシナリオに必要です)。Therefore, ensure that there are Windows firewall rules enabled for both inbound and outbound traffic (outbound is needed for installing packages and similar scenarios). 組み込みの Windows ファイアウォールの場合、R Services インストーラーではこれらの規則が自動的に設定されます。The R services installer sets these rules automatically for the built-in Windows firewall. ただし、サードパーティのファイアウォールを使用している場合、R Host Broker 用のポート 5444 を手動で開きます。If you're using a third-party firewall, however, open port 5444 for R Host Broker manually.

  3. Azure の構成: リモート コンピューターが Azure 上の仮想マシンの場合、Windows ファイアウォールとは独立している Azure ネットワーク内の受信トラフィック用にもポート 5444 を開きます。Azure configuration: If your remote computer is a virtual machine on Azure, open port 5444 for incoming traffic within Azure networking as well, which is independent of the Windows firewall. 詳細については、Azure ドキュメントの「ネットワーク セキュリティ グループによるネットワーク トラフィックのフィルタリング」を参照してください。For details, see Filter network traffic with network security group in the Azure documentation.

  4. 読み込む SSL 証明書を R Host Broker に指示します。イントラネット サーバーに証明書をインストールしている場合、サーバーの完全修飾ドメイン名は NETBIOS 名と同じ可能性があります。Tell the R Host Broker which SSL certificate to load: If you're installing the certificate on an Intranet server, it is likely that the fully-qualified domain name of your server is the same as its NETBIOS name. この例では、読み込まれている既定の証明書なので、実行が必要なことはありません。In this case, there is nothing that you need to do, as this is the default certificate that is loaded.

    ただし、インターネットに接続するサーバー (Azure VM など) に証明書をインストールしている場合、サーバーの完全修飾ドメイン名 (FQDN) を使用します。これは、インターネットに接続するサーバーの FQDN が NETBIOS 名と同じではなくなるためです。However, if you are installing your certificate on an Internet-facing server (such as an Azure VM), use the fully-qualified domain name (FQDN) of your server because the FQDN of an Internet-facing server is never the same as its NETBIOS name.

    FQDN を使用するには、R Services がインストールされている場所 (既定では %PROGRAM FILES%\R Remote Service for Visual Studio\1.0) に移動し、テキスト エディターで Microsoft.R.Host.Broker.Config.json ファイルを開き、内容を次のように置き換え、CN をいずれかのサーバーの FQDN (foo.westus.cloudapp.azure.com など) に割り当てます。To use the FQDN, navigate to where R Services is installed (%PROGRAM FILES%\R Remote Service for Visual Studio\1.0 by default), open the Microsoft.R.Host.Broker.Config.json file in a text editor, and replace its contents with the following, assigning CN to whatever your server's FQDN, such as foo.westus.cloudapp.azure.com:

    {
      "server.urls": "https://0.0.0.0:5444",
      "security": {
        "X509CertificateName": "CN=your-server-fully-qualified-domain-name"
      }
    }
    

    ファイルを保存し、コンピューターを再起動して変更を適用します。Save the file and restart the computer to apply changes.

トラブルシューティングTroubleshooting

R サーバー コンピューターが応答していません。どうすればよいですか?The R server computer is not responding, what do I do?

コマンドラインからリモート コンピューターに ping を実行してみてください。ping remote-machine-nameTry to ping the remote computer from the command line: ping remote-machine-name. ping に失敗する場合、コンピューターが実行されていることを確認します。If the ping fails, make sure the computer is running.

Q.[R インタラクティブ] ウィンドウにリモート コンピューターは起動中と表示されますが、サービスが実行されないのはなぜですか?Q. The R interactive window says the remote computer is on, but why is the service not running?

考えられる理由は 3 つあります。There are three possible reasons:

  • .NET Framework 4.6.1 以降がコンピューターにインストールされていません。.NET Framework 4.6.1 or greater is not installed on the computer.
  • ポート 5444 上の受信接続と送信接続の両方について、Microsoft.R.Host.BrokerMicrosoft.R.Host のファイアウォール規則が有効ではありません。Firewall rules for Microsoft.R.Host.Broker and Microsoft.R.Host aren't enabled for both incoming and outgoing connections on port 5444.
  • CN=<remote-machine-name> の SSL 証明書がインストールされていませんでした。An SSL certificate with CN=<remote-machine-name> was not installed.

上記の変更を行った後にコンピューターを再起動します。Restart the computer after making any of the above changes. 次に、タスク マネージャー ([サービス] タブ) または services.mscRHostBrokerServiceRUserProfileService が実行されていることを確認します。Then make sure that RHostBrokerService and RUserProfileService are running through either Task Manager (services tab) or services.msc.

Q.R サーバーに接続しているときに、[R インタラクティブ] ウィンドウに "401 アクセスは拒否されました" と表示されるのはなぜですか?Q. Why does the R interactive window say "401 Access denied" while connecting to the R server?

考えられる理由は 2 つあります。There are two possible reasons:

  • 高い可能性で、NETWORK SERVICE アカウントが SSL 証明書の秘密キーへのアクセス権を持っていません。It is highly likely that the NETWORK SERVICE account does not have access to the private key of the SSL certificate. 前述の手順に従って、NETWORK SERVICE に秘密キーへのアクセス権を付与してください。Follow the earlier instructions to grant the NETWORK SERVICE access to the private key.
  • seclogon サービスが実行されていることを確認します。Make sure that seclogon service is running. services.msc を使用して、seclogon が自動起動するように構成します。Use services.msc to configure seclogon to start automatically.

Q.R サーバーに接続しているときに、[R インタラクティブ] ウィンドウに "404 見つかりません" と表示されるのはなぜですか?Q. Why does the R interactive window say "404 Not found" while connecting to the R server?

おそらく、このエラーは Visual C++ 再頒布可能ライブラリが存在しないことが原因です。This error is probably due to missing Visual C++ redistributable libraries. [R インタラクティブ] ウィンドウで、ライブラリ (DLL) の不足に関するメッセージがあるかどうかを確認します。Check the R interactive window to see if there is a message regarding missing library(DLL). 次に、VS 2015 再頒布可能ファイルがインストールされ、R もインストールされていることを確認します。Then check that the VS 2015 redistributable is installed, and that you have R installed as well.

Q.[R インタラクティブ] ウィンドウからインターネット/リソースにアクセスできません。どうすればよいですか?Q. I can't access internet/resource from the R interactive window, what do I do?

Microsoft.R.Host.BrokerMicrosoft.R.Host のファイアウォール規則で、ポート 5444 上の送信アクセスを許可します。Ensure that the firewall rules for Microsoft.R.Host.Broker and Microsoft.R.Host allow outbound access on port 5444. 変更の適用後にコンピューターを再起動します。Restart the computer after applying changes.

Q.上記の解決策をすべて試しても問題が解決しません。どうすればよいですか?Q. I've tried all these solutions, and it still doesn't work. Now what?

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp 内のログ ファイルを確認してください。Look in the log files in C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp. このフォルダーには、実行されていた R Broker Service のインスタンスごとに別のログ ファイルが含まれます。This folder contains separate log files for each instance of the R Broker Service that was run. サービスが再起動するたびに、新しいログ ファイルが作成されます。A new log file is created whenever the service restarts. 最新のログ ファイルで誤りの手がかりを確認してください。Check the most recent log file for clues about what might be going wrong.