## Заголовок **[cephadm/bootstrap] Bootstrap падает на `orch host add`, если SSH на ноде не на 22 (custom port 10225)** ## TL;DR `cephadm bootstrap` во время установки пытается добавить bootstrap-хост в orchestrator через SSH на **порт 22**. Если SSH слушает **10225**, bootstrap ломается с ошибкой `Can't communicate with remote host ... Connect call failed (ip, 22)`. ## Контекст - Компонент: **Cephadm / ceph orch (orchestrator backend: cephadm)** - ОС: Debian 13 (trixie), VM (Proxmox) - SSH: **sshd слушает 10225**, порт 22 закрыт/не слушает - Ceph: `cephadm 18.2.7` (reef), `ceph-common 18.2.7` - Сеть: `192.168.0.0/24`, bootstrap mon-ip: `192.168.0.102` ## Шаги воспроизведения 1. На ноде включить SSH только на кастомном порту: - `Port 10225` - порт 22 не слушает/закрыт 2. Запустить bootstrap: ```bash cephadm bootstrap \ --mon-ip 192.168.0.102 \ --initial-dashboard-user admin \ --initial-dashboard-password password \ --allow-fqdn-hostname ``` 3. Дождаться шага добавления хоста в orchestrator. ## Ожидаемое - Bootstrap завершён успешно. - Bootstrap-нода добавлена в `ceph orch host ls`. - `ceph -s` и `ceph orch ps` работают. ## Фактическое - Bootstrap прерывается на добавлении bootstrap-хоста в orchestrator: - `Error EINVAL: Can't communicate with remote host ...` - `Connect call failed ('192.168.0.102', 22)` - Кластер остаётся в “полуразвернутом” состоянии и требует cleanup через `cephadm rm-cluster`. ## Логи / доказательства Команда: ```bash cephadm bootstrap \ --mon-ip 192.168.0.102 \ --initial-dashboard-user admin \ --initial-dashboard-password password \ --allow-fqdn-hostname ``` Фрагмент вывода: ```text Generating ssh key... Wrote public SSH key to /etc/ceph/ceph.pub Adding key to root@localhost authorized_keys... Adding host dev-kyiv01-vm-ceph-main-01... ... Error EINVAL: Can't communicate with remote host `192.168.0.102` [Errno 111] Connect call failed ('192.168.0.102', 22) ``` Проверки, подтверждающие причину: ```bash ss -lntp | grep sshd # показывает слушает 10225, нет :22 nc -vz 192.168.0.102 22 # refused/failed nc -vz 192.168.0.102 10225 # ok ``` ## Root cause (гипотеза/факт) - Факт: `cephadm bootstrap` внутри запускает `ceph orch host add ` для bootstrap-ноды и пытается достучаться до неё по SSH на **22/tcp**. - При SSH на 10225 соединение на 22 не устанавливается → bootstrap падает. ## Влияние - Частота: **always**, если sshd не слушает 22. - Impact: - невозможно быстро поднять кластер “из коробки” при custom ssh port - остаются артефакты “битого” кластера (нужен ручной purge) ## Workaround 1. Временно открыть/включить SSH на 22 в mgmt-сети ## План фикса / идеи - Попробовать bootstrap/оркестратор с явной настройкой SSH порта через ssh_config для cephadm (custom port 10225): - подготовить отдельный ключ и `ssh_config` с `Port 10225` - прокинуть его в bootstrap (например через параметры вида `--ssh-config`, `--ssh-private-key/--ssh-public-key`, `--ssh-user` — зависит от версии/пакета) - после поднятия закрепить ssh_config для cephadm module (чтобы `ceph orch host add` всегда использовал 10225) - Если “быстро и надёжно” не выходит — принять стандарт: **внутри mgmt/VPN оставить 22**, с firewall allowlist (а наружу не публиковать вообще), а 10225 использовать только там, где реально нужно.