WSL2(Windows Subsystem for Linux)는 윈도우 환경에서 리눅스를 가볍게 사용할 수 있도록 설계된 기능이다. 하지만 기본적으로 WSL2는 SSH 서버를 자동으로 실행하지 않기 때문에 접속할 때마다 서버를 수동으로 실행해야 하는 번거로움이 있다.

특히, SSH 서버가 꺼져 있을 경우 접속 시 자동으로 서버를 시작하고, 암호 입력 없이 사용할 수 있도록 설정하려면 다음 단계를 따르면 된다.


WSL2에서 SSH 서버 자동 시작 설정

1. SSH 서버 설치

WSL2에 SSH 서버가 설치되어 있는지 확인한다. 설치되어 있지 않다면, 다음 명령어로 설치한다.

sudo apt update
sudo apt install openssh-server

설치 후 SSH 서버를 수동으로 실행하고 상태를 확인한다.

sudo service ssh start
sudo service ssh status

2. sudo 암호 입력 없이 SSH 명령 실행 허용

SSH 서버를 자동으로 실행하려면, sudo 명령을 사용할 때 암호를 입력하지 않도록 설정해야 한다. 이를 위해 sudoers 파일을 수정한다.

참고로 시스템의 기본 편집기를 바꾸고 싶다면 (예를 들어 nano에서 vi으로) 아래 명령어를 실행하고, 사용하고자 하는 편집기를 고르면 된다.

sudo update-alternatives --config editor
  1. visudo 명령으로 sudoers 파일을 연다.

    sudo visudo
  2. 파일 하단에 다음 줄을 추가한다. your_username을 실제 WSL 사용자 이름으로 바꾼다.

    your_username ALL=(ALL) NOPASSWD: /usr/sbin/service ssh start, /usr/sbin/service ssh status
  3. 저장하고 편집기를 종료한다.

이 설정으로 sudo service ssh startsudo service ssh status 명령어를 암호 없이 실행할 수 있게 된다.


3. SSH 서버 상태 확인 및 자동 실행 설정

SSH 서버가 이미 실행 중이라면 중복 실행을 방지하기 위해 상태를 확인한 후 실행하는 조건문을 .bashrc 파일에 추가한다.

  1. .bashrc 파일을 열어 수정한다.

    vim ~/.bashrc
  2. 다음 스크립트를 추가한다.

    # SSH 서버 상태를 확인하고, 실행 중이 아니면 시작
    if ! sudo /usr/sbin/service ssh status | grep -q "is running"; then
        sudo /usr/sbin/service ssh start > /dev/null 2>&1
    fi
    • sudo /usr/sbin/service ssh status | grep -q "is running": SSH 서버가 실행 중인지 확인한다.
    • sudo /usr/sbin/service ssh start: 서버가 실행 중이 아니면 시작한다.
    • > /dev/null 2>&1: 출력 메시지를 숨긴다.
  3. 파일을 저장하고 종료한다.


4. 설정 적용 및 테스트

설정을 적용하려면 새 터미널을 열거나 WSL을 다시 시작한다.

wsl -d my_ubuntu

이제 접속 시 SSH 서버가 자동으로 실행되며, 실행 중일 경우 불필요한 작업이 수행되지 않는다.


결론

위 설정을 통해 접속할 때마다 SSH 서버가 자동으로 실행되도록 하고, sudo 명령어에 암호를 입력하지 않아도 되도록 설정할 수 있다. 이 방법은 WSL2 환경을 효율적이고 편리하게 사용할 수 있도록 해준다.

Posted by 공돌이pooh
,