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

Terraform操作远程Docker主机每步需输入SSH密码如何解决?

解决Terraform部署Docker重复要求输入SSH密码的方案

操作步骤

1. 修正Terraform Docker Provider配置

你当前的Provider配置未匹配本地SSH配置的别名规则,将host字段修改为SSH config中定义的Host值即可自动加载对应SSH配置,修改后配置如下:

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = ">= 2.13.0"
    }
  }
}

provider "docker" {
  host = "ssh://server_ip" # 直接使用SSH config里定义的Host名称,自动读取用户名、端口、私钥路径配置

  registry_auth {
    address     = "my.docker.repo"
    config_file = pathexpand("~/.docker/config.json")
  }
}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}

注意:必须提前将本地生成的id_rsa.pub公钥内容追加到远程服务器对应用户目录下的~/.ssh/authorized_keys文件中,且确保服务器端.ssh目录权限为700、authorized_keys文件权限为600,否则SSH密钥认证会不生效。

2. 配置本地SSH Agent缓存私钥密码

由于你的私钥设置了密码,通过SSH Agent可以缓存密码,实现一次输入全会话生效,Windows下操作如下:

  • 按下Win+R输入services.msc打开服务管理器,找到OpenSSH Authentication Agent服务,将启动类型修改为「自动」,然后启动该服务
  • 打开PowerShell执行命令添加私钥到Agent:
ssh-add C:\Users\lenovo\.ssh\id_rsa

执行时输入一次你的私钥密码即可,后续当前Windows登录会话内所有SSH连接都不需要重复输入密码。

可选:移除私钥密码实现免密操作

如果不需要私钥密码保护,可执行以下命令移除密码:

ssh-keygen -p -f C:\Users\lenovo\.ssh\id_rsa

执行时输入原密码,新密码直接留空回车确认即可,之后所有SSH连接都不需要输入任何密码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:03