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

SSH를 통해 원격 Docker에 연결

Docker 엔진을 실행 중인 원격 컴퓨터에 연결하려면 Visual Studio Code의 Remote - SSH 확장을 사용하는 것이 좋습니다. Remote - SSHDev Containers 확장을 함께 사용할 수 있습니다. Dev Containers 설명서의 단계를 검토할 수 있습니다.

아래에서 더 자세히 알아볼 수 있는 SSH 터널링을 사용하여 원격 Docker 엔진에 직접 연결하는 것도 가능합니다.

SSH 터널링 설정

  1. SSH 인증을 위한 공개/개인 키 쌍을 얻고 구성하려면 ssh-keygen 또는 이와 유사한 도구를 사용합니다. 암호 인증은 Docker에서 지원하지 않으며 DOCKER_HOST 기반 구성에서는 사용할 수 없습니다. 이미 키 쌍이 설정되어 있다면 사용할 수 있습니다.

  2. 위에 생성된 개인 키 파일로 로컬 시스템의 ssh-agent를 구성합니다.

    • Windows (OpenSSH): 최신 버전의 Windows 10에는 OpenSSH가 기본적으로 포함되어 있습니다. Windows 서비스인 ssh-agent는 기본적으로 비활성화되어 있으며, 다시 활성화하고 자동 시작으로 설정해야 합니다. 관리자 PowerShell 프롬프트에서 Set-Service ssh-agent -StartupType "Automatic"Start-Service ssh-agent를 실행합니다. 그런 다음 ssh-add <keyfile>을 실행합니다.

    • Windows (Pageant): OpenSSH 대신 Pageant를 사용할 수 있으며, 이 경우 SSH_AUTH_SOCK=pageant 환경 변수를 설정해야 합니다. 이를 사용자 또는 시스템 환경 변수로 설정하는 것이 가장 쉽습니다.

    • Linux: ssh-agent는 기본적으로 제공됩니다. ssh-add <keyfile>을 실행합니다. Ubuntu에서 테스트되었으며, 다른 배포판에서는 결과가 다를 수 있습니다.

    • macOS: ssh-agent는 기본적으로 제공되지만 ssh-add는 로그인 간에 유지되지 않습니다. ssh-add <keyfile>을 실행합니다. VS Code를 터미널 시작 시 terminal.integrated.profiles.osx args 값으로 이 명령을 실행하도록 구성하거나 시작 스크립트를 구성하는 것이 좋습니다. 로그인할 때마다 해당 명령을 수동으로 실행할 수도 있습니다.

  3. ssh-add -l을 사용하여 에이전트에서 내 ID를 사용할 수 있는지 확인합니다. 2048 SHA256:abcdefghijk somethingsomething (RSA)와 유사한 하나 이상의 ID가 나열되어야 합니다. ID가 나열되지 않으면 연결할 수 없습니다. 또한 올바른 ID가 있어야 합니다. Docker CLI가 작동하면 Container Explorer도 작동해야 합니다. Container Explorer 창은 Docker CLI를 사용하며, 이는 ssh 명령을 사용하고 자동으로 추론된 구성을 활용합니다.

  4. Docker를 실행 중인 원격 컴퓨터를 가리키는 Docker 컨텍스트를 생성합니다. Docker 끝점으로 ssh://username@host:port를 사용합니다(여기서 "host"는 원격 컴퓨터 이름 또는 원격 컴퓨터 IP 주소로 바꿉니다). 다음 명령을 터미널 창에서 실행합니다.

    docker context create my-remote-docker-machine --docker "host=ssh://username@host:port"
    

    사용자 이름이 로컬 사용자 이름과 같더라도 항상 Docker 끝점 주소에 사용자 이름을 포함하십시오. 포트를 생략하면 기본값은 22입니다.

  5. 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))를 사용하여 Docker 컨텍스트: 사용 명령을 실행하여 원격 컴퓨터를 가리키는 Docker 컨텍스트를 활성화합니다. 이 명령은 VS Code와 Docker CLI 모두에서 원격 컴퓨터 컨텍스트를 사용하도록 합니다.

    이 명령이 없으면 Container Tools 확장을 설치해야 합니다.

  6. containers.explorerRefreshInterval 설정을 사용하여 새로 고침 속도를 기본값보다 길게 변경하는 것이 좋습니다. SSH 연결은 느리므로 이전 새로 고침이 완료되기도 전에 다시 새로 고치려고 시도할 수 있습니다. 최소 3000ms를 권장합니다.

  • Docker 끝점 문자열(ssh://username@host:port)의 "host" 부분은 전역적으로 확인할 수 있는 DNS 컴퓨터 이름 또는 IP 주소여야 합니다. Container Tools 확장은 SSH 구성 파일에 정의된 호스트 별칭을 사용할 수 없습니다.

  • 원격 컴퓨터 호스트 키가 known_hosts 파일에 이미 저장되어 있는지 확인하십시오. 이를 보장하는 가장 간단한 방법은 ssh 클라이언트 프로그램을 통해 해당 컴퓨터에 연결하는 것입니다(명령줄에서 ssh username@host:port 실행). 처음 연결 시 ssh 프로그램은 호스트 키를 표시하고 승인을 요청하며 known_hosts 파일을 자동으로 업데이트합니다.

  • Windows 10 빌드 1909 이하 버전과 함께 제공되는 ssh-keygen 유틸리티에는 새로운 SSH 데몬(예: Ubuntu 20.04 LTS 이상 버전과 함께 제공되는 데몬)과 제대로 작동하지 못하게 하는 문제가 있습니다. 해결 방법은 RSA 유형 키가 아닌 ECDSA 유형 키를 SSH 연결에 사용하는 것입니다. ECDSA SSH 키를 생성하고 다음 명령으로 SSH 에이전트에 추가할 수 있습니다.

    ssh-keygen -t ecdsa -b 521
    ssh-add id_ecdsa
    
  • Windows 10 빌드 1909 이하 버전은 Windows OS 업데이트 후 SSH가 ID에 액세스하지 못하게 하는 문제의 영향을 받습니다. 해결 방법은 시스템 구성에 더미 서비스 항목을 추가하는 것입니다. 관리자 PowerShell 창에서 다음을 실행합니다.

    New-Service sshd -BinaryPathName "C:\Windows\System32\OpenSSH\ssh.exe"
    
© . This site is unofficial and not affiliated with Microsoft.