Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 93
  • 2599087
DNS Powered by DNSEver.com
일반

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

Posted 2018. 11. 06 Updated 2021. 12. 28 Views 17645 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
번호 분류 제목 글쓴이 최근 수정일 조회 수
65 AVR [AVR 강의] AVR 강의자료 - 6. 직렬통신(USART) file TUW 2017.06.02 20879
64 AVR [AVR 강의] AVR 강의자료 - 3. 인터럽트 file TUW 2017.06.02 21419
63 일반 [적외선 통신] IR 리모컨 신호 분석 file TUW 2021.12.28 21556
62 일반 [Windows 7] 흔들어 전체 창 최소화(Aero Gesture) 기능 끄기 10 file TUW 2017.06.02 21967
61 Linux Ubuntu에 GITLAB 설치하기 A to Z, Apache 연동 file TUW 2017.06.02 22469
60 Linux [Ubuntu] 파티션 관리 프로그램 - GParted file TUW 2021.12.28 22545
59 Linux [Ubuntu] Bashrc Shell Prompt 커스터마이징 (.bashrc PS1) TUW 2014.04.24 22859
58 Android 삼성 스마트폰 루팅하기 file TUW 2017.06.02 22891
57 Linux Ubuntu 에서 VirtualBox로 Windows 7 설치 및 사용하기 1 file TUW 2017.06.02 23355
56 일반 [AutoHotkey] 단축키(Hotkey) 스크립트 작성과 자동 시작 등록 file TUW 2021.12.28 23414
55 XE Social XE 댓글 위젯에 SNS 전송 옵션 추가하기 6 file TUW 2017.06.02 23632
54 Linux VirtualBox에서 USB 인식 문제 해결하기 2 file TUW 2020.02.10 23679
53 Linux [vsFTP] 계정별 서로 다른 루트 디렉토리 지정하기 (chroot) file TUW 2017.06.02 23855
52 일반 [HTML] 페이지 자동 이동 - Redirect TUW 2014.03.19 23874
51 AVR [AVR 강의] AVR 강의자료 - 4. 타이머/카운터, PWM 3 file TUW 2017.06.02 23975
50 Linux Ubuntu에서 저장소(Repository) 위치 변경하기 TUW 2014.04.23 24105
목록
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5