O Que e SSH
SSH significa Secure Shell (terminal seguro). E o jeito padrao de abrir um terminal dentro de um computador que esta longe de voce. Em vez de digitar comandos na sua maquina, voce digita comandos que rodam direto no servidor, como se estivesse sentado na frente dele. E tudo que passa entre as duas pontas vai criptografado, ou seja, embaralhado, para que ninguem no meio do caminho consiga ler.
servidor via tunel -->🧠 Analogia: Um Tunel Secreto e Blindado
Imagine que seu servidor fica numa fortaleza distante. Para falar com ele, voce poderia gritar pela rua, mas qualquer um ouviria. O SSH constroi um tunel secreto e blindado que vai direto da sua mesa ate dentro da fortaleza. Tudo que voce manda por esse tunel:
- •Ninguem do lado de fora consegue ler (vai criptografado)
- •Ninguem se passa por voce (a entrada exige sua chave)
- •Voce comanda de dentro (digita aqui, executa la)
💡 Dica: Voce ja usa SSH sem perceber
Quando voce faz git push para o GitHub usando uma URL que comeca com git@github.com, por baixo dos panos e o SSH que faz a conexao segura. O mesmo protocolo que voce vai usar para entrar no seu VPS ja move seu codigo todos os dias.
Gerando seu Par de Chaves
O SSH usa duas chaves que nascem juntas: uma publica e uma privada. A publica voce espalha pelos servidores onde quer entrar. A privada fica guardada na sua maquina e nunca, jamais, sai dela. Quem tem a sua chave privada e voce. Quem tem a sua chave publica e o mundo, e tudo bem.
🧠 Analogia: Cadeado e Chave
A chave publica e como um cadeado aberto: voce distribui copias dele para todo mundo. Qualquer um pode trancar uma porta com seu cadeado. Mas so a chave privada abre esse cadeado, e essa chave so existe no seu bolso. Por isso espalhar a publica e seguro, e perder a privada e perigoso.
ssh-keygen - Criar o par de chaves
Rode este comando na sua maquina (nao no servidor). O -t ed25519 escolhe um tipo de chave moderno e seguro.
$ ssh-keygen -t ed25519 -C "seu-email@exemplo.com"
Generating public/private ed25519 key pair.
# Onde salvar? Pressione Enter para o padrao
Enter file in which to save the key (/home/voce/.ssh/id_ed25519):
# Senha da chave (opcional, mas recomendado). Pode deixar vazio
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/voce/.ssh/id_ed25519
Your public key has been saved in /home/voce/.ssh/id_ed25519.pub
Veja os dois arquivos criados
$ ls -l ~/.ssh
# -rw------- = so voce le e escreve (a privada)
-rw------- 1 voce voce 411 jun 17 10:00 id_ed25519
# .pub = a publica (pode mostrar)
-rw-r--r-- 1 voce voce 102 jun 17 10:00 id_ed25519.pub
# Ver o conteudo da PUBLICA (essa voce pode copiar)
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... seu-email@exemplo.com
✓ O que FAZER
- ✓Compartilhar so o arquivo
.pub - ✓Colocar uma passphrase na chave privada
- ✓Fazer backup da privada num lugar seguro
✗ O que NAO fazer
- ✗Enviar a chave privada (
id_ed25519) para ninguem - ✗Subir a privada para o GitHub ou nuvem publica
- ✗Colar a privada em chats ou e-mails
⚠️ Erro Comum
Problema: Copiou o arquivo errado e o servidor recusa a conexao.
Solucao: Voce deve copiar o conteudo do arquivo terminado em .pub (a chave publica). Se copiou o arquivo sem o .pub, parou a chave privada, que nunca deve sair da sua maquina. Confira sempre o .pub no fim do nome.
Copiando a Chave Publica pro Servidor
Sua chave publica precisa morar no servidor para que ele te reconheca. O servidor guarda as chaves autorizadas num arquivo chamado ~/.ssh/authorized_keys. Sempre que voce tenta entrar, ele confere se a sua chave esta nessa lista. Existem duas formas de colocar a chave la: a facil (ssh-copy-id) e a manual.
Jeito facil: ssh-copy-id
Um unico comando copia sua chave publica e ja a coloca no lugar certo.
$ ssh-copy-id usuario@192.168.0.10
# Ele pede a SENHA do servidor (so desta vez)
usuario@192.168.0.10's password:
Number of key(s) added: 1
Now try logging into the machine with: "ssh usuario@192.168.0.10"
Jeito manual: authorized_keys
Se o ssh-copy-id nao existir (comum no Windows), faca a mao. Primeiro copie sua publica, depois cole no servidor.
# Na SUA maquina, veja a publica
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3Nza... voce@exemplo.com
# Entre no servidor e cole na lista de autorizadas
$ ssh usuario@192.168.0.10
$ mkdir -p ~/.ssh && chmod 700 ~/.ssh
$ echo "ssh-ed25519 AAAAC3Nza... voce@exemplo.com" >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
Teste o acesso por chave
Agora tente entrar de novo. Se a chave funcionou, ele nao pede mais a senha.
$ ssh usuario@192.168.0.10
# Sem pedir senha = chave funcionando!
Welcome to Ubuntu 22.04 LTS
usuario@servidor:~$
⚠️ Erro Comum
Problema: Mesmo com a chave copiada, o servidor continua pedindo senha.
Solucao: Quase sempre e permissao errada. O SSH ignora a pasta .ssh se ela estiver "aberta demais". Rode no servidor: chmod 700 ~/.ssh e chmod 600 ~/.ssh/authorized_keys. Isso fecha o arquivo so para voce.
Conectando: ssh usuario@ip
O comando para entrar e simples: ssh usuario@ip. O usuario e a conta dentro do servidor (geralmente root ou um nome que voce criou) e o ip e o endereco do VPS que voce anotou no modulo anterior. No primeiro acesso, o SSH vai te mostrar a "impressao digital" (fingerprint) do servidor e perguntar se voce confia.
Anatomia do comando
$ ssh root@203.0.113.45
↑ ↑ ↑
cmd usuario ip do servidor
# Para usar uma porta diferente da padrao (22)
$ ssh -p 2222 root@203.0.113.45
👁 O que voce vai ver no primeiro acesso
$ ssh root@203.0.113.45
The authenticity of host '203.0.113.45' can't be established.
ED25519 key fingerprint is SHA256:a1b2c3d4...
Are you sure you want to continue connecting (yes/no)?
yes
Warning: Permanently added '203.0.113.45' to known hosts.
Welcome to Ubuntu 22.04 LTS
root@servidor:~$
Essa fingerprint e a identidade do servidor. Voce digita yes uma unica vez. O SSH guarda essa identidade no arquivo ~/.ssh/known_hosts e, nas proximas vezes, nao pergunta mais.
💡 Dica: Para sair, digite exit
Enquanto estiver conectado, todo comando roda no servidor, nao na sua maquina. Para encerrar a sessao e voltar para o seu terminal local, basta digitar exit e pressionar Enter. O prompt volta a mostrar o nome da sua maquina.
⚠️ Erro Comum
Problema: Connection refused ou Connection timed out.
Solucao: Confira tres coisas. (1) O IP esta certo? Compare com o painel do provedor. (2) O servidor esta ligado? (3) A porta 22 esta liberada no firewall do VPS? "Refused" costuma ser servico parado; "timed out" costuma ser firewall bloqueando. Voce ajusta o firewall no proximo modulo.
Atalhos com ~/.ssh/config
Digitar ssh root@203.0.113.45 -p 2222 toda vez cansa e e facil errar. O arquivo ~/.ssh/config deixa voce dar um apelido para cada servidor. Depois disso, voce entra com um nome curto, tipo ssh meuvps, e o SSH preenche o resto sozinho.
🧠 Analogia: Contatos do Celular
Voce nao decora o numero de telefone de cada amigo: salva no contato com um nome e liga pelo nome. O ~/.ssh/config e a sua agenda de servidores. Em vez de decorar IP, usuario e porta, voce salva tudo sob um apelido e "liga" pelo apelido.
Criar o arquivo de config
Abra (ou crie) o arquivo na sua maquina com o nano e escreva um bloco por servidor:
$ nano ~/.ssh/config
# Digite isto dentro do nano:
Host meuvps
HostName 203.0.113.45
User root
Port 2222
IdentityFile ~/.ssh/id_ed25519
Salve com Ctrl+O, Enter, e saia com Ctrl+X.
O que cada linha significa
- •
Host- o apelido que voce vai digitar (ex:meuvps) - •
HostName- o IP ou dominio real do servidor - •
User- o usuario com que voce entra - •
Port- a porta do SSH (so se for diferente de 22) - •
IdentityFile- qual chave privada usar nessa conexao
Antes e depois
# Antes: comando longo e facil de errar
$ ssh -p 2222 -i ~/.ssh/id_ed25519 root@203.0.113.45
# Depois: so o apelido
$ ssh meuvps
root@servidor:~$
✓ O que FAZER
- ✓Usar apelidos claros (
prod,teste) - ✓Indentar as linhas dentro de cada
Host - ✓Apontar a
IdentityFilecerta por servidor
✗ O que NAO fazer
- ✗Escrever a porta na linha do
Host - ✗Apontar a
IdentityFilepara a chave.pub - ✗Deixar o arquivo legivel por outros usuarios
Desabilitando o Acesso por Senha
Enquanto o servidor aceitar senha, robos da internet ficam tentando adivinhar a sua, milhares de vezes por dia. Como agora voce ja entra por chave, pode fechar a porta da senha de vez. Sem senha aceita, esses ataques param de funcionar. So entra quem tem a chave privada certa, que e voce.
⚠️ Cuidado: Teste a chave ANTES
Esta e a parte mais perigosa do modulo. Se voce desligar a senha sem ter certeza de que a chave funciona, voce pode ficar trancado para fora do proprio servidor. Regra de ouro: abra uma segunda janela do terminal, confirme que ssh meuvps entra sem pedir senha, e so depois mexa na configuracao. Mantenha a sessao atual aberta como rede de seguranca.
Abra o arquivo de configuracao do SSH
No servidor, edite o arquivo principal com permissao de administrador (sudo).
$ sudo nano /etc/ssh/sshd_config
Mude a linha PasswordAuthentication
Procure essa linha (pode estar com # na frente, que e comentario) e deixe assim:
# Antes (aceitava senha)
#PasswordAuthentication yes
# Depois (sem o # e com "no")
PasswordAuthentication no
Salve com Ctrl+O, Enter, e saia com Ctrl+X.
Reinicie o servico do SSH
A mudanca so vale depois de reiniciar o sshd. Sua sessao atual continua aberta.
$ sudo systemctl restart ssh
# Em alguns sistemas o servico chama sshd
$ sudo systemctl restart sshd
Confirme numa nova janela
Sem fechar a sessao antiga, abra outra e entre de novo. Tem que funcionar por chave.
$ ssh meuvps
# Entrou sem pedir senha = tudo certo!
root@servidor:~$
👁 O que muda para um invasor
# Tentativa de quem nao tem a sua chave:
$ ssh root@203.0.113.45
root@203.0.113.45: Permission denied (publickey).
Repare no publickey: o servidor diz que so aceita chave. Sem senha para chutar, o ataque automatico nao tem por onde tentar.
💡 Dica: Guarde um plano B
Quase todo provedor de VPS oferece um console web (as vezes chamado de "VNC" ou "console serial") no painel de controle. Se um dia voce perder o acesso por SSH, esse console te leva para dentro do servidor pelo navegador, sem depender do SSH. Saiba onde fica esse botao antes de precisar dele.
📚 Resumo do Modulo
Proximo Modulo:
3.3 - Firewall: Controlando quais portas ficam abertas e fechando o servidor para o mundo