...
VSCode - Remote SSH
가상머신 혹은 외부 컴퓨터의 리눅스에 접속해서 파일이나 소스를 수정할 일이 있다고 하자. 보통이라면 putty 같은 ssh 툴로 접속해서 vim 에디터를 이용해서 수정할 것이다. ...하지만 불편하다.
SSH 란 무엇인가?
SSH란 Secure Shell의 약자로 원격 접속을 이용하여 터미널 환경을 사용할 수 있도록 고안된 인터넷 프로토콜이다.
SHELL로 원격 접속을 하는 것이므로 기본적으로 CLI상에서 작업을 하게 되고, 기본 포트는 22번이다.
자주 사용되는 SSH접속 프로그램으로는 Xshell, PuTTY, MobaXterm 등이 있다.
vim 에디터가 후졌다기 보다는 친숙하지않고, 친숙하지 않으니 1초만에 수정할거 5초 걸리고 그런다. 뿐만 아니라 인텔리센스가 지원이 안되고 오타를 찾기가 힘들다는 점 또한 이러한 편의 기능이 없다는 점도 한 몫 한다.
거기가 요즘은 클라우드 시대라 AWS Cloud에 리눅스 인스턴스를 생성하고 내 프로젝트를 배포했다고 하자. 그런데 급히 프로젝트 소스 코드를 수정할일이 생겼다. 인스턴스에 접속한 뒤 일일히 ls 명령어 치며 vim으로 불편하게 수정해야 될 것이다.
물론 vim이 불편하면 윈도우에서 직접 IDE를 열어 코드를 수정하고 sftp로 서버로 옮기면 방법도 있다. 그러나 이 역시 번거로운건 마찬가지이다.
그래서 오늘은 전세계 인기 코드 에디터인 vscode를 활용하여 곧바로 서버에서 코딩을 할 수 있는 환경을 구성하는 방법을 소개해 볼 것이다. 말그대로 putty같이 vscode에서 SSH로 원격 서버에 접속한뒤 서버 폴더 트리를 뒤져 프로젝트 폴더로 들어간뒤 프로젝트 디렉토리를 vscode로 열어 코딩하는 것이다. (vscode가 어디서든 실행되는 세상인데 적극 활용해보자)
그림에서 보듯이 Local Machine에서 VS Code 를 이용하여 작업하지만, 그 작업 대상은 Remote Machine으로 해당 Machine에 접속해 VS Code Server를 설치하고 해당 Machine에서 동작할 필요한 Extension 설치 후 마치 Local Machine에서 하듯이 코드 개발, 실행, 테스트 등을 수행할 수 있다는 원리이다.
Remote SSH 익스텐션 사용법
가상머신 리눅스 연결하기
1. Remote - SSH 확장팩 설치
VSCode에서 SSH 접속을 지원하는 다음 익스텐션을 설치한다.
2. SSH 연결할 호스트 입력
ssh [계정]@[ip주소]
3. SSH 연결 설장 파일을 저장할 장소 선택
4. 새창에서 remote 연결하기
5. 새창에서 서버 Platform 선택(Linux, Window, macOS)
6. SSH 호스트 계정 비밀번호 입력
7. 탐색할 호스트 디렉토리 열기
8. 다른 원격 호스트 디렉토리 열기
만일 다른 디렉토리를 탐색해서 파일 수정 할 경우가 생길 경우, ctrl + o 를 누르면 원격 디렉토리 목록이 뜨니까 고르고 엔터 누르면 된다.
SSH 연결 목록 설정하기
1. Remote - SSH 목록 확인
원격 디렉토리를 vscode에서 열게 되면 그 정보가 SSH 항목에 저장되기 떄문에, 나중에 필요하면 빠르게 재조회 할 수 있다.
2. Remote - SSH 목록 설정 파일 열기
3. config 파일 작성/수정
Host : 주소 이름 (띄어쓰기 하면 안됨)
HostName : IP/DNS
User : 계정 이름
Port : 연결할 포트 번호. 기본포트 (22번) 일 경우 생략 가능
IdentityFile : 키 파일(.pem 확장자) 위치. 상황에 따라 생략 가능
비밀번호 없이 자동 접속 설정하기
위의 과정에서 원격 디렉토리에 접속하는데 일일히 비밀번호를 쳐야 되는 불편함을 겪었을 것이다.
서버 내부에서 새로운 폴더에 접근하거나 특정 시간이 지나면 비밀번호를 다시 입력하라고 request를 받게 되게 설정 되어있기 떄문이다.
작업하는데 계속 비밀번호를 입력하기는 번거로우므로 로컬에서 접속 시 비밀번호를 입력하지 않아도 자동으로 접속되는 과정을 스킾 해보자.
1. 로컬에서 ssh-key 발급
Windows PowerShell 실행 후 다음 커맨드를 입력해 ssh-key를 발급받는다.
- ssh-keygen 입력 엔터 > 저장위치 엔터 > 비밀번호 엔터
비밀번호 없이 접속하려면 굳이 입력 안해도 된다. 즉, 입력하라고 나오는 부분에서는 다 Enter를 쳐서 넘어가면 키가 발급된다.
> ssh-keygen -t rsa -b 4096
파일 생성된 위치에 있는 C:\Users\계정\.ssh\에 비밀키, 공개키 생성된다.
- 비밀키 : id_rsa
- 공개키 : id_rsa.pub
2. 발급된 ssh-key파일을 서버에 등록
이제 다음 커맨드를 입력해 키 파일의 내용을 확인 후 복사한다.
> Get-Content .\.ssh\id_rsa.pub
그리고 리눅스 원격서버 의 .ssh 폴더 안의 authorized_keys 파일에 복사한 내용을 붙여넣기 한다. (폴더나 파일이 없다면 새로 생성)
$ cd ~
$ mkdir .ssh
$ touch .ssh/authorized_keys
$ vi .ssh/authorized_keys # 위에서 복사한 공개키 내용을 복붙 & 저장
3. VSCode config 파일에서 키파일 설정
.ssh 폴더의 config 파일을 연다.
그리고 서버 정보 아래에 IdentityFile ~/.ssh/id_rsa 를 추가해주면 된다.
파일을 저장해주고 이제 다시 SSH 원격 접속을 해주면 비밀번호 입력없이 바로 연결 됨을 확인 할 수 있다.
단, 계정마다 설정하는 것이니, 다른 계정으로 로그인하여 접속할 경우 똑같이 설정해주면 된다.
원격 서버 파일 다운받기
ftp / sftp 연결을 한건 아니지만, 제한적으로 서버에 있는 파일을 내 로컬에 저장할 수 도 있다.
원하는 파일에서 우클릭 -> 다운로드로 받을 수 있다.
AWS 인스턴스 연결하기
클라우드라고 해서 가상머신 SSH 연결과 별다를 것 없다.
위의 과정을 그대로 진행해 주면 된다.
1. EC2 SSH 클라이언트 정보를 config에 입력
2. config 파일을 저장하고 연결
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.