имхо, ключевой момент - это "машина удалённая".
Как работает интеграция xdebug в IDE:
1) IDE начинает слушать определённый порт,
2) порт (и, при необходимости, хост) передаются в параметры xdebug
3) скрипт стартует, и xdebug подключается к порту.
Соответственно, если удалённая машина не может достучаться до порта (и неважно, xdebug или что-то ещё) - у вас проблема.
Мне docker добавил ещё такую проблему: если в docker-compose указывать биндинг порта, то это означает ,что это докер слушает порт. Значит, порт занят и задействовать его, например, в ssh туннеле не получится.
К сожалению, я это исследование до конца не довёл