🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
DevOps

Como Fazer Deploy Remoto via SSH Usando Cloud CLI numa VPS

Descubra como possibilitar deploy seguro e criativo em ambientes de VPS remota via SSH, usando wrappers, rate limit, bloqueios e automação com Cloud CLI e IA. Tutorial completo e passo a passo.

CrazyStack
18 min de leitura
SSHCloud CLIVPSSegurançaDeploy

Por que isso é importante

Saber expor uma VPS de forma controlada via SSH para comandos automatizados, especialmente com Cloud CLI e integração com IA, é o passo definitivo para times de DevOps modernos. Habilitar esse workflow amplia o poder de automatização, acelera tarefas de deploy, habilita experimentos de IA e fortalece o controle de segurança do ambiente. Quem domina essa stack consegue iterar projetos rapidamente, sem comprometer a integridade do servidor.

O Conceito: Deploy Remoto e Seguro Usando SSH e Cloud CLI

O objetivo deste tutorial é mostrar como abrir acesso controlado à sua VPS para que scripts rodem comandos de deploy utilizando Cloud CLI, tudo isso com proteção baseada em usuário dedicado, bloqueios de terminal, wrappers e limitação por requisições. A integração permite gerenciar tasks no servidor usando apenas um comando SSH, enquanto previne riscos, restringe ações maliciosas e garante automação do começo ao fim.

Visão Geral do Desafio

O cenário planteado é real: um ambiente em que qualquer pessoa pode conectar na VPS por SSH usando um usuário limitado, fazer deploy de aplicações - até gerar aplicações via IA no terminal remoto - enquanto toda execução ocorre sob filtros e limitações para evitar ataques. O desafio extra está em montar um "lockdown" que permita a criatividade, mas impeça tentativas de derrubar ou comprometer a VPS.

⚠️Atenção

Qualquer exposição pública de SSH traz riscos sérios. Por isso, cada detalhe de segurança aqui implementado é essencial para proteger recursos, evitar DDoS, abuso de IA e comprometimento do sistema principal.

Requisitos Básicos e Recursos Utilizados

Antes de executar o processo, certifique-se de ter uma VPS ativa (preferencialmente Hostinger pelo painel amigável), permissão de root, Cloud CLI instalado e acesso ao sistema operacional ideal para seu stack (Ubuntu ou Debian puro são recomendados para máxima compatibilidade).

Servidor VPS

Ambiente dedicado Linux com SSH liberado

Cloud CLI

Ferramenta de automação e deployment em cloud

SSH

Canal seguro de conexão e execução

Wrapper Bash

Script para validar e restringir comandos

Passo a Passo: Da VPS em Branco ao Deploy Automatizado

1
Passo 1: Contrate uma VPS com painel prático e recursos adequados (2 vCPU, 8GB RAM, 100GB SSD, 8TB banda ou superior).
2
Passo 2: No painel, escolha instalar imagem limpa do sistema operacional (Ubuntu ou Debian puro, ou use imagem já com Claude code para acelerar).
3
Passo 3: Realize login inicial na VPS via SSH como root e atualize pacotes básicos (apt-get update && apt-get upgrade).
4
Passo 4: Instale o Cloud CLI seguindo a documentação oficial ou artigo do provedor para integração direta.
5
Passo 5: Crie um usuário dedicado (por exemplo, stupid), sem privilégios administrativos e sem acesso a shell padrão.
6
Passo 6: Implemente um script wrapper para filtrar input, limitar comandos permitidos pelo usuário e impedir abertura de shells interativos.
7
Passo 7: Desabilite PTY/Tty via SSH config para o usuário, bloqueando pseudo-terminais e canais paralelos.
8
Passo 8: Configure rate limiting, usando lockdirs ou arquivos state, para restringir tentativas brutas e evitar flood na IA ou nos serviços.
9
Passo 9: Insira regras strictas no sshd_config: ForceCommand apontando para seu wrapper, bloqueios de tunneling, agent forwarding, x11, password login e TCP Forwarding.
10
Passo 10: Teste os fluxos SSH e realize um deploy fictício via comando remoto, validando logs e rate limit. Ajuste as regras se notar brechas.

Pontos Críticos de Segurança no SSH Lockdown

O sucesso da exposição controlada do SSH reside nos detalhes da configuração: bloqueio total de PTY (pseudo-terminal), cap do tamanho de mensagens para evitar abuso de tokens/caracteres pela IA no backend, nenhuma permissão a shell interativo, e uso intensivo de wrappers para interceptar qualquer comando.

ℹ️Cuidados Especiais

Não permita forwarding de agent, TCP, tunneling ou X11. Restrinja login por chave pública (ou IP) e nunca expose SSH padrão para internet sem firewall e rate limit eficiente.

Montando o Wrapper: Proteção, Filtros e Cap de Mensagem

Um wrapper bash bem estruturado serve como guardião do seu servidor: restringe comandos exclusivamente ao esperado; verifica size do input; faz load de environment controlado; aplica rate limit por IP; e impede uso de qualquer shell alternativo ou interprete além do especificado.

⚠️Atenção

Falhar em bloquear PTY e não limitar length de input abre brecha para execução de comandos maliciosos e até para ataques de negação de serviço através da IA ou comunicação interna.

Rate Limit e Autenticação Pública: Como balancear acesso e proteção

Para projetos abertos, quando acesso via public key não é viável para todos, implemente rate limit por IP para mitigar flood. Em contextos privados, restrinja via chave pública individual. Considerar proxy e rotação de IP ajuda a prever ataques, mas geralmente o custo da tentativa será maior que o impacto do serviço, se cuidados forem respeitados.

Exemplo de Configuração Essencial do SSH para Ambiente Seguro

Use no arquivo sshd_config: Disable PasswordAuthentication, PermitTTY no, X11Forwarding no, AllowTcpForwarding no, PermitTunnel no, PermitAgentForwarding no, ForceCommand para seu wrapper, e AuthorizedKeysFile exclusivo para o usuário dedicado. Restrinja o máximo possível.

Dica Técnica

Reload no SSHD sempre que for testar mudanças! Valide cada ajuste com um usuário sem privilégios, via SSH em terminal limpo.

Como conceder acesso seguro para comandos automatizados na VPS

O processo todo foi desenhado visando que qualquer dev (ou IA) consiga rodar comandos de criação e deploy na sua VPS sem acesso a outros recursos do host. O segredo está em delimitar o ambiente com usuário dedicado, wrapper interceptador e bloqueios cada vez mais refinados em cada camada.

Alternativas: SSH Anônimo x SSH Individual (chave pública)

SSH Anônimo com rate limit por IP

Permite que qualquer endereço IP use o sistema via SSH, limitando ataques por quantidade de conexões/minuto.

Prós
  • Facilidade de experimentação pública
  • Acesso imediato sem cadastro
Contras
  • Maior risco de DDoS
  • Exige monitoramento de abuse automático

SSH Individual com chave pública

Restringe o acesso a usuários específicos previamente autorizados.

Prós
  • Segurança elevada
  • Controle preciso de quem executa ações
Contras
  • Acesso menos democrático
  • Onboarding manual para cada usuário

Conclusão: O Poder do Deploy Seguro via SSH, Cloud CLI e IA

Automatizar deploys por SSH combinado com wrappers e Cloud CLI permite testar, estudar e desafiar limites de DevOps sem abrir mão da segurança. Quando bem implementado, há espaço para criatividade (até para testar ataques controlados), aprendizado e evolução técnica. Use sempre ambientes isolados para desafios públicos e mantenha backups do servidor aos experimentos.

Checklist de Implementação

Adquiriu e configurou a VPS em sistema operacional limpo
Instalou e logou no Cloud CLI com privilégios mínimos
Criou usuário dedicado com mínimo de permissões
Implementou wrapper script para filtrar comandos/remover shells interativos
Ajustou sshd_config conforme boas práticas e bloqueios apresentados
Aplicou rate limit de acesso (por IP ou user)
Testou ataques básicos e confirmou proteção ativa
Realizou deploy remoto de aplicação via Cloud CLI sem brechas detectadas

Transforme sua carreira

E foi EXATAMENTE por isso que eu criei um curso de Node.js e React chamado CrazyStack. A minha maior necessidade no início da carreira era alguém que me ensinasse um projeto prático onde eu pudesse não só desenvolver minhas habilidades de dev como também lançar algo pronto para entrar no ar no dia seguinte.

Sabe qual era minha maior frustração? Aplicar conhecimentos teóricos em projetos práticos e reais, mas não encontrar ninguém que me ensinasse COMO fazer isso na prática! Era exatamente a mesma frustração que você deve sentir: acumular informação sem saber como implementar na prática.

Assim como você precisa de estratégias claras e implementação prática para ter sucesso, todo desenvolvedor precisa de um projeto estruturado para sair do teórico e partir para a execução. É como ter todas as peças do quebra-cabeça mas não saber como montá-las - você pode ter conhecimento técnico, mas sem um projeto completo, fica difícil transformar esse conhecimento em resultados concretos.

No CrazyStack, você constrói um SaaS completo do zero - backend robusto em Node.js, frontend moderno em React, autenticação, pagamentos, deploy, tudo funcionando. É o projeto que eu queria ter quando comecei: algo que você termina e pode colocar no ar no mesmo dia, começar a validar com usuários reais e até monetizar.

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo