Skip to content
TUWLAB.com
일반

[WSL] Windows Subsystem for Linux - SSH 서버 자동 시작 설정하기

Posted 2018. 11. 06 Updated 2021. 12. 28 Views 13455 Replies 0
Atachment
첨부

WSL에서 구동되는 SSH 서버에 접속하려면 당연히 WSL에 설치한 리눅스 배포판(Ubuntu)이 구동중이어야 하는데, Windows 부팅시 당연하게도(!) 리눅스 배포판이 자동으로 시작되지 않는다. 따라서 Windows 부팅 후 최초 1회는 Bash.exe나 Ubuntu.exe를 실행해서 수동으로 SSH 서버를 시작(sudo service ssh start)해 줘야 한다.

수동으로 SSH 서버를 시작해 줘야 하는 이 절차가 귀찮다면(당연히 귀찮을 것이다..귀찮아야 한다-_-a), 간단한 스크립트를 작성해서 Windows의 시작 프로그램에 등록하고 설정을 살짝 바꿔서 SSH 서버가 부팅시 자동으로 시작되도록 할 수 있다.

 

SSH 서비스 시작 Batch 스크립트 작성

우선 다음과 같은 Batch 파일을 만들고 시작프로그램 폴더(시작→실행→"shell:startup")에 집어넣는다. (또는, 다른 곳에 저장하고 단축아이콘을 만들어도 된다.)

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

참고로, 위 루틴은 Windows 명령 프롬포트 등에서 WSL에 설치된 리눅스로 명령을 보내 실행하려고 할 때 요긴하게 사용할 수 있다. 예를 들어, 명령 프롬포트에서 "C:\Windows\System32\bash.exe" -c "touch /mnt/c/foo.txt"를 실행하면 C:\에 빈 텍스트 파일 foo.txt가 생성된다.

 

SSH 서비스를 비밀번호 없이 시작할 수 있도록 설정

작성한 sshd.bat를 실행하면 SSH 서버가 시작되긴 하는데, sudo가 포함된 관계로 비밀번호를 입력해 줘야 한다. 따라서 그냥 이대로 놔 두면 다음과 같이 부팅시 비밀번호를 묻는 시커먼 프롬포트가 매번 뜨게 되므로 반절은 Fail이다.

wsl ssh service password prompt.png
▲ sudo로 명령을 실행할 때 뜨는 비밀번호 프롬포트

이 문제는 service명령을 sudo로 실행할 때 비밀번호를 묻지 않도록 설정하여 해결할 수 있다.

Bash.exe를 실행하고 "sudo visudo"명령으로 sudoers 파일을 열어서 아래쪽 적당한 곳에 다음 구문을 추가해준다. 이렇게 하면 sudo명령으로 service명령을 실행할 때 비밀번호를 묻지 않는다.

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

이제 Windows를 부팅하면 자동으로 SSH 서버 데몬이 실행되므로 언제든지 SSH로 WSL Ubuntu에 접속할 수 있게 된다.

 

참고: "Missing privilege separation directory..." 문제 해결

일부 해외 포럼에서는 SSH 서버 시작 스크립트를 만들 때 "sudo /usr/sbin/sshd -D"를 사용하라고 소개하는데, 이렇게 하면 스크립트를 실행할 때 다음과 같은 오류가 뜨면서 SSH 서버가 제대로 시작되지 않는다.

Missing privilege separation directory /run/sshd

이는 /usr/sbin/sshd가 SSH 서버 데몬 바이너리가 맞긴 하지만, 실행 절차가 잘못되었기 때문에 발생하는 문제이다. 즉, 데몬을 실행하기 전에 PID파일을 위치시키기 위한 디렉토리를 생성해야 하는데, 이 절차를 건너 뛰고 바로 데몬을 실행하려 해서 오류가 발생한 것이다.

반면, service명령으로 SSH 서버 데몬을 실행하면 initscript가 필요한 사전 동작을 먼저 수행하고 준비가 완료되면 데몬을 구동하므로 문제가 생기지 않는다.

위 오류는 Batch 파일을 작성할 때 /var/run/sshd 디렉토리를 먼저 생성하고 서버 시작 명령를 실행하도록 함으로써 해결 가능하긴 하지만, 어쨌거나 절차상으로는 맞지 않은 임시방편에 불과하므로 본문에서 제시한 service명령(/usr/sbin/service)을 사용하도록 하자.

 

서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
193 XE Social XE 트위터 프로필사진 표시 문제 해결하기 3 file TUW 2017.06.02 205053
192 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2018.11.21 145319
191 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2018.06.13 122102
190 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 1 file TUW 2019.10.02 112558
189 Linux Windows 및 Linux 클라이언트에서 SSH 자동 로그인 설정하기 file TUW 2018.07.22 72805
188 AVR [AVR 강의] AVR 강의용 예제 프로그램 모음 file TUW 2017.06.02 63116
187 일반 영어로 나타낸 수학 용어 모음 2 file TUW 2018.01.08 62316
186 일반 [Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령 2 file TUW 2019.10.21 61527
185 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2019.04.28 60979
184 Linux Ubuntu에서 PATH 설정하기 TUW 2014.04.20 56279
183 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 50475
182 일반 [GIT] Branch 관리하기: branch, checkout, push, pull 2 TUW 2018.02.03 45496
181 Linux Windows에서 Ubuntu로 원격 데스크톱 연결하기 TUW 2014.04.20 44020
180 일반 Windows 7에서 보호된 노트북 복구파티션 삭제하기 file TUW 2017.06.02 43568
179 일반 Windows에서 포트 포워딩(Port Forwarding) 설정하기 - Netsh TUW 2018.02.03 42955
178 Linux 좀 더 '진짜같이' VirtualBox 활용하기 - 심리스 모드 외 file TUW 2017.06.02 42424
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5