【问题标题】:SSH tunnel in Intellij Idea Run/Debug config and in Gradle tasksIntellij Idea Run/Debug 配置和 Gradle 任务中的 SSH 隧道
【发布时间】:2019-05-07 07:00:09
【问题描述】:

我们的 Spring Boot(带有 Gradle)应用程序有上游,这些上游托管在云中。因此,当我们需要从本地机器与他们通信时,我们使用 SSH 隧道在本地测试应用程序。

因此,通常,如果我需要测试需要来自受限区域的服务器的东西,我会执行以下操作:
1. 从 cmd 控制台使用ssh -N myhost 启动 SSH 隧道
2. 使用 Soring Boot Run/Debug 配置从 Intellij Idea 运行应用程序。
3. 完成后关闭隧道(命令行窗口Ctrl+C)。

我的问题:
- 我可以直接从 IntelliJ Idea 执行这些步骤,设置一些运行/调试配置来启动隧道、运行应用程序并在我的应用程序死后关闭它吗?
- 我可以在 Gradle 中进行相同的设置,创建一些隧道任务并像这样运行它:
./gradlew startTunnel bootRun

提前致谢。

【问题讨论】:

    标签: java spring-boot gradle intellij-idea ssh


    【解决方案1】:

    您可以尝试使用Gradle spawn plugin 描述的here

    定义这些任务(需要-v 选项来匹配身份验证成功 字符串):

    import com.wiredforcode.gradle.spawn.*
    
    task startSSHTunnel(type: SpawnProcessTask) {
        command "ssh -N -v myhost"
        ready 'Authentication succeeded' // this is printed by the SSH session's debug trace when connection has been successful
    }
    
    task stopSSHTunnel(type: KillProcessTask)
    
    bootRun.finalizedBy stopSSHTunnel
    

    然后运行它:

    ./gradlew startSSHTunnel bootRun
    

    也许你必须进行一些调整,但主要精神在这里。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 2016-12-21
      • 2019-07-20
      • 2023-03-03
      • 1970-01-01
      • 2017-10-10
      • 2020-07-31
      • 1970-01-01
      • 2013-11-17
      相关资源
      最近更新 更多