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

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

Posted 2018. 11. 06 Updated 2021. 12. 28 Views 17594 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
번호 분류 제목 글쓴이 최근 수정일 조회 수
113 Linux Linux 루트 디렉토리 구성 TUW 2018.01.04 17464
112 PSpice PSpice Model Editor Parameters TUW 2014.04.21 17347
111 Linux Ubuntu에서 분산 컴파일러 (ICECC) 설치 및 사용하기 file TUW 2017.06.02 17338
110 일반 [WSL] Windows Subsystem for Linux - 초기 설치와 Ubuntu 배포판 설치 file TUW 2021.12.28 16515
109 Linux [사설 클라우드 구축] 네트워크 드라이브 연결 (NetDrive) file TUW 2017.06.02 16472
108 일반 Power Hold 회로 구현하기 4 file TUW 2021.12.28 16044
107 AVR [AVR 강의] 실습보드 회로도 file TUW 2017.06.02 15966
106 Nginx Nginx에서 자동 Redirection(301 Permanently moved) 설정하기 TUW 2016.06.25 15646
105 AVR [온도조절 인두기] 4. 문제점 발견 - ADC 입력에 저항분압 회로를 사용할 경우 문제점 file TUW 2017.06.02 15645
104 일반 MediaWiki 기본 문법 TUW 2014.04.23 15631
103 Linux [Ubuntu] 데이터 및 DB(MySQL)를 백업 및 복원하는 명령어 TUW 2014.04.20 15549
102 Linux [Ubuntu] 서버 복구 : 설치부터 세팅까지 Quick Guide TUW 2013.07.08 15083
101 XE [XE] XE 1.7.4.x 적용 후 SocialXE에서 '잘못된 요청입니다.' 오류 해결하기 21 file TUW 2017.06.02 14931
100 AVR [온도조절 인두기] 6. 마지막 디버깅 - LM2575 오버슈트(Overshoot) 현상 file TUW 2021.12.28 14810
99 Apache Apache에서 디렉토리별 php.ini 다르게 적용하기 (php_value, php_flag) TUW 2014.04.23 14488
98 AVR ATmega의 ADC에서 결과를 읽을 때 주의할 점 TUW 2015.05.31 14400
목록
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5