
원격 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:8000
IntelliJ가 연결할 대상은 웹 앱이 로컬 컴퓨터에서 실행되고 모든 로컬 인터페이스에 바인딩되어 포트 8000에서 실행되고 있다고 생각할 것입니다.
localhost:8000
Remotebox의 컨텍스트에서 터널이 연결되는 위치입니다. localhost
더 이상 localhost
작업 중인 인터페이스가 아니라 localhost
원격 상자 시스템 내부의 인터페이스입니다. 여기서는 사용자의 컨텍스트에서 웹앱인 포트 8000에 연결됩니다 username
.
autossh
ssh
연결이 끊어지면 자동으로 다시 연결하는 래퍼입니다 .
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