IT/영어 공부노트

[VS Code] Remote SSH 로 VMware 가상머신과 연결하기~(+Could not establish connection 오류 해결) 본문

💻 IT

[VS Code] Remote SSH 로 VMware 가상머신과 연결하기~(+Could not establish connection 오류 해결)

소저어엉 2024. 1. 7. 20:48
반응형

 

안녕하세요 소정입니다!

gnuboard PHP 분석을 위해서 코드를 쉽게 보려고 VS Code와 연결을 하려고 하는데,

되게 막혔어서,, ㅎ 다른 분들은 좀 더 쉽게 하셨으면 해서 글 씁니당,, 연결부터 삽질하지 마시라고,, ^,6


SSH란?

SSH(Secure Shell): 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다.

기존에는 텔넷을 사용해서 원격 접속을 했다면, SSH는 텔넷의 보안 문제점을 해결하기 위한 원격 접속 쉘입니다!

 

VSCode 에서는 Remote SSH를 제공하고 있고, 이를 통해 원격으로 코드 수정 및 개발이 간편하게 가능합니다.

 


 

 

Remote SSH 연결하기 

 

우선 VSCode에서 Remote-SSH 확장팩을 다운받습니다.

 

 

설치 후 remote 탭에 들어간 후, SSH 에서 +버튼을 눌러주고, 원격 접속 command를 입력합니다.

> ssh userid@ip주소 

 

* 리눅스 상에서 userid는 whoami 명령어로 확인 가능, ip주소는 ifconfig 명령어로 확인 가능

 

SSH configuration file을 지정해줍니다.

맨 처음에 있는 C:\Users\사용자계정명\.ssh\config 선택합니다.

 

 

그리고, 원격 접속 호스트의 운영체제를 선택합니다.

저는 Vmware내의 Ubuntu와 연결을 하니 Linux를 선택~

 

  • host > 원격 접속 요청을 받는 곳 
  • Client > 요청자, 원격 접속을 시도하는 pc

 

 

엥. 

 

 

음,, 연결이 거절됐다네요?

왜그럴까 찾아봤는데 

https://cryptosalamander.tistory.com/93

 

[SSH / Ubuntu] port 22: Connection Refused 해결법

SSH - port 22: Connection Refused 해결법 처음 설치한 ubuntu 서버 혹은 ubuntu에는 ssh 연결이 되지 않는다. ssh-server가 깔려있지 않기 때문인데, 에러가 Connection Refused로 뜨다보니 다들 포트포워딩이나 방화

cryptosalamander.tistory.com

이 글을 보고 잘 해결했습니다,, 

제 Ubuntu에 ssh-server가 깔려있지 않았기에 애초에 연결을 할 수가 없었던거죠!!! ㅎㅎ;

 

 

 

sudo apt-get install openssh-server

openssh-server를 ubuntu에 설치해줍니다.

 

netstsat -ntl

위 명령어를 통해 확인해보니, 22번 포트가 잘 열려있습니다.

 

다시 vscode에서 설정을 끝내봅시다! 

 

 

다시 아까처럼 연결을 시도하니, 위 오류 부분은 넘어가고 해당 호스트에 대한 비밀번호를 입력해달라고 나옵니다.

그러면 ubuntu의 접속 비밀번호를 입력해주면~ 

 

 

잘 연결이 되었다~~


Remote SSH 비밀번호 입력 생략 설정하기(SSH Key 설정하기)

 

매번 접속할 때마다 비밀번호 치기 귀찮으니까 설정을 해봅시다! 

 

SSH 동작방식

https://tioon.tistory.com/182

SSH 동작방식입니다! 

1. 클라이언트가 서버에 연결 요청을 보내면

2. 서버가 서버의 공개키를 클라이언트에게 보내고, 

3. 클라이언트와 서버와의 상호 인증 절차가 진행됩니다. 

> 이 때 클라이언트는 서버가 믿을만한 곳인지, 서버는 클라이언트가 믿을만한 곳인지 서로 확인합니다. 

4. 확인 되었다면, 서버 호스트에 로그인이 가능합니다. 

 

여기서 3단계 과정을 자세히 살펴보면, 

 

클라이언트

클라이언트는 서버가 보내준 공개키를 .ssh 폴더 내의 known_hosts에 저장합니다.

이 후 해당 서버에 접속 요청을 할 때마다, 클라이언트는 서버로 전달받은 공개키가 로컬에 저장된 공개키(known_hosts내에)에 저장되어 있는 것과 같은지 확인을 하고, 같다면 올바른 서버로 판단하게 되는 것입니다. 

 

서버

서버는 클라이언트가 입력한 비밀번호 or 전달한 SSH Key를 통해 인증을 확인합니다.

 

현재, 우리는 비밀번호를 통해서 인증을 하고 있는데, 비밀번호는 보안 수준이 낮기도 하고 그것보다,, 매번 치는게 귀찮으니 SSH Key 인증 설정을 해봅시다~

 

SSH Key 인증 설정

 

powershell에 들어가서 ssh-keygen 명령어로 ssh key를 생성합니다. 

밑에 어디다 저장할건지 묻는데, 그냥 그대로 쭉 엔터 누르시면 됩니다. 

 

.ssh 파일에 들어가보니, 잘 다운로드가 되었습니다!

위는 비밀키, 아래는 공개키입니다. 

 

 

위의 공개키를 서버의 ./ssh폴더 아래에 authorized_keys 이름으로 저장해줍시다.

파일을 그냥 복사 붙여넣기 해도 되지만 scp 명령어를 통해서 쉽게 할 수 있습니다!

 

다시 powershell로 들어가서,

scp 공개키주소 서버주소:/home/username/.ssh/authorized_keys 라고 입력해줍니다.

공개키주소는 위의 id_rsa.pub가 저장되어 있는 곳, 서버주소는 아까 ssh연결할 때 적었죠? userid@ip주소 입니다. 

 

요렇게 하면 SSH key 설정 완료입니다!! 


참고 

https://code.visualstudio.com/docs/remote/ssh

https://cryptosalamander.tistory.com/93

https://oingdaddy.tistory.com/453

반응형