Factorio Руководство

RCON для Factorio: закрытый доступ через SSH

Ограничьте RCON Factorio локальным интерфейсом и подключайтесь к нему через SSH-туннель.

RCON для Factorio: закрытый доступ через SSH

Оставьте административный порт Factorio доступным только локально на сервере, а для удалённых команд поднимайте SSH-туннель. Так можно проверить игроков и сохранить фабрику, не открывая административный интерфейс всему интернету.

Пример рассчитан на работающий Linux headless server, доступ по SSH и право менять параметры запуска. RCON использует отдельное TCP-соединение. Игровой UDP-порт, обычно 34197, — другой сервис. Успешная команда RCON ещё не доказывает, что игроки могут подключиться к миру.

Управляющий TCP-канал идёт внутри SSH; игровой UDP-порт остаётся отдельным.

Привяжите административный порт к loopback#

Сохраните текущую конфигурацию запуска и проверьте путь к сохранению. В согласованное окно обслуживания добавьте к существующим аргументам:

text
--rcon-bind 127.0.0.1:27015
--rcon-password REPLACE_WITH_A_DISTINCT_RANDOM_SECRET

Это фрагмент аргументов, а не полная команда запуска. Замените пример пароля в конфигурации сервиса; сохраните прежние параметры мира, игрового порта, модов и настроек. Формат описан в справочнике параметров Factorio. Если установленная версия отличается, сверьтесь с её собственным --help.

Для RCON задайте отдельный случайный пароль, отличающийся от пароля входа игроков. Ограничьте доступ к конфигурации запуска владельцем сервиса и администраторами. Не вставляйте настоящий секрет в историю оболочки или переписку с поддержкой. Даже закрытый unit-файл не скрывает пароль в аргументах от пользователей, которые могут просматривать этот процесс. Учитывайте права учётных записей на конкретном хосте.

Перезапустите сервер штатным менеджером сервиса и проверьте сокет на серверной машине:

bash
sudo ss -ltnp 'sport = :27015'

Нужны адрес 127.0.0.1:27015 и процесс именно этого экземпляра Factorio. Привязка к 0.0.0.0 или [::] не соответствует выбранной схеме. Сначала исправьте фактические аргументы запуска: дополнительное открытое правило firewall адрес привязки не изменит.

В Docker loopback контейнера относится к самому контейнеру. SSH-туннель на хосте не попадёт туда через loopback хоста. Нужна осознанная публикация порта только на loopback хоста с доступным слушателем внутри контейнера либо административный процесс в его сети. Не переносите параметры прямой установки в контейнерную обёртку без проверки.

Поднимите туннель со своего компьютера#

Следующую команду запускают на компьютере администратора. Замените SSH-пользователя и адрес; 203.0.113.10 — адрес для документации:

bash
ssh -N -o ExitOnForwardFailure=yes \
  -L 127.0.0.1:27016:127.0.0.1:27015 \
  admin@203.0.113.10

Первый loopback относится к вашему компьютеру, второй — к месту назначения со стороны SSH-сервера. Локальный порт 27016 служит входом в туннель. Оставьте SSH-сессию открытой на время работы. При первом подключении сверьте ключ хоста по доверенному каналу; неожиданную замену ключа сначала выясните.

Документация OpenSSH описывает локальное перенаправление. ExitOnForwardFailure помогает заметить, что слушатель туннеля не удалось создать, но не гарантирует последующий ответ Factorio. Если локальный 27016 уже занят, выберите свободный порт и укажите его в RCON-клиенте. Останавливать чужой процесс ради примера не нужно.

Подключитесь с закрытой конфигурацией клиента#

Нужен клиент с поддержкой RCON Factorio. Например, у проекта сообщества gorcon/rcon-cli исполняемый файл называется rcon. Скачайте проверенный релиз для своей платформы и посмотрите его справку. Это отдельная программа, а не часть Factorio.

Создайте rcon.yaml вне общих каталогов и репозитория. В Linux/macOS ограничьте доступ владельцем файла через права 600; в Windows задайте аналогичное ограничение через ACL. Пример содержимого:

yaml
default:
  address: "127.0.0.1:27016"
  password: "REPLACE_WITH_THE_SERVER_RCON_SECRET"

Приватно замените заглушку паролем сервера и из этого каталога отправьте команду чтения:

bash
rcon -c ./rcon.yaml "/players online"

Проверьте, что ответ пришёл от нужного экземпляра. Затем при необходимости запросите сохранение:

bash
rcon -c ./rcon.yaml "/server-save"

Перед остановкой сервиса или копированием данных дождитесь в серверном журнале завершения записи. Справочник консоли отделяет обычное администрирование от Lua-команд. Для проверки связи /c не нужен: скриптовые команды могут отключить достижения в сохранении.

Проверяйте слой, на котором возникла ошибка#

Отказ локального соединения — повод проверить, открыт ли SSH-туннель и совпадает ли порт клиента. Ошибка перенаправления SSH при подключении клиента указывает на удалённую часть: проверьте серверный слушатель и его сетевое пространство. Ошибка аутентификации означает, что RCON-узел найден, но нужно сверить экземпляр и пароль. Если авторизация прошла, а команда отвергнута, проверяйте её синтаксис и права, а не открывайте новые порты.

Закончив работу, закройте туннель. При раскрытии секрета замените его в параметрах запуска и у всех допущенных клиентов, выполните штатный перезапуск и повторите проверку. Из диагностических материалов уберите пароли. Для управления собственной инфраструктурой через общий интерфейс можно посмотреть возможности Nexardo; конкретный экземпляр и путь административного подключения всё равно нужно проверить.

Источники#