Você aluga um pequeno servidor na nuvem, e o e-mail de boas-vindas traz três informações: um endereço IP, um nome de usuário e a linha "Porta SSH: 22". Ou o manual de um dispositivo de armazenamento da sua rede doméstica manda abrir um terminal e digitar ssh admin@192.168.1.50. Os dois esperam a mesma coisa: que você entre nessa máquina por SSH e trabalhe na linha de comando dela como se estivesse sentado na frente.
Este artigo explica o que é SSH, o que acontece quando você se conecta e como se conectar pelo Windows, macOS e Linux. Depois vêm a pergunta da chave de host, chaves SSH versus senhas, túneis, a diferença entre SSH, TLS e uma VPN, e quando o SSH pode fazer o papel de um proxy.
O que é SSH?
SSH, sigla de Secure Shell, é um protocolo de rede que dá a você uma linha de comando em um computador remoto por uma conexão criptografada. Um shell é o programa que lê os comandos que você digita e os executa, como o Bash no Linux ou o PowerShell no Windows; o SSH leva essa conversa pela rede para que ninguém no meio do caminho possa lê-la ou alterá-la.
Dois programas participam. O cliente SSH roda no seu computador e inicia a conexão; o servidor SSH, um programa em segundo plano geralmente chamado sshd, roda na máquina remota e escuta por padrão na porta TCP 22. A RFC 4251, documento de arquitetura da versão atual do protocolo, descreve o SSH como um protocolo para login remoto seguro e outros serviços de rede seguros sobre uma rede insegura.
A mesma conexão criptografada também pode copiar arquivos, executar um único comando ou transportar outras conexões de rede, que é o que faz um túnel SSH. Ferramentas mais antigas, como o Telnet, enviam tudo, inclusive senhas, como texto legível; o SSH faz o mesmo trabalho com criptografia.
Como funciona uma conexão SSH?
Uma conexão SSH é montada em uma ordem fixa: os dois lados combinam a criptografia, o servidor prova quem é e só então você faz login. É isto que acontece depois de ssh user@server.example:
- Conexão TCP. Seu cliente se conecta ao servidor, na porta 22, a menos que você indique outra.
- Troca de versões. Cada lado envia uma linha que começa com
SSH-2.0-e informa o nome do seu software. - Troca de chaves. Os dois lados listam os algoritmos que aceitam, escolhem alguns em comum e calculam o mesmo segredo sem nunca enviá-lo. As chaves de sessão que criptografam tudo daqui em diante vêm desse segredo.
- Autenticação do servidor. O servidor assina o resultado com a sua chave de host privada. Seu cliente confere a assinatura e compara a chave com a que guardou antes, ou pergunta a você se o servidor for novo.
- Autenticação do usuário. Você faz login dentro da conexão criptografada, com uma senha ou provando que tem uma chave SSH.
- Canais. Seu shell, as transferências de arquivos e as portas encaminhadas funcionam como canais separados dentro dessa única conexão.
A RFC 4253, especificação da camada de transporte, define os passos 1 a 4 e registra a porta 22 como a porta atribuída ao SSH. Como cada conexão recebe chaves de sessão novas, alguém que grave o seu tráfego hoje e roube a chave de host do servidor depois continua sem conseguir descriptografar a gravação.
Como se conectar a um servidor com SSH?
Você digita ssh, o nome de usuário no servidor, um @ e o endereço do servidor, e depois faz login quando for solicitado:
ssh user@server.exampleuser é a conta no servidor, não no seu computador, e server.example representa um nome de host ou um endereço IP como 203.0.113.10. Para uma porta diferente da 22, acrescente -p: ssh -p 2222 user@server.example. Depois da pergunta da chave de host, descrita mais abaixo, vem a senha; nada aparece na tela enquanto você digita. Quando o prompt muda para algo como user@server:~$, seus comandos rodam no servidor, e exit leva você de volta.
No Windows
O Windows 10 (a partir do build 1809) e o Windows 11 incluem um cliente OpenSSH, então o ssh funciona no PowerShell, no Prompt de Comando e no Windows Terminal. Para conferir, execute ssh -V. Na nossa máquina de teste com Windows 11, ele mostrou:
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2Se o Windows não reconhecer ssh, abra Configurações > Sistema > Recursos opcionais, selecione Exibir recursos, procure Cliente OpenSSH e adicione-o; em algumas versões do Windows 11, essa página fica em Configurações > Aplicativos. O guia da Microsoft sobre o OpenSSH para Windows mostra esses passos e uma primeira conexão.
No macOS e no Linux
Os dois já trazem um cliente SSH. No Mac, abra o Terminal pelo Spotlight ou pela pasta Aplicativos > Utilitários e digite o mesmo comando. Se faltar o ssh em um sistema Linux, instale o pacote do cliente OpenSSH da distribuição, que geralmente se chama openssh-client ou openssh.
Por que o SSH pede confirmação na primeira conexão?
O SSH pergunta porque nunca viu a chave de host desse servidor e não consegue saber sozinho se a chave pertence ao servidor que você queria acessar. Uma chave de host (host key) é um par de chaves que o servidor cria quando o SSH é configurado nele; a metade pública identifica o servidor, assim como um certificado identifica um site.
O OpenSSH exibe The authenticity of host … can't be established (não é possível confirmar a autenticidade do host) e mostra o tipo da chave e a sua impressão digital (fingerprint), uma soma de verificação curta como SHA256: seguido de 43 caracteres. Em seguida, pergunta Are you sure you want to continue connecting (yes/no/[fingerprint])?, ou seja, se você quer continuar a conexão. Se você responder yes, o cliente salva a chave no arquivo known_hosts da pasta .ssh do seu perfil de usuário e a confere em todas as conexões seguintes.
Antes de responder, compare a impressão digital com uma que você obteve por outro caminho: alguns provedores de nuvem a mostram na saída do console do servidor, e um administrador pode exibi-la no servidor com ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Aceitar uma chave sem conferir deixa você exposto a um ataque man-in-the-middle (ataque do intermediário), em que alguém entre você e o servidor se passa pelo servidor e lê a sua senha.
Se um servidor conhecido mostrar de repente WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (a identificação do host remoto mudou), pare e pergunte a quem administra o servidor antes de remover a entrada antiga; um servidor reinstalado é inofensivo, um impostor não. Nunca cale a pergunta com StrictHostKeyChecking no: isso remove a única verificação que diz quem está do outro lado.
Como criar uma chave SSH?
Você cria um par de chaves SSH com o ssh-keygen, que vem junto com o cliente SSH:
ssh-keygen -t ed25519 -C "you@laptop"-t ed25519 escolhe o tipo Ed25519, que já é o padrão nas versões atuais do OpenSSH, e -C acrescenta um comentário para reconhecer a chave. O comando pergunta onde salvar a chave (Enter aceita a pasta .ssh do seu perfil de usuário) e pede uma frase secreta (passphrase), uma senha que criptografa o arquivo da chave privada. Defina uma: sem ela, qualquer pessoa que copiar o arquivo pode fazer login como você.
Na nossa máquina de teste com Windows 11, salvamos uma chave descartável em uma pasta de teste com -f demo_ed25519 e a apagamos depois. A saída, sem o caminho da pasta:
Generating public/private ed25519 key pair.
Your identification has been saved in demo_ed25519
Your public key has been saved in demo_ed25519.pub
The key fingerprint is:
SHA256:lkosA9+FmCGq1dOjgIoIqQKwHR/jAMjzf+GsngbbGCc you@laptopO arquivo sem extensão é a chave privada: ela nunca sai do seu computador. O arquivo .pub é a chave pública, uma única linha que você pode compartilhar à vontade. O manual do ssh-keygen lista todas as opções, inclusive como trocar a frase secreta.
Para o login com chave, a linha da chave pública vai para o arquivo ~/.ssh/authorized_keys da sua conta no servidor. Muitos provedores de nuvem pedem essa linha quando você cria um servidor e a colocam lá. No macOS e no Linux, ssh-copy-id user@server.example copia a chave depois de um login com senha; no Windows, abra o arquivo .pub no Bloco de Notas, copie a linha, faça login uma vez com a sua senha e cole a linha nesse arquivo.
Senha ou chave SSH: qual login você deve usar?
Use uma chave SSH sempre que puder: uma senha serve para o primeiro login, mas, depois de configurada, a chave é mais segura e mais prática.
| Login com senha | Login com chave SSH | |
|---|---|---|
| O que você precisa | A senha da conta | O arquivo da chave privada e a frase secreta dele |
| O que chega ao servidor | A senha, dentro da criptografia | Só uma assinatura; a chave fica com você |
| Ataques de adivinhação | Possíveis contra senhas fracas | Inviáveis na prática |
| Senha reutilizada de um site vazado | Abre o servidor | Nenhum efeito |
| Scripts e backups automáticos | Trabalhoso e arriscado | Feito para isso |
| Se você perder | Um administrador redefine | Adicionar uma nova chave pública pelo console |
A RFC que define os logins SSH torna o login com chave o único método que todo servidor precisa aceitar; senhas são opcionais.
O que é um túnel SSH?
Um túnel SSH leva outra conexão de rede dentro da sua sessão SSH criptografada, para que um programa no seu computador alcance um serviço no servidor, ou perto dele, como se fosse local. Isso se chama encaminhamento de portas (port forwarding), e o ssh oferece três tipos.
O encaminhamento local (-L) é o mais comum. Se o seu servidor roda um banco de dados que só escuta no próprio endereço 127.0.0.1, com ssh -L 5432:localhost:5432 user@server.example uma ferramenta de banco de dados no seu notebook se conecta a localhost:5432, e o SSH entrega essa conexão ao banco de dados no servidor. O encaminhamento remoto (-R) abre uma porta no servidor que leva de volta ao seu computador. O encaminhamento dinâmico (-D) transforma o cliente em um pequeno proxy SOCKS, assunto da próxima seção.
O manual do OpenSSH para o ssh descreve cada opção. Use túneis apenas em servidores que sejam seus ou que você administre e em redes onde você tenha permissão. Um túnel esconde o conteúdo da rede local, mas não o torna permitido: se uma escola, um empregador ou uma autoridade bloqueia um serviço, passá-lo pelo SSH continua violando essas regras.
O SSH pode funcionar como proxy SOCKS5?
Sim: ssh -D 1080 -N user@server.example inicia um proxy SOCKS5 na porta 1080 do seu próprio computador e envia o que entra nele para fora pelo seu servidor; -N não abre shell, só o túnel. Um proxy SOCKS5 repassa as conexões de um programa para qualquer endereço e porta sem lê-las, como explica o artigo Proxy SOCKS5: o que é e como funciona.
Configure um navegador com o proxy SOCKS5 127.0.0.1 na porta 1080, e os sites vão ver o IP do seu servidor em vez do IP da sua conexão de casa. Ferramentas de linha de comando costumam pegar o proxy de variáveis de ambiente, que funcionam como descrito em configurar proxy no Linux.
Isso ajuda no seu próprio trabalho, como verificar o seu site a partir da localização do servidor. Os limites vêm junto: um único IP de saída, um endereço de data center em uma só cidade, um servidor que você mesmo mantém e só TCP, enquanto um proxy SOCKS5 também pode transportar UDP.
Quando uma tarefa precisa de mais de um endereço, os Proxies SOCKS5 da Proxynet funcionam com as mesmas configurações nos mesmos programas e oferecem IPs residenciais e móveis em muitos países, com segmentação por país e cidade.
Para um endereço fixo, os Proxies de datacenter oferecem endereços IPv4 dedicados em mais de 50 países sem que você precise manter um servidor.
SSH vs. SSL/TLS vs. VPN: qual é a diferença?
Os três criptografam o tráfego, mas protegem coisas diferentes: o SSH protege um login e as conexões abertas por ele, o TLS protege uma conexão de um aplicativo, como uma página web, e uma VPN protege tudo o que um dispositivo envia.
| SSH | SSL/TLS | VPN | |
|---|---|---|---|
| O que protege | Sua sessão em um servidor | Uma conexão, como HTTPS | Todo o tráfego do dispositivo |
| Como o servidor é verificado | Chave de host, salva no primeiro uso | Certificado assinado por uma autoridade | Depende do protocolo da VPN |
| Uso típico | Administração de servidores, transferência de arquivos | Sites, e-mail, APIs | Rede do escritório, Wi-Fi público |
| Porta padrão | 22 | 443 para HTTPS | Depende do protocolo |
A diferença prática está em como a confiança começa. Um navegador confia em um site porque uma autoridade certificadora garante o certificado SSL dele, enquanto o SSH confia na chave que você aceitou na primeira conexão; por isso a conferência da impressão digital é tão importante.
Como manter seguro o acesso SSH ao seu servidor?
O SSH é seguro quando você confere as chaves de host, faz login com chaves e mantém o servidor atualizado; as invasões vêm de senhas fracas e chaves roubadas, não do protocolo. Parta do princípio de que alguém está sempre tentando fazer login:
- Use chaves com frase secreta, uma por pessoa, para poder remover uma sem mexer nas outras.
- Desative o login com senha quando a sua chave funcionar:
PasswordAuthentication noem/etc/ssh/sshd_configno seu próprio servidor Linux. Mantenha uma sessão aberta enquanto testa, para que um erro não deixe você do lado de fora. - Não faça login como root com senha. O padrão do OpenSSH já só permite root com chaves; use uma conta normal e
sudo. - Instale as atualizações do sistema operacional e do servidor SSH.
- Guarde a chave privada como uma senha: nunca a cole em um chat, um chamado ou um repositório.
Mudar o SSH para outra porta só reduz o ruído nos logs; a proteção vem das chaves e das atualizações.
Onde você encontra SSH
- Servidores na nuvem e planos de VPS, geralmente administrados por SSH desde o primeiro dia.
- Hospedagem compartilhada, em que muitos planos oferecem SSH ao lado do gerenciador de arquivos.
- Git, em que endereços como
git@host:team/project.gitenviam e recebem código com a sua chave. - Transferência de arquivos com
scpesftp, que rodam sobre SSH e também vêm com o Windows. - Dispositivos domésticos como armazenamento em rede e roteadores.
- O seu próprio Mac, que outros computadores podem acessar por SSH quando o Acesso Remoto está ativado em Ajustes do Sistema > Geral > Compartilhamento; a Apple avisa que isso pode tornar o Mac menos seguro.
Erros comuns
- Digitar
yesna pergunta da primeira conexão sem comparar a impressão digital. - Calar os avisos de chave de host com
StrictHostKeyChecking noem vez de descobrir por que a chave mudou. - Enviar a chave privada em vez do arquivo
.pubquando alguém pede "a sua chave SSH". - Desativar o login com senha antes de o login com chave funcionar, e perder o acesso ao servidor.
- Usar o nome de usuário errado. Muitas imagens de nuvem usam uma conta como
ubuntuouadminem vez deroot, e um nome errado termina emPermission denied. - Esperar que as variáveis de ambiente de proxy afetem o
ssh. Elas não afetam; o SSH tem configurações próprias em~/.ssh/config.
Guia de decisão
| O que você precisa | O que fazer |
|---|---|
| Entrar em um servidor pela primeira vez | ssh user@server.example, compare a impressão digital e depois responda yes |
| O servidor usa outra porta | Acrescente -p e o número da porta |
| Parar de digitar senhas | Crie uma chave com ssh-keygen e adicione a linha .pub a authorized_keys |
| Acessar um banco de dados que só escuta no servidor | Encaminhamento local com -L |
| Navegar pelo IP do seu próprio servidor | ssh -D 1080 -N e depois SOCKS5 127.0.0.1:1080 |
| Muitas localizações ou IPs residenciais | Um serviço de proxy em vez de um único servidor |
Perguntas frequentes
O SSH é seguro?
Sim, se você conferir a chave de host na primeira conexão e proteger o seu login. Os pontos fracos são senhas fáceis de adivinhar, chaves sem frase secreta e impressões digitais aceitas sem conferência, não a criptografia.
O que é a porta 22?
A porta 22 é a porta TCP em que os servidores SSH escutam por padrão, atribuída oficialmente ao SSH. Um servidor pode usar outra porta; nesse caso, você se conecta com ssh -p 2222 user@server.example ou salva a porta em ~/.ssh/config com uma linha Port.
Posso usar SSH no celular?
Sim. Aplicativos de cliente SSH para Android e iPhone se conectam com o mesmo endereço, usuário e porta, e a maioria consegue criar uma chave no celular cuja metade pública você adiciona ao servidor. Compare a impressão digital da chave de host ali também.
O que significa Permission denied (publickey)?
O servidor só aceita login com chave, e nenhuma das chaves que o seu cliente ofereceu está cadastrada para esse usuário. Confira o nome de usuário, se a chave certa está sendo usada (ssh -i escolhe uma) e se a linha .pub dela está em ~/.ssh/authorized_keys dessa conta.
Qual é a diferença entre SSH, SFTP e SCP?
SSH é o protocolo e o login remoto; SFTP e SCP são ferramentas de transferência de arquivos que rodam dentro de uma conexão SSH. O sftp abre uma sessão em que você navega pelas pastas, o scp copia arquivos com um só comando, e os dois usam o mesmo login e as mesmas chaves que o ssh.
Como encerrar uma sessão SSH?
Digite exit ou pressione Ctrl+D quando o servidor roda Linux ou macOS. Se a sessão travar, pressione Enter e depois digite ~. (til e ponto): o cliente trata isso como uma sequência de escape e fecha a conexão do seu lado.
Em resumo
O SSH dá a você uma linha de comando criptografada em um computador remoto: seu cliente se conecta na porta 22, o servidor se identifica com uma chave de host e você faz login com uma senha ou, melhor, com uma chave criada pelo ssh-keygen. Confira a impressão digital uma vez, nunca desligue a verificação da chave de host e use túneis só onde tiver permissão. Quando precisar de mais endereços de saída do que um único servidor oferece, compare os nossos produtos de proxy.




