Boa! Concordo.
Se houver IP fixo, liberar a porta 22 somente para o IP administrativo no firewall da própria cloud é ainda melhor, porque o tráfego indesejado nem chega ao servidor.
Para IP dinâmico, essa automação via API também é uma solução interessante. Só acrescentaria o cuidado de usar um token com permissão mínima, restrito apenas à alteração daquela regra de firewall, para não transformar o script em outro ponto de risco.
Nesse cenário, eu vejo as camadas mais ou menos assim:
Firewall da cloud com allowlist de IP → chave SSH Ed25519 → PermitRootLogin no → PasswordAuthentication no → Fail2ban como camada adicional.
E trocar a porta 22 acaba sendo mais redução de ruído de bot do que uma medida real de segurança.