Configurer des espaces de travail distantsSet up remote workspaces

Cet article explique comment configurer un serveur distant avec SSL et un service R approprié.This article explains how to configure a remote server with SSL and an appropriate R service. Les outils R pour Visual Studio (RTVS) peuvent ainsi se connecter à un espace de travail distant sur ce serveur.This allows R Tools for Visual Studio (RTVS) to connect to a remote workspace on that server.

Spécifications de l’ordinateur distantRemote computer requirements

  • Windows 10, Windows Server 2016 ou Windows Server 2012 R2.Windows 10, Windows Server 2016, or Windows Server 2012 R2. RTVS nécessite égalementRTVS also requires
  • .NET Framework 4.6.1 ou version supérieure.NET Framework 4.6.1 or greater

Installer un certificat SSLInstall an SSL certificate

RTVS nécessite que toutes les communications avec un serveur distant s’effectuent sur HTTP, ce qui implique un certificat SSL sur le serveur.RTVS requires that all communications with a remote server happens over HTTP, which requires an SSL certificate on the server. Vous pouvez utiliser un certificat signé par une autorité de certification approuvée (recommandée) ou un certificat auto-signé.You can use either a certificate signed by a trusted certificate authority (recommended), or a self-signed certificate. (Dans le cas d’un certificat auto-signé, RTVS envoie des avertissements quand il se connecte.) Indépendamment du certificat, vous devez ensuite l’installer sur l’ordinateur et autoriser l’accès à sa clé privée.(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.

Obtenir un certificat approuvéObtain a trusted certificate

Un certificat approuvé est émis par une autorité de certification (consultez l’article sur les autorités de certification sur Wikipedia pour plus d’informations).A trusted certificate is issued by a certificate authority (see certificate authorities on Wikipedia for background). Comme pour l’obtention d’une carte d’identité émise par l’État, l’émission d’un certificat approuvé implique plusieurs processus et des frais potentiels, mais permet de vérifier l’authenticité de la demande et du demandeur.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.

Le champ de clé qui doit se trouver dans le certificat est le nom de domaine complet de votre serveur R.The key field that needs to be in the certificate is the fully-qualified domain name of your R server computer. L’autorité de certification nécessite la preuve que vous êtes autorisé à créer un serveur pour le domaine auquel il appartient.The certificate authority requires proof that you are authorized to create a new server for the domain to which your server belongs.

Pour plus d’informations, consultez l’article sur les certificats de clé publique sur Wikipedia.For more background, see public key certificates on Wikipedia.

Installer un certificat SSL sur WindowsInstall an SSL certificate on Windows

Le certificat SSL doit être installé manuellement sur Windows.The SSL certificate has to be installed manually on Windows. Suivez les instructions ci-dessous pour installer un certificat SSL.Follow the instructions below to install an SSL certificate.

Obtenir un certificat auto-signé (Windows)Obtain a self-signed certificate (Windows)

Ignorez cette section si vous disposez d’un certificat approuvé.Skip this section if you have a trusted certificate. Par rapport à un certificat émis par une autorité approuvée, un certificat auto-signé est comme si vous créiez vous-même votre carte d’identité.Compared with a certificate from a trusted authority, a self-signed certificate is like creating an identification card for yourself. Bien évidemment, ce processus est beaucoup plus simple que de passer par une autorité approuvée, mais l’authentification obtenue est en contrepartie moins forte, ce qui signifie qu’un pirate informatique peut substituer son propre certificat au certificat non signé et ainsi capturer tout le trafic entre le client et le serveur.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. Par conséquent, le certificat auto-signé doit être utilisé uniquement pour les scénarios de test, sur un réseau approuvé, et jamais en production.Therefore, self-signed certificate should be used only for testing scenarios, on a trusted network, and never in production.

Pour cette raison, RTVS émet toujours l’avertissement suivant lors de la connexion à un serveur avec un certificat auto-signé :For this reason, RTVS always issues the following warning when connecting to a server with a self-signed certificate:

Boîte de dialogue d’avertissement de certificat auto-signé

Pour émettre un certificat auto-signé :To issue a self-signed certificate:

  1. Ouvrez une session sur le serveur R à l’aide d’un compte d’administrateur.Log on to the R server computer using an administrator account.
  2. Ouvrez une nouvelle invite de commandes administrateur PowerShell et envoyez la commande suivante, en remplaçant "remote-machine-name" par le nom de domaine complet de votre serveur.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. Si vous n’avez jamais exécuté PowerShell sur le serveur R, exécutez la commande suivante pour activer l’exécution explicite de commandes :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
    

Pour plus d’informations, consultez l’article sur les certificats auto-signés sur Wikipedia.For background, see self-signed certificates on Wikipedia.

Installer le certificatInstall the certificate

Pour installer le certificat sur l’ordinateur distant, exécutez certlm.msc (le gestionnaire de certificats) à partir d’une invite de commandes.To install the certificate on the remote computer, run certlm.msc (the certificate manager) from a command prompt. Cliquez avec le bouton droit sur le dossier Personnel et sélectionnez la commande Toutes les tâches > Importer :Right-click on the Personal folder and select the All Tasks > Import command:

Commande d’importation de certificat

Octroyer des autorisations pour lire la clé privée du certificat SSLGrant permissions to read the SSL certificate's private key

Une fois le certificat importé, accordez des autorisations au compte NETWORK SERVICE pour lire la clé privée, comme indiqué dans les instructions suivantes.Once the certificate is imported, grant the NETWORK SERVICE account permissions to read the private key as described in the following instructions. NETWORK_SERVICE est le compte utilisé pour exécuter le répartiteur R Services, qui est le service qui met fin aux connexions SSL entrantes sur le serveur.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. Exécutez certlm.msc (le gestionnaire de certificats) à partir d’une invite de commandes administrateur.Run certlm.msc (the Certificate Manager) from an administrator command prompt.
  2. Développez Personnel > Certificats, cliquez avec le bouton droit sur votre certificat, puis sélectionnez Toutes les tâches > Gérer les clés privées.Expand Personal > Certificates, right-click your certificate, and select All Tasks > Manage Private Keys.
  3. Cliquez avec le bouton droit sur le certificat et sélectionnez la commande Gérer les clés privées sous Toutes les tâches.Right-click on the certificate and select the Manage Private Keys command under All Tasks.
  4. Dans la boîte de dialogue qui s’affiche, sélectionnez Ajouter et entrez NETWORK SERVICE comme nom de compte :In the dialog that appears, select Add and enter NETWORK SERVICE as the account name:

    Boîte de dialogue Gérer les clés privées, ajout de NETWORK_SERVICE

  5. Sélectionnez OK deux fois pour fermer les boîtes de dialogue et valider vos modifications.Select OK twice to dismiss the dialogs and commit your changes.

Installer un certificat SSL sur UbuntuInstall an SSL certificate on Ubuntu

Le package rtvs-daemon installe un certificat auto-signé par défaut dans le cadre de l’installation.The rtvs-daemon package will install a self-signed certificate by default as a part of the installation.

Obtenir un certificat auto-signé (Ubuntu)Obtain a self-signed certificate (Ubuntu)

Pour les avantages et les risques liés à l’utilisation d’un certificat auto-signé, consultez la description pour Windows.For benefits and risks of using self-signed certificate see the Windows description. Le package rtvs-daemon génère et configure le certificat auto-signé lors de l’installation.The rtvs-daemon package generates and configures the self-signed certificate during installation. Vous devez faire cela seulement si vous souhaitez remplacer le certificat auto-signé généré automatiquement.You will need to do this only if you wish to replace the auto-generated self-signed certificate.

Pour émettre vous-même un certificat auto-signé :To issue a self-signed certificate yourself:

  1. Connectez-vous directement ou via SSH à votre ordinateur Linux.SSH or login to your Linux machine.
  2. Installez le package ssl-cert :Install ssl-cert package: sh sudo apt-get install ssl-cert
  3. Exécutez make-ssl-cert pour générer le certificat SSL auto-signé par défaut :Run make-ssl-cert to generate the default self-signed SSL certificate: sh sudo make-ssl-cert generate-default-snakeoil --force-overwrite
  4. Convertissez la clé générée et les fichiers PEM en fichier PFX.Convert the generated key and PEM files to PFX. Le fichier PFX généré doit se trouver dans votre dossier de base :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

Configurer le démon RTVSConfigure RTVS daemon

Le chemin de fichier du certificat SSL (chemin du fichier PFX) doit être défini dans /etc/rtvs/rtvsd.config.json.The SSL certificate file path (path to the PFX) must be set in /etc/rtvs/rtvsd.config.json. Mettez à jour X509CertificateFile et X509CertificatePassword avec respectivement le chemin du fichier et le mot de passe.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"
}

Enregistrez le fichier et redémarrez le démon : sudo systemctl restart rtvsd.Save the file and restart the daemon, sudo systemctl restart rtvsd.

Installer R Services sur WindowsInstall R services on Windows

Pour exécuter le code R, l’ordinateur distant doit avoir un interpréteur R installé comme suit :To run R code, the remote computer must have an R interpreter installed as follows:

  1. Téléchargez et installez l’un des programmes suivants :Download and install one of the following:

  2. Exécutez le programme d’installation de R Services et redémarrez quand vous y êtes invité.Run the R Services installer and reboot when prompted. Le programme d’installation effectue les opérations suivantes :The installer does the following:

    • Création d’un dossier dans %PROGRAMFILES%\Outils R pour Visual Studio\1.0\ et copie de tous les fichiers binaires nécessaires.Create a folder in %PROGRAMFILES%\R Tools for Visual Studio\1.0\ and copy all the required binaries.
    • Installation de RHostBrokerService et RUserProfileService, et configuration pour un démarrage automatique.Install RHostBrokerService and RUserProfileService and configure to start automatically.
    • Configuration du service seclogon pour qu’il démarre automatiquement.Configure the seclogon service to start automatically.
    • Ajout de Microsoft.R.Host.exe et Microsoft.R.Host.Broker.exe dans les règles de trafic entrant de pare-feu sur le port 5444 par défaut.Add Microsoft.R.Host.exe and Microsoft.R.Host.Broker.exe to the firewall inbound rules on the default port 5444.

R Services démarre automatiquement au redémarrage de l’ordinateur :R services start automatically when the computer reboots:

  • Le service de répartiteur de l’hôte R gère tout le trafic HTTPS entre Visual Studio et le processus dans lequel s’exécute le code R sur l’ordinateur.R Host Broker Service handles all HTTPS traffic between Visual Studio and process where the R code runs on the computer.
  • Le service des profils utilisateur R est un composant privilégié qui gère la création des profils utilisateur Windows.R User Profile Service is a privileged component that handles Windows user profile creation. Ce service est appelé quand un nouvel utilisateur se connecte pour la première fois au serveur R.The service is called when a new user first logs on to the R server computer.

Vous pouvez voir ces services dans la console de gestion des services (compmgmt.msc).You can see these services in the services management console (compmgmt.msc).

Installer R Services sur LinuxInstall R Services on Linux

Pour exécuter le code R, l’ordinateur distant doit avoir un interpréteur R installé comme suit :To run R code, the remote computer must have an R interpreter installed as follows:

  1. Téléchargez et installez l’un des programmes suivants :Download and install one of the following:

  2. Suivez les instructions données dans la rubrique Remote R Service pour Linux, qui concerne les ordinateurs Ubuntu physiques, les machines virtuelles Ubuntu Azure, le sous-système Windows pour Linux (WSL) et les conteneurs Docker, y compris ceux exécutés sur le référentiel Azure Container.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.

Configurer R ServicesConfigure R services

Une fois que R Services est en cours d’exécution sur l’ordinateur distant, vous devez aussi créer des comptes d’utilisateur, définir des règles de pare-feu, configurer le réseau Azure et configurer le certificat 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. Comptes d’utilisateur : Créez des comptes pour chaque utilisateur qui accède à l’ordinateur distant.User accounts: Create accounts for each user that accesses the remote computer. Vous pouvez créer des comptes d’utilisateur locaux standard (sans privilège), ou vous pouvez joindre votre serveur R à votre domaine et ajouter les groupes de sécurité appropriés au groupe de sécurité 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ègles de pare-feu : Par défaut, R Host Broker écoute sur le port TCP 5444.Firewall rules: By default, the R Host Broker listens on TCP port 5444. Par conséquent, vérifiez qu’il existe des règles de pare-feu Windows activées pour le trafic entrant et sortant (le trafic sortant est nécessaire pour l’installation des packages et des scénarios similaires).Therefore, ensure that there are Windows firewall rules enabled for both inbound and outbound traffic (outbound is needed for installing packages and similar scenarios). Le programme d’installation de R Services définit ces règles automatiquement pour le pare-feu Windows intégré.The R services installer sets these rules automatically for the built-in Windows firewall. Toutefois, si vous utilisez un pare-feu tiers, ouvrez manuellement le port 5444 pour R Host Broker.If you're using a third-party firewall, however, open port 5444 for R Host Broker manually.

  3. Configuration d’Azure : Si l’ordinateur distant est une machine virtuelle sur Azure, ouvrez le port 5444 pour le trafic entrant dans le réseau Azure, qui est indépendant du pare-feu Windows.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. Pour plus d’informations, consultez Filtrer le trafic réseau avec les groupes de sécurité réseau dans la documentation Azure.For details, see Filter network traffic with network security group in the Azure documentation.

  4. Indiquer au répartiteur de l’hôte R le certificat SSL à charger : Si vous installez le certificat sur un serveur intranet, il est probable que le nom de domaine complet de votre serveur soit identique à son nom 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. Dans ce cas, vous n’avez rien à faire et le certificat par défaut est chargé.In this case, there is nothing that you need to do, as this is the default certificate that is loaded.

    Toutefois, si vous installez votre certificat sur un serveur accessible sur Internet (par exemple, une machine virtuelle Azure), utilisez le nom de domaine complet (FQDN) de votre serveur, car le nom de domaine complet d’un serveur accessible sur Internet n’est jamais le même que son nom 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.

    Pour utiliser le nom de domaine complet, accédez à l’emplacement où est installé R Services (%PROGRAM FILES%\R Remote Service for Visual Studio\1.0 par défaut), ouvrez le fichier Microsoft.R.Host.Broker.Config.json dans un éditeur de texte et remplacez son contenu par ce qui suit, en attribuant à CN le nom de domaine complet de votre serveur, par exemple 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"
      }
    }
    

    Enregistrez le fichier et redémarrez l’ordinateur pour appliquer les modifications.Save the file and restart the computer to apply changes.

Résolution des problèmesTroubleshooting

Q. L’ordinateur serveur R ne répond pas, que faire ?Q. The R server computer is not responding, what do I do?

Essayez d’envoyer un test ping à l’ordinateur distant à partir de la ligne de commande : ping remote-machine-name.Try to ping the remote computer from the command line: ping remote-machine-name. Si le test ping échoue, vérifiez que l’ordinateur est en cours d’exécution.If the ping fails, make sure the computer is running.

Q. La fenêtre interactive R indique que l’ordinateur distant est actif, mais pourquoi le service n’est-il pas en cours d’exécution ?Q. The R interactive window says the remote computer is on, but why is the service not running?

Il existe trois raisons possibles :There are three possible reasons:

  • .NET Framework 4.6.1 ou version supérieure n’est pas installé sur l’ordinateur..NET Framework 4.6.1 or greater is not installed on the computer.
  • Les règles de pare-feu pour Microsoft.R.Host.Broker et Microsoft.R.Host ne sont pas activées pour les connexions entrantes et sortantes sur le port 5444.Firewall rules for Microsoft.R.Host.Broker and Microsoft.R.Host aren't enabled for both incoming and outgoing connections on port 5444.
  • Un certificat SSL avec CN=<remote-machine-name> n’est pas installé.An SSL certificate with CN=<remote-machine-name> was not installed.

Redémarrez l’ordinateur après avoir apporté l’une des modifications ci-dessus.Restart the computer after making any of the above changes. Vérifiez que RHostBrokerService et RUserProfileService sont en cours d’exécution par le biais du Gestionnaire des tâches (onglet Services) ou services.msc.Then make sure that RHostBrokerService and RUserProfileService are running through either Task Manager (services tab) or services.msc.

Q. Pourquoi la fenêtre interactive R indique « 401 Accès refusé » lors de la connexion au serveur R ?Q. Why does the R interactive window say "401 Access denied" while connecting to the R server?

Deux raisons possibles :There are two possible reasons:

  • Il est très probable que le compte NETWORK SERVICE n’ait pas accès à la clé privée du certificat SSL.It is highly likely that the NETWORK SERVICE account does not have access to the private key of the SSL certificate. Suivez les instructions précédentes pour accorder au compte NETWORK SERVICE l’accès à la clé privée.Follow the earlier instructions to grant the NETWORK SERVICE access to the private key.
  • Vérifiez que le service seclogon est en cours d’exécution.Make sure that seclogon service is running. Utilisez services.msc pour configurer seclogon pour qu’il démarre automatiquement.Use services.msc to configure seclogon to start automatically.

Q. Pourquoi la fenêtre interactive R indique « 404 Introuvable » lors de la connexion au serveur R ?Q. Why does the R interactive window say "404 Not found" while connecting to the R server?

Cette erreur est probablement due à l’absence de bibliothèques redistribuables Visual C++.This error is probably due to missing Visual C++ redistributable libraries. Consultez la fenêtre interactive R pour voir s’il existe un message concernant une bibliothèque (DLL) manquante.Check the R interactive window to see if there is a message regarding missing library (DLL). Ensuite, vérifiez que le package redistribuable VS 2015 est installé, ainsi que R.Then check that the VS 2015 redistributable is installed, and that you have R installed as well.

Q. Je ne peux pas accéder à Internet/une ressource à partir de la fenêtre interactive R, que dois-je faire ?Q. I can't access internet/resource from the R interactive window, what do I do?

Vérifiez que les règles de pare-feu pour Microsoft.R.Host.Broker et Microsoft.R.Host autorisent l’accès sortant sur le port 5444.Ensure that the firewall rules for Microsoft.R.Host.Broker and Microsoft.R.Host allow outbound access on port 5444. Redémarrez l’ordinateur après avoir appliqué les modifications.Restart the computer after applying changes.

Q. J’ai essayé toutes ces solutions et le problème n’est pas résolu. Que puis-je faire ?Q. I've tried all these solutions, and it still doesn't work. Now what?

Recherchez dans les fichiers journaux dans C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp. Ce dossier contient des fichiers journaux distincts pour chaque instance du service de répartiteur R exécuté.Look in the log files in C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp. This folder contains separate log files for each instance of the R Broker Service that was run. Un autre fichier journal est créé chaque fois que le service redémarre.A new log file is created whenever the service restarts. Examinez le fichier journal le plus récent pour obtenir des indices sur ce qui pourrait ne pas fonctionner.Check the most recent log file for clues about what might be going wrong.