원격 작업 영역 설정Setting up remote workspaces

이 항목에서는 SSL 및 적절한 R 서비스를 사용하여 원격 서버를 구성하는 방법을 설명합니다.This topic explains how to configure a remote server with SSL and an appropriate R service. 이렇게 하면 RTVS(Visual Studio용 R 도구)가 해당 서버의 원격 작업 영역에 연결할 수 있습니다.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

신뢰할 수 있는 인증서는 인증 기관에서 발급합니다. 배경에 대해서는 certificate authorities on Wikipedia(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에서 public key certificates(공개 키 인증서)를 참조하세요.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에서 self-signed certificates(자체 서명된 인증서)를 참조하세요.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는 서버 컴퓨터에 들어오는 SSL 연결을 종료하는 서비스인 R Services Broker를 실행하는 데 사용되는 계정입니다.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. 확인을 두 번 선택하여 대화 상자를 닫고 변경 내용을 커밋합니다.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. Linux 컴퓨터에 SSH 또는 로그인합니다.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.
    • Microsoft.R.Host.exeMicrosoft.R.Host.Broker.exe를 기본 포트 5444의 방화벽 인바운드 규칙에 추가합니다.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 사용자 프로필 서비스에서는 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, WSL(Linux용 Windows 하위 시스템) 및 Azure 컨테이너 리포지토리에서 실행되는 컨테이너를 비롯한 Docker 컨테이너가 설명되어 있는 Linux용 원격 R Service의 지침을 따릅니다.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). R Services 설치 관리자에서는 기본 제공 Windows 방화벽에 대해 이러한 규칙을 자동으로 설정합니다.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. R Host Broker에 로드할 SSL 인증서 알림: 인트라넷 서버에서 인증서를 설치할 경우 서버의 정규화된 도메인 이름이 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이 NETBIOS 이름과 같지 않으므로 서버의 FQDN(정규화된 도메인 이름)을 사용합니다.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 파일을 연 후 해당 콘텐츠를 다음으로 바꿔서 서버의 FQDN에 CN을 할당합니다(예: 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.

질문: R 대화형 창에 원격 컴퓨터가 켜져 있다고 표시되는데 서비스가 실행되지 않는 이유는 무엇인가요?Q. The R interactive window says the remote computer is on, but why is the service not running?

가능한 이유는 세 가지입니다.There are three possible reasons:

  • .NET Framework 4.6.1 이상이 컴퓨터에 설치되어 있지 않습니다..NET Framework 4.6.1 or greater is not installed on the computer.
  • Microsoft.R.Host.BrokerMicrosoft.R.Host에 대한 방화벽 규칙이 포트 5444의 들어오는 연결과 나가는 연결에 둘 다 사용되지 않습니다.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.msc를 통해 RHostBrokerServiceRUserProfileService가 실행 중인지 확인합니다.Then make sure that RHostBrokerService and RUserProfileService are running through either Task Manager (services tab) or services.msc.

질문: R 서버에 연결하는 동안 R 대화형 창에 “401 액세스 거부”가 표시되는 이유는 무엇인가요?Q. Why does the R interactive window say "401 Access denied" while connecting to the R server?

가능한 두 가지 이유는 다음과 같습니다.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.

질문: 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.

질문: 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. 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.