[리눅스/윈도] WSL sshd 등록하기

2023. 5. 6. 19:08리눅스 실제 사용 팁/WSL

작성일 : 2021. 8. 26.

 

WSL 에 맛들인 사람 중에는 cmd.exe 터미널 보다 xshell 이나 token2shell 같이 탭 또는 다중 창을 띄워놓고 작업하는 것을 좋아하는 부류도 있을 것이다. 내가 그렇다는 소리인데...,

 

앞서 언급한 프로그램들은 SSH 클라이언트이다. 즉, 이것들을 사용하려면 WSL 에서 sshd (SSH 서비스 데몬) 이 실행되고 있어야 한다.

 

openssh-server, openssh-client 패키지를 설치하고 ssh-keygen 으로 생성한 공개키를 .ssh/known_hosts 에 추가해서 localhost 로 접속했을 때 무리없이 접속할 수 있도록 해야 한다.

 

생각만으로는 간단해 보이지만, WSL 에서 sshd 를 실행해놓아도 윈도에서 로그아웃하는 순간 해당 서비스는 끊어진다.

따라서 로그인 할 때마다 sudo service sshd start 를 실행해야만 한다. (아직까지는 이런 노가다를 해야 한다.)

 

---

순서)

1] /etc/ssh/sshd_config

2] /etc/sudoers

3] sshd 실행 배치파일 만들기

4] 윈도 스케줄러에 3번 결과물 연결하기

---

 

설정)

1] /etc/ssh/sshd_config 에 다음을 추가한다 (주석처리 되어 있으면 해제)

# (평문암호 방식) 패스워드로 인증할 수 있도록 설정한다.
PasswordAuthentication yes
# AllowUsers (ssh 에 접속을 허용하는 계정을 지정할 수 있다)
AllowUsers jh

 

2] /etc/sudoers 설정

# User privilege specification
root    ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# 패스워드 인증을 거치지 않고도 실행가능한 명령을 나열한다.
%sudo   ALL=NOPASSWD: /usr/sbin/service, /usr/sbin/sshd
# 또는 이렇게 ALL 로 퉁친다.
%sudo   ALL=NOPASSWD: ALL

 

3] WSL 에서 sshd 를 서비스 데몬으로 실행하기 위한 배치파일 작성하기

명령 구분  
cmd.exe /c 윈도에서 뒤에 오는 명령행을 실행함
wsl -e WSL 환경에서 -e 뒤에 오는 명령을 실행함.
sudo  관리자 대행 권한으로 뒤에 오는 명령을 실행함.
service ssh start ssh 서비스를 기동.

 

※ 아래의 참고 문서에서는 윈도 스케줄러에 바로 등록하는 방식을 쓰고 있지만, 내가 테스트 해본 바로는 긴 명령을 스케줄러에서 제대로 인식하지 못해서 ssh 서비스가 제대로 실행되지 않았다. 그래서 이 문제점을 해결하고자 윈도 배치파일을 작성해서 별도로 참고하는 방식을 쓰게 되었다.

 

SSH.bat 파일)

배포판을 직접 실행하는 방식 :

@echo off
rem debian 은 설치된 WSL 배포판 실행명령이다.
rem 배포판을 둘 이상 설치하는 경우라면 이렇게 배포판 실행명령을 직접 실행해야 할 것 같다.
%windir%\system32\cmd.exe /c debian run sudo service sshd start

 

wsl 명령을 실행하는 방식 :

 

@echo off
rem 윈도에 설치된 WSL 배포판이 한 개만 설치된 경우에는 배포판을 구별할 필요가 없기 때문에
rem 다음과 같이 `wsl -e` 으로 써도 된다.
%windir%\system32\cmd.exe /c wsl -e sudo service ssh restart

 

둘 중에 하나를 쓰면 됨. 최종적으로 실행하려는 명령은 `sudo service ssh restart` 이기 때문이다.

 

4] 윈도 스케줄러에 SSH 실행 배치파일을 등록하기

 

윈도의 "컴퓨터 관리" 에서 "작업 스케줄러" > "작업 스케줄러 라이브러리" 로 이동한다.

새 작업을 등록한다. ("기본 작업 만들기" 또는 "작업 만들기" 둘 다 가능)

 

 

5] 윈도에서 재로그인 후, localhost 로 접속해본다.

Token2Shell 로 localhost 에 접속한 결과

---------

참고 사이트 :

https://www.illuminiastudios.com/dev-diaries/ssh-on-windows-subsystem-for-linux/