매번 IP를 변경할 필요 없이 WSL2에 연결하기 위해 SecureCRT 연결을 만드는 방법은 무엇입니까?

매번 IP를 변경할 필요 없이 WSL2에 연결하기 위해 SecureCRT 연결을 만드는 방법은 무엇입니까?

WSL2 IP를 정적으로 만드는 방법이 있습니까? 이에 대해 읽었는데 IP를 정적으로 만들 수 있는 방법이 없다고 들었습니다. 그런 다음 다시 입력할 필요가 없도록 구성에서 IP 주소를 변경하지 않고도 WSL2에 SecureCRT 연결을 만드는 방법이 있습니까? 매번 그 아이피?

답변1

새로운 IP 주소로 모든 것을 다시 실행하지 않는 솔루션은 게시물에서 찾을 수 있습니다.
WSL 2 NIC 브리지 모드 #4150.

불행하게도 해결책은 로그인할 때마다 자동으로 실행되는 스크립트에 작업을 위임하는 것뿐입니다.

문제 설명:

해결 방법은 WSL 2 서비스의 TCP 포트를 호스트 OS로 전달하는 것입니다.
WSL 2 시스템의 가상 어댑터는 재부팅 중에 IP 주소를 변경하므로 한 번 실행 솔루션을 구현하기가 어렵습니다.
또한 참고로 Windows 방화벽은 리디렉션된 포트를 차단합니다.

해결책은 다음을 수행하는 PowerShell 스크립트를 작성하는 것입니다.

  • WSL 2 시스템의 IP 주소 가져오기
  • 이전 포트 전달 규칙 제거
  • 포트 전달 규칙 추가
  • 이전에 추가한 방화벽 규칙 제거
  • 새로운 방화벽 규칙 추가

이 스크립트는 원치 않는 방화벽 규칙도 제거합니다.
해당 게시물에서 복사한 스크립트는 다음과 같습니다.

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,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";

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

다음과 같이 로그인 후 스크립트가 실행되도록 예약해야 합니다.

검색으로 이동하여 작업 스케줄러를 검색하세요. 오른쪽 작업 메뉴에서 작업 생성을 클릭합니다.
이름을 입력하고 트리거 탭으로 이동합니다. 로그인 시 시작 작업이 포함된 새 트리거를 생성하고 지연 시간을 10초로 설정합니다.
작업으로 이동하여 스크립트를 추가하세요. 노트북을 사용하는 경우 설정으로 이동하여 전원으로 실행을 활성화하세요.

답변2

ssh주석에 표시한 SecureCRT에 대한 연결/프로토콜 만 필요한 경우 포트 전달에 대한 대안이 있습니다.

  • Windows OpenSSH 서버 설치(지도포트 22에서 실행 중입니다.
  • WSL2 sshd 포트를 다른 포트(예: 2222)로 설정하세요./etc/ssh/sshd_config
  • localhostWSL2의 포트 전달을 활용하여 Windows 호스트를 점프 호스트로 사용합니다 . 즉 ssh -o "ProxyCommand ssh -W %h:%p windowshost.local" -o "StrictHostKeyChecking=no -p 2222 localhost, "windowshost"를 컴퓨터 이름으로 대체하세요.

이는 기본적으로 Windows가 WSL2 인스턴스에서 실행 중인 서비스를 감지하고 localhost이에 대한 연결을 전달하기 때문에 작동합니다.

물론 이는 SecureCRT가 ProxyCommand를 사용할 수 있다고 가정합니다.

관련 정보