![매번 IP를 변경할 필요 없이 WSL2에 연결하기 위해 SecureCRT 연결을 만드는 방법은 무엇입니까?](https://rvso.com/image/1654786/%EB%A7%A4%EB%B2%88%20IP%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%A0%20%ED%95%84%EC%9A%94%20%EC%97%86%EC%9D%B4%20WSL2%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20SecureCRT%20%EC%97%B0%EA%B2%B0%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
localhost
WSL2의 포트 전달을 활용하여 Windows 호스트를 점프 호스트로 사용합니다 . 즉ssh -o "ProxyCommand ssh -W %h:%p windowshost.local" -o "StrictHostKeyChecking=no -p 2222 localhost
, "windowshost"를 컴퓨터 이름으로 대체하세요.
이는 기본적으로 Windows가 WSL2 인스턴스에서 실행 중인 서비스를 감지하고 localhost
이에 대한 연결을 전달하기 때문에 작동합니다.
물론 이는 SecureCRT가 ProxyCommand를 사용할 수 있다고 가정합니다.