이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

원격 SSH: 팁과 요령

2019년 10월 3일, Sana Ajani 작성, @sana_ajani

이전 원격 SSH 블로그 게시물에서는 Linux 가상 머신을 설정하고 Visual Studio Code의 Remote - SSH 확장 프로그램을 사용하여 VM에 연결하는 방법을 다루었습니다. 이 블로그 게시물에서는 원격 설정을 최대한 활용하는 데 사용할 수 있는 몇 가지 팁과 요령을 소개합니다.

원격 SSH를 사용하여 연결

Visual Studio Code Remote - SSH 확장 프로그램을 사용하면 VS Code 내에서 SSH를 사용하여 원격 머신이나 VM에 연결할 수 있습니다. 아직 확장 프로그램이 설치되지 않았다면 확장 프로그램 보기(⇧⌘X (Windows, Linux Ctrl+Shift+X))에서 "remote ssh"를 검색할 수 있습니다.

Remote - SSH extension

확장 프로그램을 설치한 후 상태 표시줄의 왼쪽 하단 모서리에 표시기가 나타납니다. 이 표시기는 VS Code가 어떤 컨텍스트(로컬 또는 원격)에서 실행되고 있는지 알려줍니다. 표시기를 클릭하면 원격 확장 프로그램 명령 목록이 표시됩니다.

Remote extension commands

SSH 구성 파일

이전 원격 SSH 블로그 게시물에서는 단일 머신에만 연결했으며, 프롬프트가 표시될 때 "user@host"를 입력하여 연결했습니다. 여러 원격 서버 또는 로컬 가상 머신에 정기적으로 로그인하는 경우 모든 사용자 이름, 주소 및 추가 구성 옵션을 기억할 필요 없이 연결할 수 있는 더 나은 방법이 있습니다.

OpenSSH는 모든 다양한 SSH 연결을 저장하기 위해 구성 파일을 지원합니다. SSH 구성 파일을 사용하려면 원격 표시기를 클릭하여 원격 명령을 표시하고, **구성 파일 열기**를 선택한 다음, "Users/{yourusername}/.ssh/config" 경로를 따르는 파일을 선택합니다.

Open Configuration File command

SSH 구성 파일 예시

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host python-linux-vm
    HostName <vm address>
    User sana
    IdentityFile ~/.ssh/id_python_vm

Host node-vm
    HostName <vm address>
    User sana
    Port 5522
    IdentityFile ~/.ssh/id_node_vm

SSH 구성 파일 형식에는 지정할 수 있는 구성 옵션이 훨씬 더 많이 있습니다. 이 파일에서 자동 완성 및 색상 구분이 제공되며, IntelliSense를 위해 (⌃Space (Windows, Linux Ctrl+Space))를 누르면 구성 옵션에 대해 자세히 알아볼 수 있습니다.

위에서 사용된 옵션은 다음과 같습니다.

옵션 설명
Host 호스트 머신을 기억하기 쉬운 별칭입니다.
HostName 서버의 호스트 이름입니다 (서버의 IP 주소를 사용할 수 있습니다).
User SSH를 통해 머신에 로그인하도록 지정한 사용자입니다.
Port SSH 연결에 사용되는 포트입니다. 기본 포트는 22이지만 고유한 포트를 지정한 경우 여기에 구성할 수 있습니다.
IdentityFile 개인 키를 저장한 파일 위치입니다.

모든 호스트에 대한 정보를 추가할 수 있습니다. 구성 파일을 저장하면 원격 탐색기에 해당 호스트가 표시되며, 해당 호스트에서 열었던 모든 폴더도 표시됩니다. 각 호스트 또는 폴더 옆의 아이콘을 선택하면 새 VS Code 창(인스턴스)이 열리고 해당 호스트에 연결됩니다. 아래 스크린샷에서는 원격 머신 "python-linux-vm"에 연결되어 있으며, 원격 탐색기에는 이전에 연결했던 폴더와 원격 머신에서 전달된 포트가 표시됩니다.

Connected to python-linux-vm host machine

ProxyCommand

때로는 회사 인트라넷 또는 방화벽 뒤에 있는 원격 머신에 데스크톱 또는 노트북에서 연결해야 할 수 있습니다. 이 경우 중간 서버 또는 점프 박스를 사용할 수 있습니다. 이러한 설정은 고정된 호스트 집합에서만 SSH 연결을 허용하도록 구성된 보안 시스템 내에서 작업하는 경우 유용합니다.

점프 박스 설정을 Remote - SSH 확장 프로그램과 함께 사용하려면 ProxyCommand 구성 옵션을 사용할 수 있습니다. 이 구성은 점프 박스로 백그라운드 SSH 연결을 열고, 그런 다음 개인 IP 주소를 통해 대상에 연결합니다.

SSH 구성 파일에 ProxyCommand 구성 옵션을 다음과 같이 설정할 수 있습니다.

# Jump box with public IP address
Host jump-box
    HostName 52.179.157.97
    User sana
    IdentityFile ~/.ssh/jumpbox

# Target machine with private IP address
Host target-box
    HostName <IP address of target>
    User sana
    IdentityFile ~/.ssh/target
    ProxyCommand ssh -q -W %h:%p jump-box

ControlMaster

키 기반 인증 외에 2단계 인증, 암호 기반 인증 또는 암호가 있는 SSH 키와 같은 다른 인증 방법을 사용하여 원격 SSH 호스트에 연결하는 경우 필요한 정보를 여러 번 입력해야 할 수 있습니다.

여러 SSH 연결을 여는 대신 ControlMaster 옵션(macOS/Linux 클라이언트에서만)을 사용하여 기존 연결을 재사용하고 암호를 입력해야 하는 횟수를 줄일 수 있습니다.

이 기능을 사용하려면 SSH 구성 파일에 다음을 추가하세요.

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

오프라인 원격 머신

방화벽으로 인해 제한되거나 회사에서 VM을 잠가 인터넷에 연결할 수 없는 경우, VS Code가 원격 머신에 VS Code Server라는 구성 요소를 다운로드해야 하므로 Remote - SSH 확장 프로그램이 VM에 연결할 수 없습니다.

하지만 이제 Remote - SSH 확장 프로그램의 새로운 사용자 설정을 통해 이 문제를 해결할 수 있습니다. remote.SSH.allowLocalServerDownload 설정을 사용하도록 설정하면 확장 프로그램이 먼저 클라이언트에 VS Code Server를 설치한 다음 SCP를 통해 서버로 복사합니다.

참고: 현재 이 기능은 실험적인 기능이지만 다음 릴리스에서는 기본적으로 활성화됩니다.

Remote - SSH Nightly 확장 프로그램

새로운 업데이트와 실험적인 기능을 가능한 한 빨리 테스트하려면 Remote - SSH Nightly 확장 프로그램을 설치하세요(Remote-SSH 안정 확장 프로그램은 먼저 제거). 이는 안정 버전으로 릴리스하기 전에 새로운 기능과 설정을 실험하는 확장 프로그램의 야간 빌드입니다.

여러분의 피드백을 기다립니다.

Remote - SSH 확장 프로그램을 사용해 주셔서 감사합니다! 문제가 발생하거나 새로운 기능 또는 시나리오를 제안하고 싶으시면 GitHub 저장소에 이슈를 열어주세요. 현재 작업 중이거나 예정된 기능이 궁금하시면 원격 개발 릴리스 노트반복 계획을 살펴보세요. 또한 Docker 컨테이너 및 Linux용 Windows 하위 시스템(WSL) 내에서 작업하는 데 다른 원격 확장 프로그램을 사용하는 방법을 안내하는 소개 SSH를 통한 원격 개발 자습서를 시도해 볼 수 있습니다.

행복한 원격 코딩,

Sana Ajani, VS Code 프로그램 관리자 @sana_ajani

© . This site is unofficial and not affiliated with Microsoft.