java遠程調試功能可致使遠程執行任意命令,默認狀況下在生產禁止使用。若有須要在beta/dev環境使用,必須監聽在127.0.0.1,避免被遠程調用。 監聽到127.0.0.1的方法 修改java 遠程調試參數中的地址爲127.0.0.1,重啓java程序。 因爲開啓java debug服務有兩種方式,啓動時的參數參考如下其中一種。 java debug啓動時開啓遠程調試參數 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port> java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port> 注: tomcat的啓動參數在startenv.sh裏面修改。 遠程調試的方法 在啓用了java debug的機器上使用socat命令進行端口映射,使用映射的端口進行遠程調試,在調試完後需結束socat命令。 命令以下,其中listen_port是socat監聽的端口,dest_port是java debug監聽的端口, source_ip是調試的客戶機的ip。 socat命令 socat TCP4-LISTEN:<listen_port>,fork,range=<source_ip>/32 TCP4:127.0.0.1:<dest_port> 若機器上沒有socat程序,使用如下命令安裝socat sudo yum install socat 例子 服務器的ip地址爲192.168.254.219, 本機的ip地址爲10.86.14.35,且服務器的java debug服務監聽到127.0.0.1:50002端口。此時我想用本機鏈接服務器進行遠程調試,需: 一、登錄服務器使用socat進行端口映射, socat TCP4-LISTEN:50001,fork,range=10.86.14.35/32 TCP4:127.0.0.1:50002 二、在idea中設置遠程調試的Host ip爲192.168.254.219, 端口爲50001