Windows SSH 对“私钥”的权限过于开放

Windows SSH 对“私钥”的权限过于开放

“要求您的私钥文件不被他人访问。”

屏幕截图

我当前的用户仅对 key.pem 文件(直接从 Amazon 下载)具有读取权限。但这仍然无法解决权限问题。

docker-compose:

version: '3'
services:
  pg-tunnel:
    image: cagataygurturk/docker-ssh-tunnel:latest
    volumes:
      - ./config:/root/ssh/config:ro
      - ./key.pem:/root/ssh/key.pem:ro
    environment:
      TUNNEL_HOST: ec2-tunnel
      REMOTE_HOST: ---.rds.amazonaws.com
      LOCAL_PORT: 5432
      REMOTE_PORT: 5432
    ports:
      - 5432:5432

SSH 配置:

Host ec2-tunnel
        HostName ---.beta.tailscale.net
        IdentityFile /root/ssh/key.pem
        User ec2-user
        ForwardAgent yes
        TCPKeepAlive yes
        ConnectTimeout 5
        ServerAliveCountMax 10
        ServerAliveInterval 15

版本:OpenSSH_for_Windows_8.1p1、LibreSSL 3.0.2、Windows 10、Microsoft Windows [版本 10.0.19044.2006]

答案1

在重新评估了情况后,我再次强烈建议您不能使用此 Docker 映像。它被硬编码为不执行主机密钥检查,这严重破坏了 SSH 安全性,只能提供一些微不足道的安慰。该映像还存在其他问题。

您的config文件有小错误。镜像将所有内容从/root/ssh复制/root/.ssh到 然后修复权限。为了使此操作有效,配置需要指向 处的私钥/root/.ssh。因此,您必须使用以下命令:

IdentityFile /root/.ssh/key.pem

然后它就会工作。


使用 Docker 来完成这项任务有点过头了。我建议改用 Windows 附带的 OpenSSH 客户端。它会更快,并且使用极大地更少的资源。或者,你可以使用普林克来自油灰工具套件。

另一种可能性是使用带有 WireGuard 的完整 VPN 隧道。设置也相对简单。


Dockerfile由于我没有正确阅读原文,所以答案已过时:

此 Docker Desktop 行为已记录在案。从故障排除页面

共享卷的数据目录上的权限错误

从 Windows 共享文件时,Docker Desktop 将共享卷的权限设置为默认值 0777(readwrite、和 的execute权限)。usergroup

共享卷上的默认权限不可配置。如果您使用的应用程序在容器运行时需要与共享卷默认权限不同的权限,则需要使用非主机挂载卷或找到一种方法使应用程序使用默认文件权限。

因此您无法使用已安装的文件来完成此项工作。

解决这个问题的方法是使用Dockerfile构建自己的专用图像:

FROM cagataygurturk/docker-ssh-tunnel:latest

ADD key.pem /root/.ssh/
ADD config /root/.ssh/

RUN chmod 600 /root/.ssh/key.pem /root/.ssh/config

在您的 中docker-compose.yml,改为这样:

version: '3'
services:
  pg-tunnel:
    build: .
    environment:
      TUNNEL_HOST: ec2-tunnel
      REMOTE_HOST: ---.rds.amazonaws.com
      LOCAL_PORT: 5432
      REMOTE_PORT: 5432
    ports:
      - 5432:5432

相关内容