현재 제 컴퓨터들의 OS는 집에선 Window11버전을 쓰고 있으며 밖에선 Linux를 쓰고 있고 노트북은 Mac을 사용하고 있습니다.
저도 가끔은 카페같은곳에 가서 코딩을 하고 싶은 날이 있지만, 집에 있는 컴퓨터에 SSH세팅을 안해둬서 포기한 적이 몇번 있었습니다. 그래서 이번에 SSH를 이용하여 밖에서도 집에 있는 컴퓨터 환경을 쓰기 위해서 연결해보았습니다.
*본 포스트는 VsCode에서 SSH를 이용하여 컴퓨터를 연결해서 사용하는 방법에 대해 이야기 합니다!
#1. OpenSSH 설치하기
찾아보니 Window 환경에서 SSH 서버를 실행시켜주는 좋은 프로그램을 '이미' 지원하고 있었습니다.
바로 OpenSSH인데요.
이걸 설치하기 위해서는 다음과 같이 설정 > 앱 > 선택적 기능
들어가신 뒤, '선택적 기능 추가' 버튼을 누르시고 'OpenSSH 서버'를 찾아서 설치해주면 됩니다!
만약, "설정 > 앱"에서 '선택적 기능'이 보이지 않는 경우(Windows 11 업데이트), "설정 > 시스템 > 선택적 기능" 으로 가시면 찾으실 수 있습니다.
설치가 완료되면 'Windows PowerShell'을 찾아서 '관리자 권한'으로 실행을 시켜주시기 바랍니다.
실행이 되면 다음과 같이 창이 뜨게 됩니다.
이제 다음 명령어를 이용하여 간단히 SSH 서버를 키고 끌 수 있습니다.
- 서비스 시작 : Start-Service sshd
- 서비스 종료 : Stop-Service sshd
우선 Start-Service sshd를 실행하셔서 SSH 서버를 실행시켜 주면 서버가 열리게 됩니다.
하지만 여기서 끝이 아닙니다.
우리의 목표는 카페와 같은 외부 장소에서 집에 있는 OpenSSH서버를 사용하는것이기 때문입니다!
#2. Port 개방
기본적으로 SSH는 22번 포트(Port)를 사용하게 됩니다.
하지만, 22번 포트는 기본 포트라서 보안에 취약하다고 합니다 ㅜㅜ
따라서 다른 포트로 변경하는것을 추천드립니다.
그렇다면 몇번 포트를 사용하는것이 좋을까요??
포트는 0부터 65535의 번호를 사용할 수 있습니다만, 범위에 따라 사용할 수 있는 영역이 정해져 있습니다.
각 영역별 사용처는 다음과 같습니다.
0 ~ 1023 : well-known port번호 영역입니다. 이 영역의 port번호는 UNIX/LINUX에서 root 권한으로만 port를 열 수 있습니다. 예약영역이라고 보면 됩니다.
1024 ~ 49151번: 등록된 포트 (registered port) 이 영역은 주로 서버 소켓으로 사용하는 영역입니다.
49152 ~ 65535번 : 동적 포트(dynamic port) 이 영역은 client가 connect(2)시 또는 bind(2)없이 server socket을 생성했어 listen(2)할 경우에 자동으로 할당되는 영역입니다. server socket에서 자동할당하면, client에게 할당된 port번호를 알릴방법이 있어야하기 때문에 서버 소켓은 prot번호를 정합니다.
출처: https://www.it-note.kr/189 [IT 개발자 Note]
위의 영역을 보면 0~1023을 제외한 포트를 사용하는것이 좋아보입니다!
하지만 이미 사용중인 포트와 겹치면 안되므로 숫자가 큰 포트를 정해서 사용하시길 바랍니다.
이 포스팅에서는 32132라는 번호의 포트를 사용한다고 하고 기본 22번 포트에서 32132번 포트로 바꿔보겠습니다.
관리자로 실행한 PowerShell에 아래의 Commend를 입력해봅시다.
$ Invoke-Item C:\ProgramData\ssh\sshd_config
입력을 하게 되면 '연결 프로그램' 창이 뜨게 되며, '메모장'을 선택해줍니다.
메모장을 선택해주면 아래와 같이 나오게 됩니다.
여기서 변경해줄 부분은 다음과 같습니다.
'#Port 22' 아래에 다음과 같이 '#'을 없애고 Port 32132 라고 적어주고 저장하면 됩니다.
저장까지 완료가 되면 SSH의 기본 Port가 22에서 여러분이 적은 32132라는 포트로 변경이 되게 됩니다.
변경이 완료되면 서버를 재시작해서 바뀐 포트로 적용해줍니다.
$ restart-service -name sshd -force
#3. 방화벽 예외처리
외부에서 위에서 정한 32132 포트번호를 통해 SSH서버에 접속하게 될때 방화벽에 막힐 수 있습니다.
이를 방지하기 위해선 예외처리를 해 주어야 합니다.
'제어판 > 시스템 및 보안 > Windows Defender 방화벽 > 고급 설정(좌측에 위치) > 인바운드 규칙' 으로 들어가시면 창이 하나 뜨면서 아래와 같이 '새 규칙'이라는 항목을 보실 수 있습니다.
클릭하면 아래와 같이 '포트'로 설정해줍니다.
다음을 클릭하면 아래와 같이 창이 뜨게 되는데, '특정 로컬 포트'에 아까 바꾼 SSH 포트를 입력해줍니다.
계속 다음으로 넘어가시면 되며 마지막으로 이름과 설명을 적으면 끝입니다!
#4. 포트 포워딩(Port Forwarding)
SSH의 포트를 바꿔주고 방화벽 처리도 완료했으면, 마지막으로 포트 포워딩을 통해 외부망과 연결을 시켜주면 됩니다.
집에 있는 공유기에 맞게 공유기 환경설정으로 진입하시면 포트포워딩을 할 수 있습니다.(저는 LG...)
포트 포워딩을 설정하기 위해선 아래 사진과 같이
- 서비스 포트
- 프로토콜
- 내부 IP 주소
- 내부 포트
가 필요합니다.
- 서비스 포트 : 서비스 포트(위에선 1234)는 여러분이 밖에서 접속할때 사용할 포트를 적어주면 됩니다.
- 프로토콜 : TCP/IP로 설정해주면 됩니다.
- 내부 IP주소 : 실행창에 'ipconfig'를 치면 나오는 IP 주소를 적어주면 됩니다!
- 내부 포트 : 위에서 설정한 SSH의 포트를 입력해주면 됩니다! (예시 : 32132)
여기까지 완료가 되면 포트가 잘 열렸는지 확인해야하는데, 아래 사이트에서 간단히 포트 번호만 입력하면 확인해볼 수 있습니다.
https://www.yougetsignal.com/tools/open-ports/
자, 이렇게 되면 외부에서 집에서 사용할 SSH 서버는 완성되었습니다!!
저는 밖에서 VScode로 작업을 하기 위해 위의 작업을 했으므로 VScode로 접속이 잘 되는지 봅시다!
포트포워딩을 할때, 사진에서 볼 수 있듯이 서비스 포트를 1234로 정하였고,
공인 IP를 예시로 111.222.123.195 라고 하면 VScode ssh config에서 다음과 같이 적어주면 됩니다.
참고로 공인IP는 네이버에 '아이피 주소'라고 치면 본인의 공인 IP를 보여줍니다!!(간단)
그렇다면 잘 되는지 볼까요?
왼쪽 구석에 우리가 Host로 설정한 'Home'으로 연결되었다고 뜨네요!
당연히 폴더를 열면 집에 있는 폴더에 접근 할 수도 있습니다!!
이제 카페에서 집에 있는 컴퓨터의 환경을 그대로 사용할 수 있네요!
'자유로운 이야기' 카테고리의 다른 글
[백준] Solved.ac Gold 3 & Class 4 달성! (1) | 2023.08.02 |
---|---|
[백준] 14500번 - 테트로미노 (0) | 2023.06.21 |
Solved.ac 골드 5 달성! (0) | 2023.06.13 |
논문을 Review 한다는 것 (0) | 2023.05.04 |
티스토리 수식 첨부 방법 (0) | 2022.11.09 |