Motivation

Windows, Linux, Mac 머신을 모두 구비하고, 상황에 따라 맞는 환경을 골라쓰면 좋겠지만, 터미널을 이리저리 바꿔가며 쓰기도 번거롭고 모든 근무환경에서 여러 OS를 늘 준비해 두는 것도 까다롭다. Windows 위주로 쓰자니 Ubuntu 환경이 늘 아쉬웠고, 이는 WSL로 해결했으나 외부로부터의 접속이 까다로워 내부 데이터를 꺼내기가 너무 어렵다. WSL2로 상시 접속이 가능하도록 세팅을 해본다.

ssh Server on WSL2

서브시스템에 ssh 서버가 작동중인지 알 수 있는 가장 쉬운 방법은 localhost에 접속해 보는 것. localhost는 물리적, 논리적 NIC이 없어도 무조건 존재하는 호스트이다.

$ ssh localhost
ssh: connect to host localhost port 22: Connection refused

접속을 시도했으나 연결이 되지 않는다. ssh 서버를 설치 후 재시도를 하면,

$ sudo apt install openssh-server
...
$ ssh localhost
ssh: connect to host localhost port 22: Connection refused

여전히 접속이 되지 않음. 여기에서 sshd 서비스를 켜주면,

$ sudo service ssh start
 * Starting OpenBSD Secure Shell server sshd [ OK ]
$ ssh localhost
Warning: No xauth data; using fake authentication data for X11 forwarding.
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.146.1-microsoft-standard-WSL2 x86_64)
...
$

와 같이 접속 성공. 물론, 루프백 연결이니까 당연히 접속은 가능하고 현재 상태에서 외부 접속이 가능하단 것은 아님.

ssh Server Auto Start

애써 설치한 ssh 서버는 시스템을 재부팅하면 자동으로 켜지지 않는다. 시스템 재부팅 후 WSL2에서 sudo service ssh status를 쳐보면

$ sudo service ssh status
 * sshd is not running

와 같이 야속한 소리를 한다. 베어메탈이었다면 systemctl을 썼을텐데, WSL2에서는

$ sudo systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: 호스트가 죽었습니다

와 같이 작동하지 않는다. 이는 [WSL] Windows Subsystem for Linux – SSH 서버 자동 시작 설정하기 – ECE – TUWLAB을 통해 해결하였음.

덧 1. 어떤 글에서는 WSL2에서 systemd를 활성화한 후 베어메탈에서처럼 sudo systemctl enable ssh를 하면 자동으로 되는 것처럼 써있는데, 직접 해본 결과 이렇게 해도 ssh 데몬은 자동으로 재시작되지 않았음.

덧 2. 위의 링크 방식도 그렇게 마음에 들진 않아서 파워셸 바로가기를 만들어 넣었다. startup에 powershell -command "bash -c \"sudo service ssh start\""를 실행하는 바로 가기를 생성하였더니 잘 작동함.

ssh From the External

이제 외부에서 서브시스템이 설치된 시스템의 주소로 ssh 접속을 시도하면

$ ssh 192.168.1.123
kex_exchange_identification: read: Connection reset by peer
Connection reset by 192.168.1.123 port 22

와 같이 접속이 안되는 것을 알 수 있다. 이는 기본적으로 윈도우 방화벽이 22번 포트로의 접근을 차단하고 있고, 시스템에서 서브시스템으로 포트포워딩을 해야 해결된다. 이는 WSL2에 ssh 서버와 외부연결 환경 구축 (velog.io)를 읽고 작업 스케줄러에 파워셸 스크립트를 추가해 주는 방식으로 해결. 이로써 시스템이 부팅되고, 윈도우 계정 로그인만 하면 자동으로 WSL2로의 ssh 연결이 가능해지게 되었다.

카테고리: Linux

0개의 댓글

답글 남기기

아바타 플레이스홀더