WSL SSH setting

신석진( Seokjin Shin)·2021년 7월 5일
0

WSL

목록 보기
1/6
post-thumbnail
post-custom-banner

설정

  1. WSL을 microsoft 설명서에 설명된 순서대로 설치
  2. c:\wsl2_network 경로에 wsl2_network.bat, wsl2_network.ps1 파일 생성. ps1 파일의 ports(16번째 줄)에 forwarding을 원하는 port 기입.
  3. root 비밀번호를 생성하고 apt 패키지 관리자 update 및 upgrade
bash
sudo passwd root
su
apt update && apt upgrade
  1. net-tools와 openssh-server 설치
apt install net-tools openssh-server
  1. vi /etc/ssh/sshd_config -> Port는 원하는 값으로 PasswordAuthentication는 yes로 변경
vi /etc/ssh/sshd_config
:%s/#Port 22/Port 2222
:%s/#PasswordAuthentication no/PasswordAuthentication yes
  1. ssh 서비스 접근시 비밀번호를 묻지 않게 설정
su
echo "%sudo ALL=NOPASSWD: /etc/init.d/ssh" >> /etc/sudoers
  1. ssh 서비스 재시작
/etc/init.d/ssh restart
  1. windows 관리자권한 powershell에서 batch file을 스케줄러에 등록. 본인의 username을 입력하고 실행하면 비밀번호 입력 창이 뜬다.
schtasks /create /ru username /rp /sc onstart /tn wsl2_network /tr c:\wsl2_network\wsl2_network.bat /rl highest

sshd: no hostkeys available -- exiting. 발생시

sudo ssh-keygen -A



wsl2_network.bat

@echo off
powershell.exe -ExecutionPolicy Bypass -File C:\wsl2_network\wsl2_network.ps1
bash -c "sudo /etc/init.d/ssh restart"
exit

wsl2_network.ps1

$remoteport = wsl hostname -I

#[Ports]
#All the ports you want to forward separated by coma
$ports=@(80,443,10000,2222,3000,5000);

#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";

#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "netsh interface portproxy reset all";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}
post-custom-banner

0개의 댓글