標籤:例子 suspend sudo serve port tcp 串連 body address
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連接埠。此時我想用本機串連伺服器進行遠端偵錯,需:
1、登陸伺服器使用socat進行連接埠映射,
socat TCP4-LISTEN:50001,fork,range=10.86.14.35/32 TCP4:127.0.0.1:50002
2、在idea中設定遠端偵錯的Host ip為192.168.254.219, 連接埠為50001
參考:
安全的Java遠程Debug
Java遠程Debug