eclipse: удаленная отладка сервера tomcat за брандмауэром

После запуска tomcat с включенным jpda в моей компании я могу удаленно отлаживать множество веб-приложений в eclipse. По ряду причин мне сейчас нужна разработка и удаленная отладка тех же веб-приложений вне брандмауэра компании, и я могу получить доступ к этому серверу только через ssh на порту 22.

Я туннелировал самые необходимые порты (svn, nexus, сам tomcat, с сервера или через сервер) на localhost, и эти службы работают нормально, но я никак не могу запустить отладчик eclipse; я получаю сообщение «время ожидания соединения истекло при ожидании пакета XXX» или «соединение отклонено» со второй попытки. Проверяя с помощью nmap на сервере, он сообщает об открытии порта перед первой попыткой подключения, а после этого он закрывается. У меня нет интересного журнала вывода в catalina.out

Команда, которую я использую для запуска туннеля, следующая:

ssh -L 8000:localhost:8000 user@mycompany.com

iptables был временно остановлен как на сервере, так и на локальной машине для тестирования.

Я что-то упустил? Мне нужно перенаправить какой-то другой порт на localhost? Или это каким-то образом связано с разрешением имен?

РЕДАКТИРОВАТЬ

Открытые порты перед попыткой подключения из eclipse:

root@lnxulisse:/opt/apache-tomcat-6.0.32/bin# lsof -p 2147  -n |grep TCP
java    2147 root    4u  IPv4 640850      0t0     TCP *:8000 (LISTEN)
java    2147 root   38u  IPv6 640859      0t0     TCP *:http-alt (LISTEN)
java    2147 root   40u  IPv6 640865      0t0     TCP *:https (LISTEN)
java    2147 root   46u  IPv6 640908      0t0     TCP 127.0.0.1:18005 (LISTEN)
java    2147 root   48r  IPv6 642625      0t0     TCP 172.24.0.82:48347->172.24.0.82:mysql (ESTABLISHED)
java    2147 root  181u  IPv6 640891      0t0     TCP 172.24.0.82:60353->172.24.0.82:mysql (ESTABLISHED)

и после:

java    2147 root    4u  IPv6 642769      0t0     TCP 172.24.0.82:48956->172.24.0.82:mysql (ESTABLISHED)
java    2147 root    5u  IPv4 640851      0t0     TCP 127.0.0.1:8000->127.0.0.1:34193 (ESTABLISHED)
java    2147 root   38u  IPv6 640859      0t0     TCP *:http-alt (LISTEN)
java    2147 root   40u  IPv6 640865      0t0     TCP *:https (LISTEN)
java    2147 root   46u  IPv6 640908      0t0     TCP 127.0.0.1:18005 (LISTEN)
java    2147 root  181u  IPv6 640891      0t0     TCP 172.24.0.82:60353->172.24.0.82:mysql (ESTABLISHED)

возвращенная точная ошибка затмения:

Exception occurred during launch
Failed to connect to remote JVM. Connection timed out.
Timeout occurred while waiting for packet 204.

(номер пакета зависит от каждого попытка).

в workspace / .metadata / .log я получаю:

!ENTRY org.eclipse.osgi 2 0 2011-07-17 18:43:53.024
!MESSAGE While loading class "org.eclipse.core.net.proxy.IProxyService", thread "Thread[main,6,main]" timed out waiting (5000ms) for thread "Thread[Thread-6,5,main]" to finish starting bundle "org.eclipse.core.net_1.2.1.r35x_20090812-1200 [232]". To avoid deadlock, thread "Thread[main,6,main]" is proceeding but "org.eclipse.core.net.proxy.IProxyService" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: State change in progress for bundle "reference:file:plugins/org.eclipse.core.net_1.2.1.r35x_20090812-1200.jar" by thread "Thread-6".
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1073)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:278)
[...]

!ENTRY org.eclipse.ui.ide 4 4 2011-07-17 18:43:53.028
!MESSAGE Proxy service could not be found.

eclipse настроен для прямого подключения к Интернету.

EDIT 2

Думаю, решение может быть здесь:

http://blog.cantremember.com/debugging-with-jconsole-jmx-ssh-tunnels/

, но у меня есть некоторые проблемы с пониманием его настроек JNDI / RMI, и в какой степени это применимо к моей конфигурации.

РЕДАКТИРОВАТЬ 3

Это пояснение для тех, кто отвечает «используйте вместо »

  • компьютер A: моя рабочая станция в компании
  • компьютер B: моя рабочая станция дома
  • компьютер C: сервер под управлением tomcat

B и C находятся в двух разных подсетях в одной и той же сетевой инфраструктуре; разрешены только подключения к порту 22 C извне (и в некоторой степени «проксированные», я не знаю внутренних устройств сети).

A находится «снаружи» (мое DSL-соединение с динамическим IP-адресом).

Debugging on C from B via ssh tunnel -> works
Debugging on C from A via ssh tunnel -> connection timed out while waiting for packet XXX

27
задан Vini.g.fer 28 June 2016 в 18:03
поделиться