You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle-SSH-Plugin Kotlin配置:自定义knownHosts路径失效问题

解决gradle-ssh-plugin自定义knownHosts路径不生效的问题

在Kotlin DSL(build.gradle.kts)中配置gradle-ssh-plugin时,你之前的写法存在关键问题:在delegateClosureOf闭包内返回mapOf并不会实际设置插件的配置属性,而是需要直接对闭包内的配置对象赋值。

以下是两种正确的配置方式,可实现将knownHosts指向Git仓库内的自定义文件:

方式一:全局配置ssh设置

tasks.create("deploy") {
    val myServer = Remote(
        mapOf(
            "host" to "192.168.1.1",
            "user" to "username",
            "password" to "password"
        )
    )

    // 全局配置knownHosts路径
    ssh.settings {
        knownHosts = project.rootDir.resolve("path/to/your/known_hosts").absoluteFile
    }

    doLast {
        ssh.run {
            session(myServer) {
                put(from = project.rootDir.resolve("deploy"), into = "/home/username/")
            }
        }
    }
}

方式二:在run块内配置单次会话的settings

tasks.create("deploy") {
    val myServer = Remote(
        mapOf(
            "host" to "192.168.1.1",
            "user" to "username",
            "password" to "password"
        )
    )

    doLast {
        ssh.run {
            // 针对本次run配置knownHosts
            settings {
                knownHosts = project.file("path/to/your/known_hosts").absoluteFile
            }
            session(myServer) {
                put(from = project.rootDir.resolve("deploy"), into = "/home/username/")
            }
        }
    }
}

关键注意事项

  • 替换path/to/your/known_hosts为仓库内实际的文件路径,确保文件存在且权限正确(建议权限为644)
  • 使用project.rootDir.resolve()或project.file()可以确保路径基于项目根目录,避免相对路径的歧义
  • 如果需要跳过主机密钥验证(仅测试环境使用),可以设置knownHosts = AllowAnyHosts.instance,但生产环境不建议这么做

内容的提问来源于stack exchange,提问作者aminator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:43:27