몇 가지 방법이 있다. 하나는 Windows 자체의 sshd 서비스를 사용하는 방법과 WSL 내부의 sshd 데몬으로 터널링 하는 방법이있다.

VSCode: how to ssh remote connect to remote WSL2

Windows 자체의 sshd를 사용해보자

PC-A에서 PC-B의 윈도우로 ssh를 할 수 있는 명령어는 다음과 같다

# Powershell as Administrator
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Set-Service -Name sshd -StartupType 'Automatic'

이제 외부에서 해당 윈도우(PC-B)로 ssh를 연결해 들어가면 파워쉘 프롬프트를 만날 수 있다.

WSL로 자동입장이 되게 만들어보자

아래 커맨드는 ssh 입장시 사용할 기본셸을 설정할 수 있다. bash.exe 파일로 설정해 놓았고, 이는 윈도우가 암시적으로 wsl을 호출하기 때문에 ssh를 통해 WSL 배시 셸로 들어가게 된다.

New-ItemProperty -Path "HKLM:\\SOFTWARE\\OpenSSH" -Name DefaultShell -Value "C:\\WINDOWS\\System32\\bash.exe" -PropertyType String -Force

하지만 나는 욕심을 내어 파워셸까지 사용하고 싶었다. shutdown도 할 수 있게 말이다! 그래서 해당 프로퍼티를 다시 삭제했다.

Remove-ItemProperty -Path "HKLM:\\SOFTWARE\\OpenSSH" - Name DefaultShell

Problem shooting: WSL의 Microsoft Store 출시와 관한 문제

Cannot run WSL2 over SSH on Windows 11

MS Store에 WSL이 올라왔기에 나는 판올림을 한 적이 있다. 그 뒤로 ssh 연결을 wsl로 할 수가 없었는데, 아직 해결되지 못한 이슈였다고 한다. 따라서 MS Store에 설치되어있던 WSL을 지우자 연결이 가능해졌다.

VS Code에 ssh로 원격접속하기

Developing on Remote Machines using SSH and Visual Studio Code

하라는 대로 했는데도 안 된다. 그래서 심지어 vs-code도 삭제하고 vs-code-server도 전부 삭제해봤고 컴퓨터도 다시시작 했는데도 불구하고 연결이 안 되었다.

Vscode cannot connect to remote Linux (_WebSocket close with status code 1006)

그런데 이유를 모르겠지만 wsl --shutdown 을 사용해 리눅스를 종료시킨 뒤에 다시 켜니까 된다. 뭐지