使用SSH本地端口转发调试远程环境

本地开发环境配置

SSH -L是SSH命令中的一个选项,用于在SSH连接中设置本地端口转发。

1
ssh -L [本地地址:]本地端口:目标地址:目标端口 用户@远程主机
  • [本地地址:]本地端口:这是本地端口转发的设置。你可以选择性地指定本地地址(通常是”localhost”或”127.0.0.1”),然后指定一个本地端口。这个本地端口将会被SSH客户端监听,用于接收来自本地系统的连接。

  • 目标地址:目标端口:这是你希望将本地连接转发到的远程目标地址和端口。当本地端口接收到连接时,SSH客户端将会将这些连接转发到目标地址和端口上。

  • 用户@远程主机:SSH连接的目标远程主机和用户。

SSH -L选项允许你在本地系统和远程系统之间创建一个安全的通道,以便将本地端口上的流量转发到远程主机的指定端口。这对于访问受限制的资源或者建立安全的连接非常有用,例如在本地计算机上运行一个服务,但需要通过SSH连接到远程服务器来访问该服务。

例如,以下是一个使用SSH -L进行本地端口转发的示例:

1
ssh -L 8081:example.com:8080 user@remote-server

这将会在本地主机上的端口8081上创建一个监听,当有连接时,它将把连接转发到远程服务器example.com的端口8080上。这样,你可以通过访问本地主机的端口8080来访问远程服务器上的8080端口Web服务。

SSH本地端口转发

线上预发环境配置

预发环境java配置参数

通过IDEA工具生成的配置参数做为JVM选项设置到线上的机器中。其中:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8080 是一个Java虚拟机(JVM)调试选项,用于启用Java远程调试协议(JDWP)的调试代理,并指定了监听的端口号为8080。这个选项的各个部分的含义如下:

  • -agentlib:jdwp:这部分表示要启用JDWP调试代理库。

  • transport=dt_socket:这部分指定了JDWP调试代理的通信传输协议,这里使用的是Socket通信。

  • server=y:这部分表示JDWP代理将作为服务器运行,等待调试器连接。

  • suspend=n:这部分表示应用程序在启动时不会挂起,即不会等待调试器连接。

  • address=*:8080:这部分指定了JDWP代理监听的地址和端口。在这个示例中,* 表示监听所有可用的网络接口,而 8080 是监听的端口号。这意味着JDWP代理将在所有网络接口上的8080端口上等待调试器连接。

这个选项用于启用Java应用程序的远程调试功能,允许你连接到正在运行的Java应用程序,以进行代码调试、观察变量和跟踪应用程序的执行。确保在使用这个选项时谨慎操作,只应该在开发和调试阶段使用。不要在生产环境中启用JDWP调试代理,以避免潜在的安全漏洞。

(本文完)


使用SSH本地端口转发调试远程环境
https://maojun.xyz/blog/2023/11/使用SSH本地端口转发调试远程环境.html
作者
毛 俊
发布于
2023年11月4日
许可协议