从远程机器访问托管 SFTP 的 Docker 容器

从远程机器访问托管 SFTP 的 Docker 容器

我安装了一个新的 Ubuntu,运行 Docker,我想用它来托管 SFTP 服务器。我可以从本地计算机访问 SFTP 服务器,但不能在本地网络内访问。

我的docker-compose.yml文件如下:

version: "2.3"
services:
    sftp:
        image: atmoz/sftp
        ports:
          - "2222:22"
        command: foo:pass:1001
        networks:
          - turreta_network
        volumes:
          - "/home/my-name/20220926-ftp/demo-dir:/home/foo/upload"
networks:
  turreta_network:
    driver: bridge

然后我运行以下命令来启动服务器。

docker-compose pull
docker-compose up

然后我可以使用以下方式通过 SFTP 进入本地机器上的容器:

sftp -P 2222 [email protected]
sftp -P 2222 foo@[MY_IP]

但是,当我尝试通过 IP 地址从网络上的另一台计算机访问 SFTP 服务器时,失败并出现以下错误:

ssh: connect to host [IP ADDRESS] port 2222: Connection timed out
Connection closed

我已经使用 UFW 打开了端口 2222,您可以看到它允许使用以下命令传入和传出数据ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
2222                       ALLOW IN    Anywhere
2222 (v6)                  ALLOW IN    Anywhere (v6)

2222                       ALLOW OUT   Anywhere
2222 (v6)                  ALLOW OUT   Anywhere (v6)

我知道我的路由器没有(直接)问题,因为我在机器上启动了一个快速本地 .net 服务器 ( dotnet new webapp) 并运行它。我能够从远程机器上运行的浏览器访问 dotnet 服务器,所以我知道我的端口没有问题。:

sudo dotnet run . -urls http://[IPADDRESS]:2222

除此之外,我还必须运行它,sudo这让我很惊讶。

有人知道发生了什么事或可以提供帮助吗?

可能的相关问题

我不知道这是否是一个相关的问题,但我无法停止在我的机器上运行容器。

如果我跑步docker stop <container-id>我会得到:

Error response from daemon: cannot stop container: <container_id>: permission denied

我必须通过附加到正在运行的容器并kill从容器内部发出命令来停止运行容器。

答案1

我要回答我自己的问题。

由于上述情况,我怀疑该盒子存在一些配置问题Possible Related Issue

我只好在盒子上重新安装 Ubuntu,然后重新启动。重新安装的盒子工作正常。

我不确定“Pave your computer”是否是一个可以接受的答案,但是对我来说它很有用:)

相关内容