vscode로 remote 코딩

강한친구·2022년 3월 8일
0

Server Studies

목록 보기
9/27
post-custom-banner

원격 코딩

이름만 들어도 엄청 강해보이는 이름이다.

실상은 서버용 리눅스에서 개발하기가 힘드니, 개인, 클라이언트 사이드에서 ssh로 리눅스에 접근해서 코딩을 하겠다는 그런 의미이다.

하는 방법

vs code가 설치되어 있다는 가정하에 진행하도록 하겠다 .

  1. vscode를 실행하고 확장 프로그램으로 진입한다
    진입 한 후, remote를 검색, remote development를 설치한다. 그러면 다른 것들도 같이 설치된다

  2. f1 > remote를 치면 ssh configure라는 명령이 나온다. 이를 선택하고 c:\user\username.ssh\config
    라는 항목을 선택한다.

  3. 다음과 같이 작성한다.

Host < 사용할 이름(아무거나 ok) >
    HostName < 서버 ip 주소 > 
    Port <포트 번호 > (기본 22) 
    User <유저 이름 >

예시는 이러하다

Host anbe_homeserver
    HostName 121.456.78.900
    Port 22
    User anbe
  1. 모든 과정이 끝났으면 좌측 메뉴에서 원격탐색기로 들어가고 ssh target을 선택한다

그리고 미리 작성한 프로필 접속하면 끝! 이다.

이런식으로 접속이 된다.

Profit?

근데 이게 끝이 아니다. 지금부터 실행할 때 생겼던 문제들을 알아보도록 하자.

ssh 연결 안됨

연결이 안되는 원인이 두개가 있었는데 하나는 내 개인적인 문제였고, 하나는 코드 config 문제였다.

  1. 개인문제
    얼마전에 ftp 실습을 하면서 firewall을 따로 설치했는데, 그 과정에서 firewall이 기존의 http 포트랑 ssh 포트를 전부 막아버려서 생긴 문제였다.
firewall-cmd --permanent --zone=public --add-port=80/tcp

이런 명령어를 통해서 포트를 열어줘서 해결했다.
쓰고보니 정말 간단한데 정작 해결하는데는 좀 걸렸다...

  1. config 문제
    config를 작성할 때
    반드시 위의 적힌 순서대로 써줘야한다.

port를 마지막에 쓰니깐 안됐다...

파일 권한 오류

이제 막 세팅을 끝내고 딱 실행을 해보면, 갑자기 파일 오류가 떠버리는걸 볼 수 있다.

파일 'vscode-remote://ssh-remote+anbe_homeserver/home/anbe/c++/Hello.cpp'(NoPermissions (FileSystemError): Error: EACCES: permission denied, open '/home/anbe/c++/Hello.cpp')을(를) 쓸 수 없음

이런 장문의 오류인데
아무튼 결론은 쓸 수 없다는게 핵심이다. 왜 쓸수 없을까?
바로 권한이 없기 때문이다.

우리가 접속한건 리눅스의 사용자지, root가 아니다.

사용자/home 디렉토리에서 mkdir로 아무파일이나 만들고
파일에서 ls -l로 권한을 살펴보면

전부 root 권한인것을 알 수 있다. (아니라면 아마 잘 작동했을것이다.)

우리는 당연히 루트사용자가 아니니깐 해당파일에 접근할수가 없고 이에 해결책이
chown 명령어이다.

해당명령어를 통해 파일 혹은 디렉토리의 주인을 현 사용자로 바꿔주면 다 끝난다!

마치며

사실 이걸 하게된거는 cpp socket 코딩을 해보려다가 헤더파일떄문에 막혀서 g++로 리눅스에서 직접 코딩하려나 vi / nano가 너무 불편해서 돌고 돌아서 찾은 방법이다.

이제 본격적으로 socket 코딩을 할 준비가 끝난것같다!
'
그리고 이유는 모르겠지만 remote로 접속하면 컴파일러도 다시 설정해야하는것 같다. 그냥 하니깐 echo처리되고 말아버린다.

추가

ssh 관리

ssh 개인기 공유키, 비밀번호없이 들어가기 이런 여러 방법들이 있지만 일단은 단순하게 비밀번호로 직접입력만 수행해보았다. 이런 방법들은 찾으면 많이 나오니 관심있으면 해보는게 좋을지도?

앞서 말한 에코처리는 생각해보니

extension이 하나도 없어서 생긴 문제였다.

확장 탭에 들어가서 보면


이렇게 로컬이랑 원격ssh 확장을 모두 관리할 수 있는데
필요한것만 퍼와도 되고 아니면 저 구름표시를 눌러서 전부 내려받아도 된다.

그리고 json파일들을 설정하면 정상작동한다! 이라고 생각했는데 리눅스에 mingw 컴파일러를 깔아야 근본적으로 해결되는 문제같다. 나중에 해보자...

물론 이렇게 안하고 코드작성만 vs로 하고 저장한다음 ssh 터미널로 gcc 컴파일러를 이용해서 처리해도 되긴하는데 쓰기가 좀 불편하다

post-custom-banner

0개의 댓글