vps-linux/Artigo

    Configurar chave SSH na VPS

    Autenticação por chave SSH é mais segura que senha por dois motivos: a chave privada nunca trafega pela rede (só a pública fica no servidor) e é computacionalmente impossível adivinhar por força bruta. Configurar chaves SSH é o primeiro passo de segurança em qualquer VPS nova — e elimina a inconveniência de digitar senha a cada acesso.

    Gerar o par de chaves no seu computador

    O par de chaves é gerado localmente — a chave privada fica no seu computador, a pública vai para a VPS. Nunca compartilhe a chave privada:

    bash
    # Gerar chave Ed25519 (mais moderna e segura)
    ssh-keygen -t ed25519 -C "sua@email.com"
    # Quando perguntar onde salvar: pressione Enter (padrão ~/.ssh/id_ed25519)
    # Defina uma passphrase (recomendado) ou deixe vazia
    
    # Alternativa: RSA 4096 (maior compatibilidade com sistemas antigos)
    ssh-keygen -t rsa -b 4096 -C "sua@email.com"
    
    # Ver as chaves geradas
    ls ~/.ssh/
    # id_ed25519       (chave PRIVADA — nunca compartilhe)
    # id_ed25519.pub   (chave PÚBLICA — vai para a VPS)
    
    # Ver o conteúdo da chave pública
    cat ~/.ssh/id_ed25519.pub
    Dica
    A passphrase protege a chave privada localmente — mesmo se alguém copiar o arquivo, não consegue usar sem a passphrase. Use ssh-agent para não precisar digitá-la a cada conexão.

    Copiar a chave pública para a VPS

    Com a chave gerada, copie a chave pública para o servidor. O ssh-copy-id automatiza isso com segurança:

    bash
    # Método 1: ssh-copy-id (mais simples — requer senha por enquanto)
    ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@IP_DA_VPS
    
    # Método 2: manual (se ssh-copy-id não estiver disponível)
    # Na VPS, como root ou o usuário de destino:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "CONTEUDO_DA_CHAVE_PUBLICA" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
    # Método 3: via painel Runstack
    # Settings → SSH Keys → Add Key
    # Cole o conteúdo de ~/.ssh/id_ed25519.pub
    # A chave será adicionada automaticamente em novas VPS
    Dica
    O arquivo authorized_keys pode conter múltiplas chaves públicas (uma por linha) — útil para dar acesso a vários computadores ou membros da equipe.

    Testar e configurar o SSH config local

    Após copiar a chave, teste o login e configure um alias no arquivo ~/.ssh/config para simplificar o acesso:

    bash
    # Testar login com chave (não deve pedir senha da VPS)
    ssh usuario@IP_DA_VPS
    
    # Configurar alias no ~/.ssh/config (no seu computador local)
    cat >> ~/.ssh/config << 'EOF'
    
    Host runstack-prod
        HostName IP_DA_VPS
        User deploy
        IdentityFile ~/.ssh/id_ed25519
        Port 22
    
    Host runstack-dev
        HostName IP_DA_VPS_2
        User deploy
        IdentityFile ~/.ssh/id_ed25519
    EOF
    
    # Agora conecte simplesmente com:
    ssh runstack-prod

    Desabilitar autenticação por senha no servidor

    Com a chave funcionando, desabilite a autenticação por senha para bloquear ataques de força bruta:

    bash
    # Na VPS, editar /etc/ssh/sshd_config
    sudo nano /etc/ssh/sshd_config
    
    # Localizar e alterar as linhas:
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    # AuthorizedKeysFile .ssh/authorized_keys
    # PermitRootLogin prohibit-password
    
    # Ou fazer via sed:
    sudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
    sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
    
    # Testar a configuração antes de recarregar
    sudo sshd -t && echo "Configuração OK"
    
    # Recarregar o SSH (sem derrubar sessões ativas)
    sudo systemctl reload sshd
    Atenção
    Execute sudo sshd -t antes de recarregar — erros de sintaxe no sshd_config com reload podem tornar o SSH inacessível. Mantenha a sessão atual aberta enquanto testa o login em outra janela.

    Gerenciar múltiplas chaves e revogar acesso

    Para equipes, cada membro tem sua chave pública no authorized_keys. Revogar acesso é simples:

    bash
    # Ver todas as chaves autorizadas
    cat ~/.ssh/authorized_keys
    
    # Cada linha é uma chave: "tipo chave comentario"
    # Ex: ssh-ed25519 AAAAC3Nza... joao@empresa.com
    #     ssh-ed25519 AAAAC3Nzb... maria@empresa.com
    
    # Revogar acesso: remover a linha da chave do usuário
    # Usando grep para encontrar e sed para remover:
    sed -i '/joao@empresa.com/d' ~/.ssh/authorized_keys
    
    # Forçar desconexão de sessões ativas do usuário revogado
    # (verificar PID com 'who' e matar com 'kill')
    who
    sudo pkill -u joao   # se o usuário tiver conta no sistema
    Dica
    Para equipes maiores, considere usar um bastion host (jump server) ou uma solução centralizada de gestão de chaves como HashiCorp Vault ou AWS Systems Manager Session Manager.

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes