我已经使用这个 docker-compose 配置在 Ubuntu 服务器上设置了 Gitea:
version: '3.9'
services:
db:
image: docker.io/bitnami/postgresql:15
volumes:
- 'db_data:/bitnami/postgresql'
environment:
- POSTGRESQL_DATABASE=gitea
- POSTGRESQL_USERNAME=gitea
- POSTGRESQL_PASSWORD=gitea
gitea:
image: docker.io/bitnami/gitea:1
volumes:
- 'gitea_data:/bitnami/gitea'
environment:
- GITEA_DATABASE_HOST=db
- GITEA_DATABASE_NAME=gitea
- GITEA_DATABASE_USERNAME=gitea
- GITEA_DATABASE_PASSWORD=gitea
- GITEA_ADMIN_USER=example
- GITEA_ADMIN_PASSWORD=example
- [email protected]
- GITEA_APP_NAME=Example Technologies
- GITEA_DOMAIN=gitea.example.com
- GITEA_SSH_DOMAIN=gitea.example.com
- GITEA_SSH_PORT=22
- GITEA_ROOT_URL=https://gitea.example.com/
- GITEA_SMTP_ENABLED=true
- GITEA_SMTP_HOST=smtp-relay.gmail.com:25
- [email protected]
ports:
- '5050:3000'
- '22:2222'
volumes:
db_data:
gitea_data:
我的常规 ssh 服务在端口 1026 上运行,因此应该没有端口冲突,这是我的 UFW
status:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
80,443/tcp (Apache Full) ALLOW IN Anywhere
Anywhere on docker0 ALLOW IN 172.17.0.0/16
1026/tcp ALLOW IN Anywhere
22/tcp ALLOW IN Anywhere
80,443/tcp (Apache Full (v6)) ALLOW IN Anywhere (v6)
1026/tcp (v6) ALLOW IN Anywhere (v6)
22/tcp (v6) ALLOW IN Anywhere (v6)
当尝试使用 ssh 从远程机器连接进行测试时:
ssh [email protected]
ssh: connect to host gitea.example.com port 22: Connection refused
但是在服务器上通过端口 1026 上的 ssh 进行本地测试时,我在服务器上执行相同的命令时出现此问题:
ssh [email protected]
[email protected]: Permission denied (publickey).
所以我真的不确定发生了什么,就像传入到端口 22 的远程流量被阻止了,但是即使禁用了 UFW,当我尝试从远程机器连接时,仍然会收到“连接被拒绝”的信息。
我也尝试使用 tcpdump 来查看发生了什么,但只能看到端口 22 上没有任何东西响应来自远程连接的传入数据包,再次在运行 gitea 的服务器上通过端口 22 本地连接时,我看到用于启动 SSH 连接的正常 TCP 流量。
我查看了 IP 表并且我发现引用端口 22 的唯一行以 ACCEPT 开头。
在 gitea 容器的日志中,我可以看到以下内容,表明 SSH 服务器已正确配置为在端口 2222 上启动:
gitea-gitea-1 | 2023/05/25 09:57:29 ...s/graceful/server.go:62:NewServer() [I] [646f3109-19] Starting new SSH server: tcp::2222 on PID: 1
gitea-gitea-1 | 2023/05/25 09:57:29 cmd/web.go:220:listen() [I] [646f3109-27] Listen: http://0.0.0.0:3000
gitea-gitea-1 | 2023/05/25 09:57:29 cmd/web.go:224:listen() [I] [646f3109-27] AppURL(ROOT_URL): https://gitea.example.com/
gitea-gitea-1 | 2023/05/25 09:57:29 ...s/graceful/server.go:62:NewServer() [I] [646f3109-27] Starting new Web server: tcp:0.0.0.0:3000 on PID: 1
有人能提供任何建议吗?这里可能出了什么问题,或者我该如何找到问题的根源?
答案1
我设法利用此处的信息解决了这个问题:Docker 破坏了 libvirt 桥接网络
基本上我向 ufw 添加了以下规则:
172.20.0.2 2222/tcp ALLOW FWD Anywhere # allow gitea-gitea-1 2222/tcp gitea_default