У меня есть настройка gitea с использованием docker-compose, внешний порт SSH моей машины - 4444, который я установил в sshd_config
version: '2'
volumes:
gitea:
postgres:
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
env_file:
- .env
restart: always
networks:
- gitea
volumes:
- gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:22"
depends_on:
- postgres
postgres:
image: postgres:9.6
restart: always
env_file:
- gittea_db.env
networks:
- gitea
ports:
- "5432:5432"
volumes:
- postgres:/var/lib/postgresql/data
Ниже приведен файл .env.
USER_UID=1002
USER_GID=1001
DB_TYPE=postgres
DB_HOST=postgres:5432
DB_NAME=gittea
DB_USER=gittea
DB_PASSWD=password12
INSTALL_LOCK=True
APP_NAME=myapp
RUN_MODE=prod
DOMAIN=source.smarticlelabs.com
ROOT_URL=https://source.smarticlelabs.com
SSH_LISTEN_PORT=22
SSH_PORT=2222
Но когда я пытаюсь клонировать репо после добавления моего ключа ssh, я получаю эту ошибку
git clone ssh://git@51.15.245.237:2222/superadmin/testrepo.git
Cloning into 'testrepo'...
ssh: connect to host 51.15.245.237 port 2222: Connection refused
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Как указывали другие, на самом деле это может быть Брандмауэр вопрос.
Чтобы устранить эту проблему, вы сначала должны убедиться, что ваш контейнер действительно работает с docker-compose ps
# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------
server [cmd ...] Up 0.0.0.0:22->2222/tcp
Затем вы должны проверить свой Докер Хост, с которым фактически открыт порт netstat -lpn|grep -i 2222
:
# netstat -lpn|grep -i 2222
tcp6 0 0 :::2222 :::* LISTEN 7216/docker-proxy-c
Это также должно совпадать с местным Докер Брандмауэр хоста с iptables-save|grep -i 2222
:
# iptables-save|grep -i 2222
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p tcp -m tcp --dport 2222 -j MASQUERADE
-A DOCKER ! -i br-0383ea873b82 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 172.18.0.2:2222
-A DOCKER -d 172.18.0.2/32 ! -i br-0383ea873b82 -o br-0383ea873b82 -p tcp -m tcp --dport 2222 -j ACCEPT
Когда все эти проверки положительны, это может быть проблема с вашим Внешний брандмауэр на вашем IP-адресе в Интернете 51.15.245.237
Вы можете проверить это, подключившись с другого хоста в той же сети IntraNet, что и ваш Докер Хост.