web-dev-qa-db-ja.com

SSH接続がGiteaで機能しない

私はdocker-composeを使用してgiteaをセットアップしましたが、私のマシンの外部SSHポートはsshd_configで設定した4444です

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://[email protected]: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.
1
Shaz Hemani

他の人が指摘したように、これは実際にはファイアウォールの問題である可能性があります。
これをトラブルシューティングするには、まず、コンテナが実際にdocker-compose psで実行されていることを確認する必要があります

# docker-compose ps
 Name                Command               State           Ports         
-------------------------------------------------------------------------
server               [cmd ...]             Up              0.0.0.0:22->2222/tcp

次に、Dockerホストで、ポートが実際にnetstat -lpn|grep -i 2222で公開されていることを確認する必要があります。

# netstat -lpn|grep -i 2222
tcp6       0      0 :::2222                 :::*                    LISTEN      7216/docker-proxy-c

これは、iptables-save|grep -i 2222を使用したローカルDockerホストファイアウォールとも一致する必要があります。

# 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

Dockerホストと同じイントラネット上の別のホストから接続することで確認できます。

1