VS Code와 VM 연동하기 2편 (응용: Bastion, Jump Server 가 있을 경우)

2021. 6. 29. 15:47DevTips

 

위 그림과 같은 상황을 가정해보자. 시스템을 운영하다 보면 보안상 VM2로는 바로 SSH 접속을 할 수 없고 VM1을 거쳐야만 접속해야 하는 경우가 생길 수 있다. 여기에서 VM1은 Bastion 서버 또는 Jump 서버로 불린다. 이 때 VM2에 있는 소스코드를 VS Code 로 어떻게 연동할 수 있을까?

 

먼저 VS Code 와 VM 연동에 필요한 기본적인 내용은 VS Code 와 Google Compute Engine을 연동해보자 (Remote SSH)에서 다루었으니 참고 바란다. VM1,2 는 모두 Ubuntu 20.04 임을 가정한다.

 

VM1, 2의 openSSH (Private Key) 키 준비

VM1, 2에서 생성한 Private Key 를 VS Code 가 있는 PC 에 다운로드 받는다. Private Key 인만큼 다른 곳으로 유출되지 않도록 하고, 신뢰할 수 있는 PC에 저장할 수 있도록 한다. 본 블로그에서는 vm1-key.pem, vm2-key.pem 이라는 파일명으로 C:\Users\Jongchan Park\.ssh 에 저장하였다.

 

 

SSH Config 파일 수정

아래와 같이 SSH Config 파일을 수정해준다. 생각보다 매우 간단하다.

 

입력형식

Host <VM1 호스트명 (임의입력 가능)>
    HostName <VM1 IP>
    User <VM1 의 계정명>
    IdentityFile <VM1의 private key 경로>

Host <VM2 호스트명 (임의입력 가능)>
    HostName <VM2 IP>
    User <VM2 의 계정명>
    IdentityFile <VM2의 private key 경로>
    ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p <VM1 호스트명>

 

예시

Host vm1
  HostName 165.244.244.43
  User itspjc
  IdentityFile C:\Users\Jongchan Park\.ssh\vm1-key.pem

Host vm2
  Hostname 192.168.0.10
  User itspjc
  IdentityFile C:\Users\Jongchan Park\.ssh\vm2-key.pem
  ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p vm1

 

 

접속 확인

 

해당내용을 저장하면 왼쪽 REMOTE EXPLORER 창에 vm1, vm2 접속 메뉴가 생성된다. vm2 에 접속하여 정상적으로 접속이 가능한지 확인해보자.

 

 

해당화면이 뜨면 정상적으로 VM2 과 VS Code가 연동이 된 것이다. Open Folder 를 눌러서 VS Code 사용을 시작하면 된다. 

 

마치며

해당 방법을 이용하면 vm3, vm4 ... 까지도 계속 연쇄되어 SSH 접속하는 케이스에도 얼마든지 적용 가능하다. 다만 이럴 경우 PC에 담고 있는 Private Key 가 많아지니 보안상 좋은 케이스라고는 보기 어려울 수 있겠다.