安全的Java遠程Debug

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
相關文章
相關標籤/搜索