dhctl bootstrap бесконечно ждёт SSH-подключения к мастеру

Viewed 27

Запускаю dhctl bootstrap, ВМ в облаке создаются, но dhctl бесконечно ждёт SSH-подключения к мастеру. Обычный ssh с тем же ключом работает.

1 Answers

Частые причины:

  1. Бастион. Псевдонимы из ~/.ssh/config dhctl не использует: бастион задают флагами, в --ssh-bastion-host указывают IP-адрес или DNS-имя. Если --ssh-bastion-user не задан, берётся значение --ssh-user.

    dhctl bootstrap --ssh-user=<user> --ssh-agent-private-keys=/tmp/.ssh/id_rsa \
      --ssh-bastion-host=<адрес-бастиона> --ssh-bastion-user=<user> --config=/config.yml
    

    В Yandex Cloud со схемами WithNATInstance и Standard у узлов нет публичных IP-адресов, а NAT-инстанс dhctl в качестве промежуточного хоста не использует. Нужен бастион или публичный IP-адрес мастера (externalIPAddresses и externalSubnetIDs в masterNodeGroup.instanceClass).

  2. Пользователь образа. Для облачных образов это обычно ubuntu (Ubuntu), debian (Debian), cloud-user (CentOS), а не root: вход под root cloud-init в таких образах обычно закрывает.

  3. Директива Banner в sshd_config. Уберите её на время установки. В Deckhouse Platform до 1.77 можно также попробовать флаг --ssh-modern-mode (встроенный SSH-клиент вместо OpenSSH); начиная с 1.77 этот клиент используется по умолчанию.

  4. Соединения рвутся с Connection closed by ... port 22. Проверьте ограничение MaxStartups в sshd_config на мастере.

  5. VPN на машине с установщиком. Отключите VPN или запускайте контейнер установщика с --network host.

Подробнее в документации: установка Deckhouse.