새소식

사용팁/System Digging

[WSL] sshd 자동 시작하기

  • -

ssh 패키지를 설치하면 기본적으로 시스템 시작시 sshd를 실행하도록 구성이 되는데 runlevel의 영향을 받습니다. 하지만 WSL로 설치된 우분투에서는 cmd 창을 열어서 bash 를 실행시키고 runlevel을 보면 unknown 으로 나와 있습니다.

 

Win + R 키를 눌러서 실행 창이 있을 때 shell:startup 을 실행시키면 시작프로그램 폴더가 열립니다. 이곳에 다음 내용으로 sshd.bat 파일을 생성합니다.

 

@echo off
"C:\Windows\System32\bash.exe" -c "sudo service ssh start"

 

하지만 문제가 있습니다. 우분투에 설치시 기본 계정은 sudo를 사용하면 비밀번호를 묻습니다. 보안을 위해서 비밀번호를 사용하는게 맞는데 ssh를 사용하기 위해서는 귀찮습니다. 자동으로 사용하려고 bat 만들었는데 비밀번호에 막혀 있으면 안되겠죠.

 

service 명령을 사용할 때만 암호를 묻지 않도록 바꾸겠습니다. sudo visudo 명령으로 sudoers 파일을 열어봅시다. 맨 밑 줄에 다음 줄을 추가합니다.

더보기

visudo 편집기가 vi 가 아니고 nano 여서 당황스러운 경우

다음 명령을 실행해서 시스템 기본 편집기를 변경해줍시다. 제 경우에는 export EDITOR=vim 이 제대로 동작하지 않아서 시스템 설정을 바꿨습니다. vi 편집기를 메인으로 쓰지 않으시는 분들은 건너뛰셔도 됩니다.

 

sudo update-alternatives --config editor

 

vim-basic 이든 vim-tiny 든 해당하는 번호 골라서 써주면 됩니다. 저는 그냥 vim-basic 선택했습니다.

 

%sudo ALL=NOPASSWD: /usr/sbin/service

다른 설정보다 앞에 위치하면 동작하지 않을 수도 있습니다. sudo 실행시 해당되는 상황이 여러 설정에 영향을 받을 때 가장 마지막 설정(man sudoers에서는  the last match is used 라고 표현하고 있습니다)이 사용되기 때문입니다.

/etc/sudoers 파일은 시스템 전역 설정인데 사용자 설정 형태로 추가하고 싶은 경우는 이 내용을 /etc/sudoers.d 디렉토리 안에 작성해주면 됩니다.
명령행에서 이를 처리하려면 tee 명령을 활용합니다.
참고로 /etc/sudoers.d 디렉토리 안의 파일 중 점. 을 포함하거나 틸트문자 ~ 를 포함하는 파일은 무시됩니다. /etc/sudoers.d/README 파일을 참조하세요. 

 

이제 시작프로그램 폴더에 만들어 둔 sshd.bat 를 실행시켜봅시다. 암호를 물어보지 않고 창이 실행되고 꺼지면 정상적으로 적용된 것입니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.