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

如何绕过Docker Secrets中SSH密钥0644权限过高的限制?

问题描述

Docker Compose存在Bug,无法为容器内挂载的私有SSH密钥设置mode: 600。手动执行ssh -i /run/secrets/cmk_ssh_key连接主机时失败,报错如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/run/secrets/cmk_ssh_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/run/secrets/cmk_ssh_key": bad permissions

但CheckMK执行的非交互式SSH服务检查可正常使用该密钥,希望通过非交互模式实现连接。

解决方案

以下几种非交互方式可绕过文件权限限制:

  • 通过管道传递密钥内容
    直接将密钥内容通过管道传给ssh,避免读取权限不符合要求的文件:

    cat /run/secrets/cmk_ssh_key | ssh -i - user@target-host
    

    这里-i -表示从标准输入读取密钥。

  • 使用ssh-agent临时加载密钥
    先启动ssh-agent并加载密钥,之后连接时无需指定密钥文件:

    # 启动ssh-agent并设置环境变量
    eval $(ssh-agent)
    # 从文件读取密钥内容并添加到agent
    ssh-add - <<< "$(cat /run/secrets/cmk_ssh_key)"
    # 直接连接目标主机
    ssh user@target-host
    
  • 修改SSH配置忽略权限检查(不推荐)
    在容器内的/etc/ssh/ssh_config或用户目录下的~/.ssh/config中添加配置,关闭严格权限检查:

    Host target-host
      IdentityFile /run/secrets/cmk_ssh_key
      StrictModes no
    

    注意:StrictModes no会关闭SSH对密钥文件权限的检查,存在安全风险,仅建议在测试环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:37:45