“要求您的私钥文件不被他人访问。”
我当前的用户仅对 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(
read
、write
、和 的execute
权限)。user
group
共享卷上的默认权限不可配置。如果您使用的应用程序在容器运行时需要与共享卷默认权限不同的权限,则需要使用非主机挂载卷或找到一种方法使应用程序使用默认文件权限。
因此您无法使用已安装的文件来完成此项工作。
解决这个问题的方法是使用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