IntelliJ에서 작업 중인 SSH 터널을 통해 포트에 연결하시겠습니까?

IntelliJ에서 작업 중인 SSH 터널을 통해 포트에 연결하시겠습니까?

원격 Ubuntu 14.x 서버에 있는 서버 앱을 작업 중입니다. 해당 앱은 원격 상자의 포트 8000에서 수신 대기 중입니다. 적절한 SSH 세션이 있으므로 상자로 터널링되고 sudo 기능도 있습니다.

내 사무실의 로컬 Linux 시스템에 IntelliJ가 있고 이 시스템도 ubuntu 14.x를 실행하고 있습니다. IntelliJ 원격 디버깅 세션을 위해 원격 상자의 포트 8000에 연결해야 합니다. 원격 상자의 포트 8080은 공개적으로 사용할 수 없습니다.

IntelliJ가 연결할 수 있도록 내 시스템에 로컬 포트를 제공한 다음 해당 포트를 통해 트래픽을 프록시/전달할 수 있는 유틸리티, IP 테이블 트릭(원격 상자에 있음) 또는 SSH 트릭 등이 있습니까? 원격 시스템의 포트 8000에 대한 SSH 터널은 무엇입니까? 즉, 내 로컬 상자의 IntelliJ가 원격 상자의 서버 앱과 직접 통신하고 있다고 생각하게 만들 것입니다. 실제로는 둘 사이의 연결이 활성 SSH 터널을 통과하고 있습니까?

오래 전에 이와 같은 작업을 수행한 것을 기억하지만 방법을 완전히 잊어버렸습니다. 그 당시에는 원격 클라이언트가 Windows 상자였기 때문에 솔루션은 Windows 시스템용이었습니다. 이번에는 로컬 시스템과 원격 시스템 모두 Ubuntu 14.x 서버입니다.

답변1

로컬 머신에 정방향 터널 설정

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000IntelliJ가 연결할 대상은 웹 앱이 로컬 컴퓨터에서 실행되고 모든 로컬 인터페이스에 바인딩되어 포트 8000에서 실행되고 있다고 생각할 것입니다.

localhost:8000Remotebox의 컨텍스트에서 터널이 연결되는 위치입니다. localhost더 이상 localhost작업 중인 인터페이스가 아니라 localhost원격 상자 시스템 내부의 인터페이스입니다. 여기서는 사용자의 컨텍스트에서 웹앱인 포트 8000에 연결됩니다 username.

autosshssh연결이 끊어지면 자동으로 다시 연결하는 래퍼입니다 .

RemoteBox에서 SSH용 비표준 포트를 사용하는 경우 해당 -P <PORT>매개변수를 사용하여 연결하세요.

위의 내용이 원하는 대로 수행되지 않는 경우 이 답변을 살펴볼 가치가 있습니다.https://unix.stackexchange.com/a/118650/61956 거기에서 방금 첫 번째 다이어그램을 설명했습니다. 나는 로컬 포트 ​​앞에 인터페이스를 붙였습니다 0.0.0.0. 생략하면 기본값이 될 것 같습니다 localhost. 원할 경우 그렇게 할 수 있습니다. 해당 부분을 제거하는 것이 더 안전할 수 있습니다 0.0.0.0:. 왜냐하면 localhost기본값인 경우 네트워크의 어느 누구도 귀하의 시스템을 사용하여 해당 SSH 터널을 사용할 수 없기 때문입니다. 그렇지 않으면 작업 중인 컴퓨터의 IP가 192.168.10.10:8000원격 웹 앱에 대한 진입점이 됩니다 .192.168.10.10

관련 정보