MODULO 3.2

🔐 SSH: Acesso Seguro

Voce ja tem seu VPS. Agora precisa entrar nele de forma segura, sem que ninguem espie sua conexao. O SSH e o tunel blindado que liga sua maquina ao servidor. Aqui voce vai criar chaves, configurar o acesso e fechar a porta para invasores.

6
Topicos
45
Minutos
Basico
Nivel
Pratico
Tipo
1

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 -->
SUA MAQUINA $ ssh user@ip terminal local TUNEL CRIPTOGRAFADO dados embaralhados 🔑 autenticacao por chave SERVIDOR (VPS)

🧠 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.

2

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.

3

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.

1

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"

2

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

3

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.

4

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.

5

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 IdentityFile certa por servidor

✗ O que NAO fazer

  • Escrever a porta na linha do Host
  • Apontar a IdentityFile para a chave .pub
  • Deixar o arquivo legivel por outros usuarios
6

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.

1

Abra o arquivo de configuracao do SSH

No servidor, edite o arquivo principal com permissao de administrador (sudo).

$ sudo nano /etc/ssh/sshd_config

2

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.

3

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

4

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

SSH e um tunel blindado - liga sua maquina ao servidor com tudo criptografado
ssh-keygen cria o par de chaves - publica voce espalha, privada nunca sai da sua maquina
ssh-copy-id ou authorized_keys - coloca sua chave publica no servidor
ssh usuario@ip e ~/.ssh/config - conecta e cria apelidos curtos para cada servidor
PasswordAuthentication no - fecha a porta da senha e bloqueia ataques (teste a chave antes!)

Proximo Modulo:

3.3 - Firewall: Controlando quais portas ficam abertas e fechando o servidor para o mundo