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

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

Posted 2018. 11. 06 Updated 2021. 12. 28 Views 17643 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
번호 분류 제목 글쓴이 최근 수정일 조회 수
81 XE XE 브라우저 제목 제어기 애드온 file TUW 2017.06.02 10404
80 일반 [포토샵] 사진 가장자리 투명하게 처리하기 file TUW 2017.06.02 42452
79 Linux [vsFTP] 생성 파일 기본 권한 설정하기 file TUW 2017.06.02 17876
78 XE XE 게시판 '스킨 관리' 탭에 저장 버튼 및 목차 추가하기 file TUW 2021.12.28 11635
77 Linux Linux 시스템 종료 명령어 - shutdown과 halt TUW 2014.04.23 24599
76 Apache Apache에서 디렉토리별 php.ini 다르게 적용하기 (php_value, php_flag) TUW 2014.04.23 14492
75 일반 Windows 7에서 보호된 노트북 복구파티션 삭제하기 file TUW 2017.06.02 44140
74 일반 형광등기구 안정기 교환 file TUW 2021.12.28 11963
73 일반 Eclipse에 C/C++ 개발환경 구축하기 file TUW 2017.06.02 9925
72 Apache Apache에서 서브 도메인 및 가상 호스트 설정하기 file TUW 2017.06.02 38100
71 Linux [Ubuntu] 서버 복구 : 설치부터 세팅까지 Quick Guide TUW 2013.07.08 15089
70 Apache robots.txt를 활용하여 검색엔진 로봇 인덱싱 제한하기 TUW 2014.04.23 9463
69 PSpice PSpice MOSFET 시뮬레이션 - MbreakN/P 사용방법 file TUW 2017.06.02 46992
68 PSpice PSpice Performance Analysis file TUW 2021.12.28 11121
67 PSpice PSpice에서 Global Parameter Sweep을 활용하여 가변저항 시뮬레이션하기 file TUW 2021.12.28 46346
66 일반 PSpice 시뮬레이션 결과창에서 Search Command 사용하기 file TUW 2017.06.02 32666
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5