Home Lab 구축기 (2): WSL 설정
최규민
2025년 6월 11일2 분 소요
지난 포스트에서는 포트 포워딩, IP 고정, DDNS 설정에 대해 알아봤습니다.
이제 Windows Subsystem for Linux, WSL을 설정할 시간입니다.
🐧WSL 설정
WSL; Window Subsystem for Linux란?
이 튜토리얼을 읽고 계신 분들이라면 WSL에 대한 기본적인 이해를 갖추고 계실 것이라고 생각하기 때문에, 위의 다이어그램으로 퉁치겠습니다😶
WSL 설치
Powershell을 열고 아래와 같이 입력합니다(관리자 권한으로 열어야 될 수도 있음).
wsl --install이러면 Ubuntu의 최신 버전이 설치됩니다. 특정 버전을 원한다면 아래 커맨드를 입력하세요.
wsl --install -d <배포판명>앞으로 우리는 wsl 터미널, 즉 우분투 터미널을 사용할 것입니다.
윈도우키를 누르고 ubuntu를 검색하거나, 파워쉘에서 wsl을 타이핑 하여 실행하면 됩니다.
SSH 세팅
openssh-server 설치
sudo apt update
sudo apt-get install openssh-server포트 번호 설정
sudo nano /etc/ssh/sshd_config을 이용해 nano 에디터로 sshd_config 파일을 엽니다.
이후 Port를 찾아, 포트 포워딩에 설정한 내부 포트로 변경합니다.
PubkeyAuthentication yes
PasswordAuthentication no도 설정해줍시다.
PasswordAuthentication no는 비밀번호 로그인을 차단하여 공개키 인증만 허용하는 설정입니다. 포트를
외부에 열어두는 만큼, 보안을 위해 꼭 설정해주세요.
설정을 마쳤다면 ctrl+o로 저장하고, ctrl+x로 nano를 나가면 됩니다.
openssh-server 설정
openssh-server의 시작/상태확인/종료 커맨드는 아래와 같습니다.
sudo service ssh start
sudo service ssh status
sudo service ssh stopsudo service로 제어가 되지 않는다면, Ubuntu 22.10 이후 SSH가 socket-based-activation으로 바뀌었기 때문일 것입니다.
이렇게 되면 sudo systemctl 커맨드를 통해 제어해야 하는데, WSL2는 이 방식이 완전히 지원되지 않을 수 있다고 합니다. 따라서 아래 커맨드를 이용해 기존의 service 방식으로 전환해줍시다.
sudo systemctl disable --now ssh.socket
sudo rm -f /etc/systemd/system/ssh.service.d/00-socket.conf
sudo rm -f /etc/systemd/system/ssh.socket.d/addresses.conf
sudo systemctl daemon-reload
sudo systemctl enable --now ssh.service이제 다시 서버를 시작하면
sudo service ssh start
sudo service ssh status이런 식으로 나오면 성공입니다! 🥳
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-06-03 18:14:44 KST; 24min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 7190 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 7192 (sshd)
Tasks: 1 (limit: 9472)
Memory: 3.7M (peak: 20.1M)
CPU: 224ms
CGroup: /system.slice/ssh.service
└─7192 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"sudo 비밀번호 없애기
추가로 ssh 서버 관련 커맨드 사용 시, start와 stop은 sudo를 사용해야 합니다. sudo는 비밀번호를 요구하는데, 추후 불편해질 수도 있으니 이 설정을 꺼줍시다.
sudo visudo
# 파일 끝에 추가 (your_username을 실제 사용자명으로 변경)
your_username ALL=(ALL) NOPASSWD: /usr/sbin/service ssh *ssh *로 설정하면 start, stop, restart, status 모두 비밀번호 없이 실행할 수 있습니다.
ssh 서버 자동 실행 설정
딥러닝 서버(데스크탑)가 켜질 때마다 자동으로 ssh 서버가 함께 실행되도록 설정해줍시다.
원래 이 설정은 대부분의 블로그에서 windows에서 .bat 파일을 시작 프로그램 폴더에 넣어주는 것으로 설정합니다.
그러나 이 포스트에서는 더욱 간단한 방법을 소개하겠습니다.
먼저 systemd를 활성화 합니다.
sudo nano /etc/wsl.conf이후 아래와 같은 내용을 추가해줍니다.
[boot]
systemd=true
[user]
default=your_username
[interop]
appendWindowsPath = false[user]는 WSL 실행 시 기본 사용자를 지정합니다.
[interop]의 appendWindowsPath = false는 Windows의 PATH 환경변수가 WSL에 섞여 들어오는 것을 방지합니다.
이걸 안 끄면 which python 같은 명령어가 Windows 쪽 경로를 가리키는 등 예상치 못한 문제가 생길 수 있습니다.
ctrl+o를 통해 저장, ctrl+x를 통해 nano 편집기를 빠져나온 뒤, 아래 커맨드를 입력합니다.
sudo systemctl enable ssh이제 데스크탑이 부팅 될 때마다 자동으로 ssh 서버가 실행됩니다.
(점검) net-tools 설치
sudo apt update
sudo apt-get install net-toolsSSH포트가 열려 있는지 확인하기 위해 아래 커맨드를 사용합니다.
sudo netstat -tlnp | grep :{포트 번호 숫자만 입력}tcp 0 0 0.0.0.0:{포트} 0.0.0.0:* LISTEN 303/sshd: /usr/sbin
tcp6 0 0 :::{포트} :::* LISTEN 303/sshd: /usr/sbin이런 식으로 나오면 성공입니다.
다음 포스트에서는 Windows 설정을 알아보겠습니다🤗