
첨부한 이미지처럼 윈도우 PC를 하나의 메인 서버처럼 사용하고
그 위에 여러버전의 wsl2를 올렸다면
이 wsl2를 외부PC에서 접속할 수 있도록 설정하는 작업을 하고자 한다.
sudo apt update
sudo apt install -y openssh-server
sudo service ssh start
sudo service ssh status

첨부한 사진처럼 ssh 접속을 위한 WSL의 22포트가 열린것을 알 수 있다.
2-1. WSL - ssh의 포트번호 변경
만약 다른 WSL이 먼저 22포트번호를 선점한 경우 WSL 첫번째, WSL 두번째의 IP랑 포트번호까지 같아지는 참사가 발생한다.
따라서 이 경우에는 두번째 WSL의 기본 ssh 포트번호를 바꿔줘야 한다
sudo nano /etc/ssh/sshd_config

ssh_cnofig파일의 포트번호를 바꾼 뒤에는 이를 적용한다.
sudo sshd -t
그 다음 데몬 리로드 및 ssh소캣 재부팅을 수행한다
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
검증작업은 아래와 같이 수행한다
ss -ntl | grep 2232

ip addr show eth0
hostname -I
통상 hostname -I이 제일 알기 편하긴 하다

여기까지 설정했으면 wsl은 설정을 완료한 것이다
윈도우에서 할 일은 외부 접속을 허용케 하기 위한 포트포워딩을 하는 것이다
netsh interface portproxy show all

아까 미리 정의했듯이 윈도우에서는 2232 {윈도우 PC에서 포워드해줄 포트번호} 포트를 새로설치한 WSL의 22와 매칭되도록 포트포워딩을 진행하고자 한다.
netsh interface portproxy add v4tov4 `
listenport={윈도우 PC에서 포워드해줄 포트번호} `
listenaddress=0.0.0.0 `
connectport=22 `
connectaddress=172.xxx.xxx.xxx # 여기는 WSL에서 확인한 IP주소

참고로 해당 작업은 파워쉘을 관리자 권한으로 실행시킨 창에서만 가능하기에 따로 관리자 권한으로 실행을 적용한 파웨쉘에서 작업해야 한다
이 항목돠 관리자 권한 - PowerShell에서 작업한다
netsh advfirewall firewall add rule `
name="WSL_SSH_{윈도우 PC에서 포워드해줄 포트번호}" # 이름은 솔직히 마음대로 해도된다...`
dir=in `
action=allow `
protocol=TCP `
localport={윈도우 PC에서 포워드해줄 포트번호}

netsh interface portproxy show all

4.1 설정이 꼬였을 시 아래와 같이...
우선 필자의 경우 포스팅 이후 WSL 첫번째와 WSL 두번째가 동일하게 같은 포트 22로 겹치기에 문제가 발생한다.
이를 위해 WSL 두번째는 윈도우에서 포트프록시 설정정보를 지우고 다시 작업한다
PowerShell은 관리자 권한으로 실행
netsh interface portproxy delete v4tov4 listenport=2232 listenaddress=0.0.0.0
이후 포트프록시 재등록을 진행한다.
netsh interface portproxy add v4tov4 `
listenport=2232 `
listenaddress=0.0.0.0 `
connectport=2232 `
connectaddress=172.xxx.xxx.xxx
다음으로 방화벽도 한번 확인해주자
netsh advfirewall firewall add rule `
name="WSL_SSH_2232" `
dir=in `
action=allow `
protocol=TCP `
localport=2232

이렇게 세팅하면 WSL 첫번째, 두번째간의 충돌은 없어진다.
ssh {WSL 계정 ID}@{외부에서 보여지는 윈도우PC IP} -p {윈도우 PC에서 포워드해줄 포트번호}

3-1. 외부 PC에서 접속안될 때 해결방안
만약 외부PC에서 해당 IP랑 포트로 접속한 이력이 있어서 꼬였다면 아래와 같이 작업해주자
외부PC의 파워쉘
ssh-keygen -R "[접속IP주소]:포트번호"
이렇게 ssh 호스트 키가 기록되서 발생한 문제니 삭제하면 된다.
이후 다시접속...
의외로 간단하지만 토큰 아끼려면 기록을 하는 습관을 들여두자