Hospedagem Segura — página inicial

Linux e SSH

Como limpar o histórico de comandos do root no Linux pelo SSH

O Bash grava os comandos digitados no arquivo ~/.bash_history. Veja como limpar o histórico inteiro, apagar só a linha que tinha uma senha e impedir que isso aconteça de novo.

  • Por equipe técnica da Hospedagem Segura
  • Atualizado em 10/10/2026
  • 4 min de leitura

Texto do artigo

Neste artigo
  1. Como o histórico funciona
  2. Limpar todo o histórico
  3. Apagar só uma linha
  4. Evitar que um comando entre no histórico
  5. O melhor é não digitar segredos no terminal
  6. E no zsh?
  7. Perguntas frequentes

Toda vez que você sai de uma sessão SSH, o Bash grava no arquivo ~/.bash_history os comandos digitados. Para o root, o arquivo fica em /root/.bash_history. Isso ajuda no dia a dia, mas vira problema quando uma senha, um token ou uma chave de API foram digitados direto no terminal.

Para limpar o histórico inteiro, rode history -c e, na mesma sessão, history -w. Para tirar só uma linha, use history -d com o número dela. Abaixo, o porquê de cada passo, como evitar que um comando seja gravado e o que muda no zsh.

Como o histórico funciona

Durante a sessão, os comandos ficam na memória do shell. O arquivo só é atualizado quando a sessão termina (ou quando você pede). Por isso, apagar o arquivo sem limpar a memória não resolve: ao sair, o Bash grava tudo de novo.

Limpar todo o histórico

Limpe a memória da sessão atual e grave o histórico vazio no arquivo:

history -c
history -w

history -c apaga a lista em memória e history -w sobrescreve o arquivo com ela, que agora está vazia. Se houver outras sessões abertas com o mesmo usuário, elas gravam os próprios comandos ao sair; feche-as antes ou repita o procedimento nelas.

Apagar só uma linha

Quando o problema é um único comando, liste o histórico com a numeração e remova a linha pelo número:

history | tail -n 20
history -d 1042
history -w
Troque 1042 pelo número da linha que contém o dado sensível.

Confira com history | tail se a linha certa saiu. Em versões recentes do Bash também é possível apagar um intervalo, por exemplo history -d 1040-1045.

Evitar que um comando entre no histórico

Com a variável HISTCONTROL valendo ignorespace (ou ignoreboth), comandos que começam com um espaço não são gravados. O padrão muda de um sistema para outro: no Ubuntu, o root e os usuários novos já vêm assim; no Debian, só os usuários criados depois da instalação, não o root; no AlmaLinux, o padrão é ignoredups, que não ignora o espaço. Confira e, se precisar, ative para o seu usuário:

echo $HISTCONTROL
echo 'export HISTCONTROL=ignoreboth' >> ~/.bashrc

Para uma sessão inteira sem histórico, desative a gravação antes de começar. Ao sair, nada daquela sessão vai para o arquivo:

unset HISTFILE

O melhor é não digitar segredos no terminal

  • Prefira programas que pedem a senha de forma interativa, sem exibir o que é digitado.
  • Guarde credenciais em arquivos de configuração com permissão restrita (chmod 600) ou em variáveis de ambiente carregadas de um arquivo protegido.
  • Use autenticação por chave SSH no lugar de senha sempre que possível.
  • Se uma senha ficou no histórico de um servidor compartilhado por mais pessoas, considere que ela vazou: troque a senha, não apenas o histórico.

Histórico não é auditoria

Limpar o histórico remove o registro local de conveniência do shell. Registros de acesso do sistema, como os logs de autenticação, continuam existindo e servem para investigar incidentes.

E no zsh?

O zsh usa o arquivo ~/.zsh_history. Para limpar, esvazie o arquivo e, antes de sair da sessão, rode unset HISTFILE: sem isso, o zsh grava de novo, ao sair, o histórico que ainda está na memória. Para não gravar comandos iniciados com espaço, use setopt HIST_IGNORE_SPACE no ~/.zshrc.

: > ~/.zsh_history
unset HISTFILE

Perguntas frequentes

Qual comando limpa o histórico do terminal no Linux?

No Bash, rode history -c para apagar a lista da sessão e, em seguida, history -w para gravar essa lista vazia no ~/.bash_history. Só um dos dois não basta: o primeiro não mexe no arquivo, e apagar só o arquivo deixa a memória da sessão para ser gravada de novo.

Por que o histórico volta depois que apago o .bash_history?

Porque a sessão aberta ainda guarda os comandos na memória e os grava no arquivo quando termina. Limpe a memória com history -c antes de sair, e repita em outras sessões abertas com o mesmo usuário.

Como apagar só um comando do histórico?

Veja o número da linha com history | tail, apague com history -d seguido do número e grave com history -w. Se havia uma senha no comando, troque também a senha.

Limpar o histórico apaga os registros de acesso do servidor?

Não. O histórico do shell é só uma conveniência do usuário. Os registros de login e de autenticação do sistema continuam existindo e servem para investigar acessos.

Leia também

Servidor Linux com acesso root

No VPS Linux você administra o próprio servidor com acesso root, armazenamento NVMe e IPv4 dedicado.