몇 가지 방법이 있다. 하나는 Windows 자체의 sshd 서비스를 사용하는 방법과 WSL 내부의 sshd 데몬으로 터널링 하는 방법이있다.
VSCode: how to ssh remote connect to remote WSL2
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를 연결해 들어가면 파워쉘 프롬프트를 만날 수 있다.
아래 커맨드는 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
Cannot run WSL2 over SSH on Windows 11
MS Store에 WSL이 올라왔기에 나는 판올림을 한 적이 있다. 그 뒤로 ssh 연결을 wsl로 할 수가 없었는데, 아직 해결되지 못한 이슈였다고 한다. 따라서 MS Store에 설치되어있던 WSL을 지우자 연결이 가능해졌다.
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
을 사용해 리눅스를 종료시킨 뒤에 다시 켜니까 된다. 뭐지