Назад | Перейти на главную страницу

SSH-соединение не работает в gitea

У меня есть настройка 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, что и ваш Докер Хост.