O que é SSH? Entenda o protocolo e suas técnicas de criptografia
O SSH, ou Secure Shell, é um protocolo criptografado usado para acessar e gerenciar sistemas remotos pela internet, como um servidor. Ele funciona de forma parecida com o Telnet, mas adiciona uma camada de segurança que autentica o host e protege a transferência de dados.
Na prática, o SSH permite que o computador local acesse um usuário específico em outro sistema remoto. Essa conexão pode ser feita diretamente pelo terminal com o comando ssh ou usando programas como o PuTTY.
O protocolo usa três tipos de criptografia: simétrica, assimétrica e hashing. Cada uma protege os dados trocados entre o computador local e o remoto de maneira diferente.
Com base nesses métodos, o SSH cria a conexão no modelo cliente-servidor, em que ambos concordam em usar um par de chaves correspondente para criptografar a comunicação.
O SSH também pode autenticar o usuário de duas formas: com nome de usuário e senha ou com chaves SSH. Em ambos os casos, as informações são transmitidas por um túnel criptografado, o que impede que terceiros interceptem os dados.
Nos próximos tópicos, você vai entender como o SSH funciona, para que serve, como a porta SSH é usada na conexão e quais são as principais técnicas de criptografia envolvidas.
Conteúdo
O que é SSH?
O SSH, também conhecido como Secure Shell, é um protocolo de administração remota que permite acessar, controlar e modificar servidores pela internet.
Ele foi criado como uma alternativa segura ao Telnet, que não possui criptografia. O SSH usa técnicas criptográficas para garantir que toda a comunicação entre o cliente e o servidor remoto aconteça de forma protegida. Assim, é possível autenticar o usuário, enviar comandos e receber as respostas do servidor por meio de um canal totalmente criptografado.
O exemplo abaixo mostra um terminal típico com uma conexão SSH ativa. Usuários de Linux e macOS podem acessar o servidor remoto diretamente pelo terminal, enquanto quem usa Windows pode recorrer a aplicativos como o PuTTY. Depois de conectar pela porta SSH, você pode executar comandos como se estivesse operando o computador remoto pessoalmente.

Como o SSH funciona?
Se você estiver usando Linux ou Mac, então usar SSH é muito simples. Se você usar o Windows, você precisará utilizar um clienteSSH para abrir conexões desse tipo. O cliente SSH mais popular é o PuTTY.
Para usuários de Mac e Linux, abra o seu programa de terminal e siga o procedimento abaixo.
O comando SSH consiste em 3 partes distintas:
ssh {usuario}@{host}
O comando ssh informa ao sistema que você deseja abrir uma conexão segura e criptografada com outro computador por meio do protocolo Secure Shell.
No comando, {usuario} representa o nome da conta que você quer acessar — por exemplo, o root, que é o usuário administrador com permissão total para alterar qualquer parte do sistema. Já {host} indica o computador remoto que você quer acessar, podendo ser um endereço IP (como 244.235.23.19) ou um nome de domínio (como www.xyzdomain.com).
Ao pressionar Enter, o sistema solicitará a senha do usuário especificado. Enquanto você digita, nada aparece na tela, mas a senha está sendo transmitida de forma criptografada pela porta SSH. Depois de inserir a senha e pressionar Enter novamente, a conexão será estabelecida e você verá o terminal remoto.
Se você quiser saber mais sobre alguns comandos SSH, encontre-os aqui.
Por que usar SSH?
O SSH é usado para gerenciar sistemas remotos aos quais você não tem acesso físico — algo essencial para quem administra um site ou aplicativo hospedado em provedores como a Hostinger, onde a infraestrutura fica fora do seu ambiente local.
Embora a maioria dos provedores de hospedagem ofereça um painel de controle para gerenciar o servidor, ele costuma ser limitado a tarefas básicas. Para operações mais avançadas, é preciso interagir diretamente com o servidor, o que só é possível usando o terminal remoto por meio do SSH.
O SSH se destaca entre outros protocolos por causa da criptografia e da segurança que oferece. Isso é fundamental, já que o gerenciamento remoto de servidores envolve o envio de informações sensíveis, como chaves de API e tokens de autenticação.
Além do acesso remoto, o SSH também permite transferir arquivos com segurança por meio dos protocolos SFTP (Secure File Transfer Protocol) e SCP (Secure Copy Protocol). Outra função importante é o redirecionamento de porta, também conhecido como túnel SSH, que permite criar conexões seguras com serviços que normalmente não usam criptografia.
Quais são as técnicas de criptografia usadas no SSH?
A vantagem significativa oferecida pelo SSH sobre seu antecessor está no uso da criptografia para transmitir de forma segura, uma informação entre o cliente e o servidor de hospedagem. O host se refere ao servidor remoto que você está tentando acessar, enquanto o cliente é o computador que você está usando para acessar o servidor.
O SSH utiliza três tipos de tecnologias de criptografia para proteger essa comunicação:
- Criptografia simétrica
- Criptografia assimétrica
- Hashing
Criptografia simétrica
A criptografia simétrica é um método em que uma mesma chave secreta é usada tanto para criptografar quanto para descriptografar as mensagens trocadas entre o cliente e o servidor. Ou seja, quem tiver essa chave poderá ler os dados transmitidos.

Por isso, esse tipo de criptografia também é conhecido como chave compartilhada ou segredo compartilhado. Normalmente, há apenas uma chave usada por ambas as partes — ou, em alguns casos, um par de chaves em que uma pode ser facilmente calculada a partir da outra.
Durante uma sessão SSH, a chave simétrica é responsável por criptografar toda a comunicação entre cliente e servidor. Ambos geram essa chave com base em um método acordado, e o valor final nunca é revelado a terceiros.
A criação dessa chave é feita por meio de um algoritmo de troca de chaves, que torna o processo extremamente seguro. O segredo nunca é transmitido diretamente entre as máquinas — em vez disso, os dois computadores compartilham apenas dados públicos e os utilizam para calcular a chave de forma independente. Mesmo que alguém intercepte esses dados, não será capaz de descobrir a chave, já que o algoritmo usado não é divulgado.
É importante lembrar que essa chave secreta é exclusiva de cada sessão SSH e é gerada antes mesmo da autenticação do usuário. Depois disso, todos os pacotes trocados entre o cliente e o servidor são criptografados com ela — inclusive a senha digitada no terminal, garantindo que suas credenciais fiquem protegidas de interceptações na rede.
Existem vários tipos de cifras de criptografia simétrica, como AES (Advanced Encryption Standard), CAST128 e Blowfish. Antes de estabelecer uma conexão segura pela porta SSH, o cliente e o servidor negociam qual cifra será usada, com base nas opções que ambos suportam.
Por exemplo, se duas máquinas Ubuntu 14.04 LTS se conectarem via SSH, elas usarão aes128-ctr como cifra padrão para proteger a comunicação.
Criptografia assimétrica
Diferente da criptografia simétrica, a criptografia assimétrica utiliza duas chaves distintas para criptografar e descriptografar as mensagens: uma chave pública e uma chave privada. Juntas, elas formam o chamado par de chaves público-privado.

A chave pública pode ser usada por qualquer pessoa para criptografar uma mensagem, mas apenas o destinatário que possui a chave privada correspondente poderá descriptografá-la — e o contrário também é verdadeiro. Essas chaves são compostas por longas sequências de números e símbolos aparentemente aleatórios, mas estão matematicamente relacionadas por algoritmos complexos.
Por exemplo, para autenticar o remetente, uma mensagem pode ser criptografada com a chave privada dele. Assim, apenas a chave pública correspondente poderá descriptografá-la, comprovando que a mensagem veio da fonte correta. Todo esse processo acontece de forma automática — não é necessário fazer nada manualmente.
Apesar do que muitos imaginam, a criptografia assimétrica não é usada para criptografar toda a sessão SSH. Ela atua apenas durante o algoritmo de troca de chaves da criptografia simétrica. Antes de iniciar a conexão segura pela porta SSH, o cliente e o servidor geram pares de chaves temporários (pública e privada) e os utilizam para criar, de forma segura, a chave secreta compartilhada que será usada na comunicação simétrica.
Depois que essa comunicação segura é estabelecida, o servidor usa a chave pública do cliente para gerar um desafio e enviá-lo de volta. Se o cliente conseguir descriptografar a mensagem corretamente, isso confirma que ele possui a chave privada necessária — e a sessão SSH é iniciada.
Hashing
O hashing unidirecional é outra forma de criptografia usada nas conexões SSH. Diferente das técnicas anteriores, ele não é feito para ser descriptografado. Em vez disso, o algoritmo gera um valor único e de tamanho fixo para cada entrada, sem seguir um padrão previsível. Isso torna o processo praticamente impossível de ser revertido.
Gerar um hash criptográfico a partir de uma entrada é simples — mas o contrário, descobrir a entrada original a partir do hash, é impossível. Isso significa que, se o cliente possuir a entrada correta, ele pode gerar o hash correspondente e comparar os valores para verificar se está de fato usando os dados certos.

O SSH utiliza hashes para verificar a autenticidade das mensagens, por meio dos chamados HMACs (Hash-based Message Authentication Codes). Esse método garante que os comandos transmitidos entre cliente e servidor não sejam alterados durante a comunicação pela porta SSH.
Durante o processo de configuração da criptografia simétrica, também é escolhido um algoritmo de autenticação de mensagens. A seleção segue a mesma lógica da escolha da cifra de criptografia, como explicado anteriormente.
Cada mensagem transmitida precisa conter um MAC, que é calculado usando a chave simétrica, o número de sequência do pacote e o conteúdo da mensagem. Esse valor é enviado fora dos dados criptografados, como a parte final do pacote de comunicação, reforçando a segurança da sessão SSH.
Como o SSH usa técnicas de criptografia para proteger conexões?
Para garantir uma conexão segura, o SSH usa o modelo cliente-servidor, que autentica os dois sistemas remotos e aplica diferentes técnicas de criptografia para proteger os dados trocados entre eles.
Por padrão, o SSH opera na porta TCP 22, embora essa porta SSH possa ser alterada se necessário. O servidor fica escutando nessa porta (ou em outra configurada para o SSH), aguardando conexões de entrada. Quando um cliente tenta se conectar, o servidor autentica o usuário e, caso a verificação seja bem-sucedida, abre o ambiente de terminal correspondente.

O cliente inicia a conexão SSH com um handshake TCP — um tipo de saudação digital — para estabelecer uma comunicação segura. Durante esse processo, o cliente verifica se a identidade do servidor corresponde aos registros anteriores (armazenados, por exemplo, em um arquivo de chave RSA) e envia suas credenciais para autenticação.
Nesse caso, há dois estágios para se estabelecer uma conexão. Primeiro, ambos os sistemas precisam concordar com uma criptografia padrão para proteger as comunicações futuras, e segundo, o usuário precisa autenticar as duas. Se as credenciais se igualarem, então o usuário terá acesso garantido.
Ao tentar se conectar, o servidor apresenta os protocolos e versões de criptografia que suporta. Se o cliente tiver suporte aos mesmos, ambos entram em acordo e iniciam a comunicação com o protocolo aceito. Nesse momento, o servidor também envia sua chave pública assimétrica, usada pelo cliente para verificar a autenticidade do host.
Depois disso, cliente e servidor executam o algoritmo de troca de chaves Diffie-Hellman, que permite gerar uma chave simétrica compartilhada. Essa chave é usada para criptografar toda a sessão SSH.
De forma simplificada, o processo funciona assim:
- Tanto o cliente como o servidor concordam na utilização de um número primário extenso, do jeito que não haja nenhum fator em comum. Esse primeiro valor de número é também conhecido como seed value, ou valor inicial.
- Em seguida, as duas partes concordam em um mecanismo de codificação comum para gerar mais um padrão de valores que manipulam os valores iniciais e os algoritmos na raiz. Estes mecanismos são também conhecidos como AES (Padrão de Criptografia Avançada).
- Ambas as partes geram de forma independente um número primário. Isso é usado na interação de chaves privadas secretas.
- Esta nova chave privada é gerada com um número compartilhado e a criptografia de um algoritmo (e.g. AES), é usada para computar uma chave pública distribuída a outro computador.
- As partes então usam uma chave privada personificada, a chave pública compartilhada da outra máquina e o número original para criar uma chave compartilhada final. Esta chave é calculada de forma independente por ambos os computadores, mas criará a mesma chave de criptografia em ambos os lados.
- Agora que ambos os lados tem uma chave compartilhada, é possível criar uma criptografia simétrica para todas a sessão de SSH. A mesma chave pode ser usada para criptografar e descriptografar mensagens (leia: criptografia simétrica na seção).
Agora que a criptografia de segurança simétrica foi realizada, o usuário precisa ser autenticado.
Como o SSH autentica usuários e garante o acesso seguro?
A última etapa antes de conceder acesso por meio do protocolo SSH é a autenticação do usuário. Na maioria dos casos, isso é feito com um nome de usuário e senha. O usuário informa as credenciais, que são transmitidas por um túnel criptografado, impedindo que terceiros as interceptem durante a conexão pela porta SSH.
Embora as senhas sejam criptografadas, não é o método mais seguro. Isso porque bots automatizados podem usar ataques de força bruta para adivinhar senhas fracas ou padrões comuns e, assim, obter acesso indevido ao servidor. Por esse motivo, a prática mais recomendada é utilizar pares de chaves SSH (SSH Key Pairs).
Essas chaves funcionam em pares — uma pública e uma privada — e permitem autenticar o usuário sem precisar digitar senha. Elas podem ser geradas diretamente pelo terminal do sistema ou com ferramentas como o PuTTY, e depois adicionadas tanto ao cliente quanto ao servidor.
Depois de configuradas, é possível ativar o login sem senha (passwordless SSH), em que o par de chaves substitui completamente a autenticação por senha, oferecendo uma conexão mais prática e segura.

Principais pontos
O protocolo SSH permite gerenciar seus servidores remotos com mais eficiência, garantindo uma conexão segura e contínua. Se você tem um site ou aplicativo hospedado remotamente, dominar essa ferramenta pode economizar tempo e simplificar muito o trabalho diário.
Como é possível executar comandos diretamente via SSH para alterar diferentes aspectos do servidor, esse método oferece mais flexibilidade do que usar apenas um painel de controle. Além disso, é mais seguro e confiável do que protocolos antigos de acesso remoto, como o Telnet.
O SSH tem diversas aplicações práticas. Ele pode ser usado em vários ambientes e ajustado de acordo com suas preferências — desde a configuração da porta SSH até a escolha dos métodos de autenticação. Para se familiarizar, o ideal é testar os principais comandos SSH e ver como funcionam na prática.
Se você é cliente da Hostinger, pode acessar qualquer plano de hospedagem VPS usando o SSH para gerenciar seu site de forma segura. Também é possível utilizar o terminal do navegador, que oferece uma experiência semelhante à linha de comando SSH diretamente no seu navegador, sem precisar instalar nada.
Comentários
June 21 2022
Material de excelência. Gosto muito do seu conteúdo.
November 21 2022
Material apresentado são verdadeiros cursos, conteúdos direto ao ponto de grande valor aos desenvolvedores. Parabéns a todos que contribuem com este aprendizado.
December 03 2022
Obrigado, Luiz! Pode contar com a gente sempre! ?