Невозможно использовать SSH с публичным IP-адресом во время развертывания в конвейере CI/CD

Я настраиваю конвейер CI/CD для своего проекта, и на этапе развертывания мне нужно подключиться по SSH к своему серверу, используя публичный IP-адрес. Однако я столкнулся с проблемой, когда SSH-соединение прерывается при использовании публичного IP-адреса. Вот моя настройка:

  • Публичный IP: xx.xxx.xxx.xxx
  • Локальный IP: 192.168.31.234
  • SSH порт: 22 (как внутренний, так и внешний)

Что я пробовал: Доступ к локальной сети: SSH отлично работает с локальным IP (192.168.31.234) с помощью команды:

  • ssh sourov@192.168.31.234

Настройка переадресации портов на моем маршрутизаторе:

  • Внешний порт: 22
  • Внутренний IP-адрес: 192.168.31.234
  • Внутренний порт: 22

Настройки брандмауэра: UFW настроен на разрешение SSH (порт 22) как на IPv4, так и на IPv6: bash

22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)

ssh sourov@xx.xxx.xxx.xxx

Приводит к ошибке: ssh: connect to host 45.120.115.234 port 22: No route to host


on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Check out repository
        uses: actions/checkout@v3
      
      - name: Set up Python
        uses: actions/setup-python@v3
        with:
          python-version: '3.12'
      
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      
      - name: Run Django migrations
        run: python manage.py migrate
        working-directory : ./dining_manager
      
      - name : Run Django test
        run : python manage.py test
        working-directory : ./dining_manager

  deploy:
    runs-on: ubuntu-latest
    needs: test
    if: github.ref == 'refs/heads/master'
    
    steps:
      - name: Check out the code
        uses: actions/checkout@v3

      - name: Test SSH Connectivity
        run: |
          ssh -o StrictHostKeyChecking=no sourov@xx.xxx.xxx.xxx "echo 'SSH connection successful'"

      
      - name: Copy files to the server
        uses: appleboy/scp-action@v0.1.1
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          target: /var/www/dajngo_graphql
          source: ./ 
          port: 22                
          timeout: "30s"                           

      - name: Execute deploy commands over SSH
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/dajngo_graphql
            source myenvenv/bin/activate
            cd /var/www/django_graphql/dining_manager
            python manage.py migrate
            python manage.py collectstatic --noinput
            sudo systemctl restart your-gunicorn-service
        ```
Вернуться на верх