Вы можете настроить удаленное отладочное использование для использования SSL и аутентификации, это работает как для Windows, так и для Linux, но немного громоздко. И порт открыт все время.
Уверен, что у вас есть все основания для отладки вашего реального/полезного приложения и знаете, что когда вы действительно отлаживаете его и не только используете соединение для получения доступа к данным JMX, например, ваше приложение перестанет работать при подключении отладчика ,
Oracle documents некоторые риски, некоторые выше или ниже, в зависимости от того, как настроить агент:
Внимание - Потенциальная проблема безопасности, был определен с паролем аутентификации для удаленных соединителей, когда клиент получает удаленный соединитель из небезопасного реестра RMI (по умолчанию). Если злоумышленник запускает фиктивный RMI-реестр на целевом сервере до запуска законного реестра , тогда злоумышленник может украсть пароли клиентов . Этот сценарий включает случай, когда вы запускаете виртуальную машину Java с включенным удаленным управлением, используя системное свойство com.sun.management.jmxremote.port = portNum, даже если включен SSL. Хотя такие атаки, вероятно, будут замечены, это, тем не менее, уязвимость .
Внимание: эта конфигурация небезопасна. Любой удаленный пользователь, который знает (или догадывается), ваш номер порта JMX и имя хоста смогут контролировать и управлять вашим Java-приложением и платформой. Хотя он может быть приемлемым для разработки, он не рекомендуется для производства систем .
Внимание! Эта конфигурация небезопасна: любой удаленный пользователь, который знает (или догадывается), будет иметь возможность отслеживать номер вашего порта и имя хоста и управлять вашими приложениями и платформой Java. Кроме того, возможный вред не ограничивается операциями, которые вы определяете в своих MBeans. A Удаленный клиент может создать javax.management.loading.MLet MBean и использовать его для создания новых MBeans с произвольными URL-адресами, по крайней мере, если нет менеджера безопасности. Другими словами, удаленный клиент-мошенник мог бы сделать вашим приложением Java для выполнения произвольного кода.
Следовательно, в то время как отключение защиты может быть приемлемым для разработки , настоятельно рекомендуется отключить защиту для производственных систем.
Даже при использовании самой высокой степени безопасности (перемещение порта, ssl enabled, аутентификация по сертификату клиента ssl) по-прежнему несет риски. Если вам все еще нужно отладочное соединение, я предлагаю вам использовать предположительно уже существующее ssh-соединение с сервером и использовать его для создания туннеля ssh в порт отладчика. Вы можете узнать больше об этом здесь: Cannot remotely debug JVM via SSH tunnel (потому что он уже на SO Я не копирую детали)
Открытие порта без шифрования и аутентификации позволит любому подключиться к вашему jvm. Это позволит считывать и записывать значения JMX, останавливать выполнение кода, изменять значения, создавать heapdumps, переписывать код и все другие плохие вещи.
Почему отладка производства? Я предлагаю использовать удаленный отладочный файл в среде разработки. вы можете применить фильтрацию ip и рычаги на брандмауэре вашей фирмы для достижения безопасности. – Bon
Вам действительно нужно отлаживать этот сервер, думая о настройке всего на локальном хосте и открытии туннеля ssh, если это когда-либо понадобится. Затем вы можете отлаживать, если кто-либо еще не сможет. – Marged
Я думал о ssh туннеле. Просто интересно, действительно ли это проблема, и, возможно, существует общий способ (например, pubkey-auth) для архивирования этого. – Dmitriusan