본 글은 데스크톱(window 11)을 SSH서버로 만들어 노트북의 VSCODE를 이용하여 SSH 서버에 접속해 노트북에서 데스크톱에 접속해 코드를 돌리게 하는 것에 관련된 글입니다. 방법만 알고 싶으신 분은 아래쪽 설치부터 보시면 됩니다.!!
서론
오늘은 재미난 것을 가져왔다.
얼마 전 집의 데스크톱을 새로 맞추면서 환경도 전부 세팅하고 매우 기쁘게 코딩을 하고 있었는데,
가끔 밖에서도 공부를 하고 싶은데 데스크톱 세팅과 속도에 너무 맛들려서 그런지 내 낡은 노트북인 그램으로는 공부를 할 맛도, 시간도 부족하였다.
그래서 맨 처음에는 colab을 쓸 까 생각하다가 원래 colab 자체를 안 좋아해서..(로컬보다 버벅거리는 느낌이 너무 강하고, 환경을 계속 세팅해줘야 함) 그럼 구글 원격 데스크톱으로 할까 해서 가끔씩 원격으로 하곤 했는데, 이것 또한 너무 느리고 화면도 제대로 전송이 안 됐다...
그러다가 발견한 것이 vscode의 ssh를 이용한 접속방법!!!이다. 사실 ssh가 뭔지 모른다.
원래 이 기능은 vscode를 이용하여 서버에 연결하여 해당 서버에서 코드를 실행하는? 것이라고 한다. (암튼 맞음)
그래서 보통 연구실이나 회사의 서버 혹은 colab에도 연결해서 사용한다고 한다.
나도 맨 처음에 colab이랑 연결해 봤지만, 너무 느리고 ssh 주소?를 매번 새로 작성해줘야 하며, colab의 단점이 그대로 유지돼서 나는 내 데스크톱을 서버로 하여 노트북 <->데스크톱을 진행해 보기로 했다.
많이 찾아보면서 했지만, 대부분 다 그냥 손쉽게 하는데 나는 아예 서버가 뭔지도 SSH가 뭔지도 모르고 따라 하다 보니 시행착오를 많이 겪었고 최대한 쉽게 설명해서 작성해 보겠다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
서버가 없는데, 데스크톱도 그렇게 좋지 않다면 colab이랑 연동해서 쓰는 것도 좋을 것 같다.
이 방법은 "vscode colab 연동" 이런 식으로 검색하면 잘 나오는 것 같다.
이제 본격적인 데스크톱을 서버로 하여 노트북과 데스크톱을 이어보겠다!!!!!!!!!!!!!!!!
편의상 노트북, 데스크톱이라는 단어로 사용하겠지만 노트북=외부에서 접속할 기기 / 데스크톱 = 메인 pc(코드를 돌아가게 할)으로 생각하면 된다.
1. Remote-SSH 설치
우선 노트북의 vscode에 들어가서 `Remote-SSH`라는 extension을 설치해 준다.
2. OpenSSH 설치
데스크톱의 설정에 들어가서 좌측의 `앱 `->`선택적 기능`-> `선택적 기능 추가` ->`OpenSSH서버`를 설치한다.
다 설치되면 pc를 재부팅한다.
3. 서버 명령어
설치가 완료되면 데스크톱에서 `windows PowerShell`을 관리자 권한으로 실행시킨다.
이제 아래 명령어들을 이용하여 서버(데스크톱)를 열고 닫고 할 수 있다.
# 서버를 시작하는 명령어
Start-Service sshd
# 서버를 종료하는 명령어
Stop-Service sshd
# pc부팅시 자동으로 서버를 시작하는 명령어
Set-Service -Name sshd -StartupType 'Automatic'
# 서버의 상태를 확인하는 명령어
Get-Service sshd
4. 포트 개방
이제 데스크톱에서 포트를 변경해줘야 한다. 우리가 원하는 것은 밖에서 데스크톱에 접속하여 이용하는 것이기 때문에 외부에서 접속을 해야 한다. 기본적으로 ssh는 22번 포트를 사용하는데, 이 포트는 보안에 취약하여 다른 포트로 변경하여 서버를 사용하라고 한다. 아래 링크에서 어떤 포트를 사용해도 되는지가 나와있다.
나도 예시를 보고 따라한 것이기에 `32312`포트를 사용하기로 했다. (숫자는 위링크에서 확인된 범위에 있는 건 아무거나 상관없음) 이제 포트를 변경해 보자.
Invoke-Item C:\ProgramData\ssh\sshd_config
위 명령어를 입력하면 연결프로그램 창이 뜨고, 여기서 메모장을 클릭해 준다.
메모장에서 우선 하나만 수정해 주면 되는데, 중간에 `# Port 22`라고 적힌 부분을 찾고, 그 아래에 `Port 32312`를 적어준다.
# Port 22는 지워도 되고, 아니면 그냥 주석처리를 해놔도 된다. 중요한 건 내가 지정한 Port는 주석처리를 하면 안 된다.
그리고 저장을 하면 되는데, 나는 관리자 권한으로 실행했음에도 저장이 안 돼서 저 파일이 저장되어 있는 폴더로 들어가 권한을 수정해 줬다.
우선 `C:\ProgramData` 여기로 이동해서 `ssh`라는 폴더를 찾은 다음 폴더를 우클릭하여 `속성`으로 들어간다.
속성->보안으로 들어가서 편집을 눌러 모든 권한을 부여해 준다.(나는 수정? 이랑 뭔가가 거부되어 있었다.)
완료되고 나면 아까 포트번호를 수정한 `sshd_config`가 제대로 저장될 것이다.
이후 이전의 명령어를 이용하여 서버를 닫고 다시 연다.
5. 방화벽 예외처리
이제 방금 데스크톱에서 정한 32312 포트 번호에 대하여 방화벽 예외처리를 진행해줘야 한다. 안 그러면 SSH 서버에 접속할 때 막힐 수 도 있다.
`제어판`->`시스템 및 보안`->`Windows Defender 방화벽`->`고급 설정`->`인바운드 규칙`->`새 규칙`에 들어간다.
새 규칙을 누른 다음, `포트`를 선택하고 다음 `TCP`와 `특정 로컬 포트`를 선택하고 아까 지정한 포트번호 `32312`를 입력한다. 그리고 계속 다음으로 넘기고 맨 마지막 이름과 설명도 아무렇게나 적어주면 끝난다.
마지막에 좌측 인바운드 규칙에 방금 내가 추가한 것(이름확인)이 제대로 들어갔는지 확인할 수 있다.
6. 포트포워딩
다음으로 데스크톱에서 포트포워딩이라는 것을 통해서 외부망과 연결을 시켜줘야 한다. (만약 집에서 노트북으로 데스크톱에 연결하는 거면 이 과정을 안 해도 되지만, 외부에서 접속하려면 해줘야 한다.)
이 과정은 자신의 공유기에 따라 다르기 때문에 각자 공유기에 맞는 포트포워딩 방법을 검색하셔서
자신의 ip와 방금 설정한 포트 32312를 내부포트에 다가만 잘 적어주면 된다.
마지막으로 포트가 잘 열렸는지 확인하기 위해서는 아래 링크에서 설정한 포트번호를 입력해 보면 된다.
아래에 포트포워딩을 안 해도 되는 경우를 작성해 놨으니 확인하면 된다.
포트포워딩을 안 해도 되는 경우
우선 나는 kt 공유기를 썼는데 난감한 것이 있었다. 포트포워딩을 하기 위해서 iptime 공유기를 쓰는 사람은 192.xx 뭐를 들어가는 것처럼 kt home hub에 들어가려면 주소창에 ` 172.30.1.254`를 입력하는데 나는 안 들어가졌다. 여기에 안 들어가지면 포트포워딩이라는 것을 못하기 때문에 이리저리 검색해 봤는데, 정리해 보겠다.
우선 안 들어가진다면 자신의 데스크톱에서 cmd에 `ipconfig`를 친다.
이때 아래에 나오는 기본 게이트웨이에 `172.30.1.254`가 아니라 `121. xx~`가 나온다면
데스크톱이 공유기에 연결된 것이 아니라 모뎀에 연결된 것이다. (사실 모뎀이 뭔지 데스크톱이 뭔지 게이트웨이가 뭔지 하나도 모른다.) 내 경우는 본체가 벽면에서 나오는 랜선에 꼽혀있었고, 이 경우는 대부분 모뎀에 직통으로 연결된 것이라고 한다. 만약 공유기의 랜선이 본체에 닿는다면 공유기와 데스크톱 본체를 랜선으로 연결하고 포트포워딩을 진행해도 되지만, 사실 이렇게 모뎀으로 바로 연결된 경우는 포트포워딩을 아예 안 해도 된다고 한다.
(이유는 잘 모르지만 모뎀과 바로 연결되어 있어 공인 ip?..라는 것이 부여됐다고 한다.)
요약: 공유기가 뭐든 간에 ipconfig를 쳤을 때, 원래 공유기 설정페이지에 들어가는 ip가 아니라, 다른 게 나온다. 혹은 pc가 벽면의 랜선에 연결되어 있다.(공유기에 안연결되어 있다) 면 포트포워딩을 진행하지 않아도 된다.
7. SSH 서버 config
이제 서버를 사용해 보자.
우선 데스크톱(서버를 연)에서 이전 명령어로 서버를 열어준다.
다음으로 노트북(밖에서 사용할)에서 vscode를 열고 `ctrl+shift+p`를 누르고 `ssh`를 검색한 다음 `Remote-SSH: Open SSH Configuration File`을 눌러준다.
그리고 아래의 `. ssh/confing`를 선택해 준다. 그럼 아래와 같은 파일이 하나 열릴 것이다.(경로의 DESKTOP은 무시 현재 노트북에서 진행 중)
이제가 중요하다. 이 과정에서 너무 헤맸었다.
자 우선 준비과정을 알아보자.
7-1. username확인
데스크톱에서 cmd에 들어가 `whoami` 명령어를 치면 다음과 같이 나올 것이다.
이때 \뒤쪽에 있는 것이 내 데스크톱의 USER NAME이다. 기억해 두자.
7-2. 포트확인
우선 나처럼 데스크톱이 모뎀에 직통으로 연결되어 있어서 포트포워딩을 안 한 사람들이라면 포트번호를 우리가 지정한 32312로 생각하면 된다. 그런데 공유기와 데스크톱이 연결되어 있어서 포트포워딩을 한 사람들이라면 아마 포트포워딩을 진행할 때 `서비스 포트` 혹은 `외부포트`로 지정한 임의의 포트가 있을 것이다.(아마 `내부포트`를 32312로 하고 저 둘 중하나에 어떤 포트값을 입력했을 거임) 포트포워딩을 한 사람은 32312는 잊고, 그 포트번호를 기억하면 된다.
7-3. IP확인
마지막으로 내 데스크톱 PC에서 네이버에 들어가 내 IP를 검색하여 IP를 확인한다.
이제 아까 연 config 파일에 다음과 같이 작성해 줄 것이다.
Hostname에는 내 ip를 검색하여 찾은 ip, port는 포트포워딩을 했다면 지정한 포트, 안 했다면 맨 처음 바꾼 32312, user은 데스크톱에서 whoami를 하여 나온 뒤에꺼.
Host 원하는이름
HostName 데스크탑 ip
Port 지정한포트
User 데스크탑 이름
---------------------
Host Home
HostName 121.xx.xx
Port 32312
User desktop
8. SSH 서버 접속
이제 마지막이다. 위처럼 노트북에서 config세팅을 끝냈다면, 혹시 모르니 데스크톱의 설정이 정상적으로 반영되도록 한번 더 재부팅해준다.
이후 데스크톱에서 아까 자동으로 서버를 켜지게 했다면 건너뛰고 아니라면 서버를 다시 켜준다.
다시 노트북으로 돌아와서 vscode의 좌측아래에 >< 표시를 누른다. 다음으로 `Connect to Host`를 누른다.
그럼 방금 위의 config에서 지정한 Host 이름이 나올 것이다. 나의 경우에는 `Home`이라고 뜰 것이다.
이제 이걸 눌러주면 창이 열리는데 여기서 우리는 윈도 데스크톱에 서버를 생성하였으므로 window를 골라준다.
다음으로 비밀번호를 입력하는 창이 나온다. 나는 이것 때문에 2시간 정도를 날렸다.
찾아보니 다들 비밀번호를 입력하고 접속하면 끝! 이렇게 나와있는데 도대체 무슨 비밀번호인지를 몰랐다.
결론: 만약 본인의 서버 즉 데스크톱이 마이크로소프트 계정과 연결되어 있다면, 마이크로소프트트 계정의 비밀번호가 비밀번호. 그게 아니라 pc를 켰을 때 핀번호 말고 암호를 걸어뒀다면 그 암호가 비밀번호이다. 3번 틀릴 때마다 다시 실행해줘야 한다.
만약 윈도 계정 비번을 까먹어서 재설정했다면 반드시 컴퓨터를 껐다 켜자... 이것땜에도 바뀐 비번 적용이 안돼서 1시간이 넘게 걸렸다.
9. 확인
만약 비밀번호를 제대로 치고 오류가 안 났다면 겉보기에는 별다를 거 없는 vscode 창일 텐지만, 좌측 아래에 보면 방금 지정한 Host 이름이 적혀있고 ssh가 서버에 연결되어 있는 것을 확인할 수 있다.
그리고 평소 사용하던 대로 `Open Folder`을 누르면 내 노트북의 파일들이 아닌 서버 즉 데스크톱 pc의 파일들이 뜨는 것을 볼 수 있다.
또한 데스크톱의 환경을 그대로 사용할 수 있고 extension도 그냥 파일 실행해 보면 서버의 익스텐션을 다 가져오겠냐 이런 알림이 뜨고 그러겠다 하면 익스텐션도 한 번에 전부 설치된다.
이렇게 설정된 서버에 파일을 올리려면 그냥 노트북 파일들을 vscode에 드래그하면 되는데, 이때 바로 열지 마라.
서버에 올리는데 시간이 좀 걸리기 때문에 파일이 옮겨진 거 같아도 아직 오류가 나므로 한 5분 정도 있다가 파일을 열어보면 서버에 파일도 잘 올라가는 것을 볼 수 있다. (다운로드도 가능)
10. ssh-keygen
이건 나도 안 해본 것이라서 길게 작성하지 않을 텐데, 서버에 접속할 때 매일 비밀번호를 입력하기 귀찮은 사람들은 노트북과 데스크톱에 ssh의 키들을 쌍으로 저장해서 두 pc사이에는 비번을 입력하지 않고 드나들 수 있다고 한다.
위의 단어 `ssh-keygen`에 대해서 검색하면 많이 나오기 때문에, 그리고 나는 비번 치는 게 별로 귀찮지 않기 때문에... 나중에 사용하게 되면 작성해 보겠다.
11. 마무리 회고
우선 너무 오래 걸렸다. 그래도 이제 크롬 원격 데스크톱처럼 버벅거리거나 colab처럼 불편한 게 아니라 내 데스크톱의 gpu와 파일들 cpu 등을 마음껏 사용할 수 있게 되었다. (물론 컴퓨터를 켜놔야 하지만 서버이기 때문)
우선 이 글은 대부분 vscode ssh서버를 검색하면 회사서버, aws서버, 리눅스 서버 등에 접속하는 것만 많이 나와있고 데스크톱에서 하는 것들이 많이 나와있지 않고 과정이 생략되어 나중에 내가 다시 보기 위해 작성했다.
물론 리눅스 서버나 다른 서버에 연결하는 것도 위 과정에서 서버 생성하는 것만 빼면 그냥 서버 ip 넣어주면 되고 포트포워딩 같은 것도 서버에서 이미 설정되어 있을 테니 그냥 vscode에서 ssh연결만 하면 될 것이다.
다시 처음부터 진행하면서 작성한 거라 틀린 부분은 없을 테지만 혹시 막히는 부분이 있다면 언제든지 작성해 주면 최대한 알아보겠습니다!!
아 그리고 만약 포트포워딩을 진행하면서 한 사람들은 더 편리하게 데스크톱 pc를 WOL기능으로 원격으로 껐다 켰다 하는 것도 설정하면 밖에서 서버를 켜서 사용하는 방식으로 하면 더 좋을 것 같다!!
나도 하고 싶었는데 이건 모뎀에 직통으로 연결되어 있으면 WOL은 사용하지 못한다 해서 포기했다.
아래 분의 글을 가장 많이 참조하였습니다!
참고
'알쓸신잡' 카테고리의 다른 글
wandb 사용법 (0) | 2024.02.08 |
---|---|
Windows-Ollama 사용 (0) | 2023.12.27 |
VSCODE 폰트 바꾸기 (0) | 2023.12.08 |
hELLO 스킨 커스텀 (8) | 2023.12.07 |
Github 2FA 이중인증 등록하기 (1) | 2023.12.07 |