VScode에서 원격 대상 환경 또는 원격 대상 컨테이너 환경에서 개발하는 방법

소개



VScode를 사용해 원격처의 환경상에서 개발이 가능하다는 것을 들었으므로 시험해 보았다.

실행 환경



【로컬 PC】
 ・Windows 10 pro
 ・VScode 1.50.1
· · OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

【원격처의 환경】
 ・Ubuntu 18.04 LTS(GCP상)
 ・도커 19.03.13
 ・python3계

절차



1. 원격 대상 서버 설정
2. 로컬 PC 패키지 추가 및 설정 편집
3. VScode에서 원격 대상 호스트로 SSH 연결
4. VScode에서 원격 대상 컨테이너에 SSH 연결

1. 원격 대상 서버 설정



SSH 키 설정



GCP의 VM 인스턴스에 SSH 연결할 수 있도록 구성
  【GCP의 VM 인스턴스에 로컬 PC로부터 SSH 접속】 를 참고로.
※키의 생성은 이 타이밍으로 하고 있다. 공개키는 서버측에 업로드. 비밀 키는 나중에 사용할 것입니다.

파이썬 설치



※VScode로부터의 접속 후, 원격처의 환경을 사용할 수 있는지 확인하기 위해
# python3系がインストールされているか確認
$ sudo python --version
$ sudo python3 --version

# python3系がなければ、以下を実行
$ sudo apt update
$ sudo apt install -y python3
$ sudo apt install -y python3-pip

Python 패키지 설치
$ pip3 install numpy pandas beautifulsoup4
# ※pythonのパッケージは、後でチェックすることが目的なので、一応ローカルPCに入っていないパッケージを入れておく。

docker 설치 및 컨테이너 생성



docker 설치
【Docker 컨테이너 내의 Ubuntu에서는 systemctl을 사용할 수 없다】의 순서 1을 참고로.
※docker의 버전은 docker=ce=5:19.03.14~3-0~ubuntu-bionic
컨테이너 환경에 직접 SSH 연결하기 위한 키 쌍 준비
키의 생성은 최초의 순서와 같다. ※호스트와 같은 열쇠라도 좋지만, 이번은 별도 작성.

컨테이너 만들기
$ sudo docker container run -it -d -p 20022:22 --name test_con python:3

# コンテナに入ってパッケージをインストール
$ sudo docker container exec -it test_con /bin/bash

컨테이너의 명령
apt update 
apt install nano

# SSHの鍵設定
apt install -y openssh-server
mkdir /var/run/sshd
mkdir /root/.ssh/
nano /root/.ssh/authorized_keys
# ※公開鍵の中身をコピー

## pythonのパッケージインストール
pip install numpy pandas peewee

# SSHサーバ起動
/usr/sbin/sshd -D

2. 로컬 PC 패키지 추가 및 설정 편집



VScode를 시작하고 Remote - SSH 설치



로컬 PC의 .ssh/config 파일 편집





설정 파일의 내용은 이하를 참고로 편집.

.ssh/config
Host gcp
 HostNameGCPの外部IPUserSSH接続するユーザー名】
 Port 【ポート番号】 ※記載がない場合、22番ポートとなる。
 IdentityFile 【秘密鍵までのパス】

명령 프롬프트에서 SSH 연결할 수 있는지 확인



명령 프롬프트
> ssh gcp

# 恐らく、パスフレーズの入力を求められる。

※1) 비밀키의 액세스 제한이 너무 느슨하면 에러가 된다.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\Users\\秘密鍵までのパス' are too open.

※2) 리모트처의 Publickey의 액세스 권한이 느슨하면 접속할 수 없다. [700] 또는 [744]로 설정해야합니다.
Permission denied, please try again.

3. VScode에서 원격 대상 호스트로 SSH 연결



VScode에서 SSH 연결





새 창이 열리므로 대상 호스트의 OS 범주에서 Linux를 신속하게 선택합니다.

※초회의 접속시, OS카테고리 선택을 실시하지 않으면Could not establish connection to ....가 되어 접속할 수 없다.

bash에서 원격 대상 환경을 사용할 수 있는지 확인
처음 접속한 상태에서는 TERMINAL이 1.install가 되어 있기 때문에, 「+」를 클릭해 bash를 추가한다.

원격 대상 환경을 제대로 사용할 수 있는지 시험에 확인
$ python3

>>> import numpy
>>> from bs4 imoprt BeautfulSoup

실행할 수 있으면 OK!

4. VScode에서 원격 대상 컨테이너에 SSH 연결



로컬 PC의 .ssh/config 파일에 컨테이너 연결 정보 추가



설정 파일의 내용은 이하를 참고로 편집.

.ssh/config
Host gcp
 HostNameGCPの外部IPUserSSH接続するユーザー名】
 Port 【ポート番号】 ※記載がない場合、22番ポートとなる。
 IdentityFile 【秘密鍵までのパス】

Host gcp_container
 HostNameGCPの外部IPUserSSH接続するユーザー名】 ※今回は、コンテナ内にユーザー作成などしていないため [root]
 Port 【ポート番号】 ※ポートマッピングしたホスト側のポート番号(今回の場合だと20022IdentityFile 【秘密鍵までのパス】 ※上記のホストとは別の鍵

※일단 이 단계에서, 커맨드 프롬프트나 TeraTerm등으로부터의 SSH 접속을 시험한다.

3단계와 마찬가지로 VScode에서 SSH 연결을 수행하여 컨테이너 환경을 제대로 사용할 수 있는지 확인

접속 완료 후, TERMINAL보다 이하를 실행.
$ python

>>> import pandas 
>>> imoprt peewee

실행할 수 있으면 OK!

좋은 웹페이지 즐겨찾기