Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

O primeiro início de sessão por SSH

Módulo 1: O seu primeiro servidor · Tempo de leitura: 10 minutos

Objetivo de aprendizagem: Depois desta lição, consegue iniciar sessão no seu servidor por SSH pela primeira vez, verificar a impressão digital do servidor antes de confiar nele e saber o que fazer quando surge o aviso de que a identidade do servidor mudou.

Conceitos-chave: SSH, cliente e servidor, porta 22, banner de versão, host key, impressão digital (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell e Terminal

O que é o SSH

O SSH (Secure Shell) é a ligação cifrada com que gere um servidor à distância. Escreve no seu próprio computador e os comandos são executados no servidor. Tudo o que passa pela ligação, incluindo a sua palavra-passe, é cifrado.

Existem dois lados:

  • o cliente SSH no seu próprio computador: o programa ssh. No macOS e no Linux vem incluído de origem. No Windows 10 (a partir da versão 1809) e no Windows 11, o cliente OpenSSH faz parte do Windows; utiliza-o no PowerShell ou no Windows Terminal. Se não estiver presente, pode adicioná-lo em Definições, Funcionalidades opcionais, "Cliente OpenSSH". Programas com janelas, como o PuTTY, também funcionam, mas neste curso utilizamos o ssh.
  • o servidor SSH no VPS: o programa sshd (do OpenSSH). Por predefinição, escuta na porta 22.

Iniciar sessão

Inicia sessão com um nome de utilizador e o endereço do servidor:

PS C:\Users\anna> ssh root@192.0.2.10

Ou com um nome, se o tiver configurado no DNS (lição 7.1):

anna@laptop:~$ ssh root@web1.example.com

Na primeira vez, verá algo como isto:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Este é o momento mais importante desta lição. Não escreva yes às cegas.

A host key e a impressão digital

Cada servidor SSH tem uma ou mais host keys: pares de chaves com que o servidor prova quem é. As partes públicas encontram-se no servidor em /etc/ssh/, por exemplo /etc/ssh/ssh_host_ed25519_key.pub. Em cada ligação, o servidor demonstra que possui a parte secreta.

Uma impressão digital é um resumo curto (um hash) de uma dessas chaves públicas. Por predefinição, o OpenSSH mostra a forma SHA256: SHA256: seguido de 43 caracteres.

O primeiro início de sessão SSH no seu VPS 0:59

A pergunta "Are you sure you want to continue connecting?" significa: o seu computador ainda não conhece este servidor. Quem garante que está a comunicar com o seu VPS e não com alguém que interceta o tráfego? Ninguém, a menos que compare a impressão digital com uma fonte fiável.

Essa fonte é a consola do seu fornecedor (lição 1.2). Aí não comunica com o servidor através da rede. Inicie sessão na consola e consulte a impressão digital:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Se corresponder exatamente ao que o cliente mostra, escreva yes. Também pode colar a própria impressão digital em vez de yes; nesse caso, o ssh faz a comparação por si. Se for diferente, pare e investigue a causa (endereço IP errado, servidor reinstalado ou algo mais grave).

Tenha atenção ao tipo: o cliente indica o tipo (ED25519, ECDSA ou RSA). Compare a impressão digital do mesmo tipo. Muitas imagens também mostram as impressões digitais na consola no primeiro arranque (cloud-init), entre linhas como BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts e trust on first use

Se escrever yes, verá:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

O cliente guarda a chave em ~/.ssh/known_hosts (no Windows, C:\Users\<naam>\.ssh\known_hosts). A partir daí, compara-a automaticamente em cada ligação. Este modelo chama-se trust on first use (TOFU, confiança na primeira utilização): na primeira vez tem de verificar pessoalmente; depois, é o cliente que vigia.

É por isso que essa primeira verificação é tão importante: se confiar numa chave errada, o cliente nunca mais o avisará.

Se trabalhar num computador com Debian ou Ubuntu, os nomes em known_hosts ficam, por predefinição, em forma de hash (HashKnownHosts yes em /etc/ssh/ssh_config), pelo que não verá aí endereços IP legíveis. No Windows e no macOS ficam legíveis. Pesquisar funciona em todo o lado com:

anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...

"REMOTE HOST IDENTIFICATION HAS CHANGED"

Por vezes, verá este aviso:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

O servidor apresenta uma chave diferente daquela que o seu cliente conhece. Nesse caso, o ssh recusa-se a ligar. Existem dois tipos de causas:

NormalSuspeito
Reinstalou o VPS (novas host keys)Não alterou nada e, mesmo assim, a chave é diferente
O endereço IP foi atribuído a outro servidorEstá ligado a uma rede Wi-Fi desconhecida
Substituiu as host keys de propósitoA impressão digital na consola difere da que o cliente vê agora

Se houver uma explicação normal, verifique novamente a impressão digital na consola e só depois remova a linha antiga:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

Na ligação seguinte, voltará a ver a pergunta da primeira vez e voltará a verificar. Nunca defina StrictHostKeyChecking no nas suas definições para fazer desaparecer o aviso: estaria a desativar precisamente a proteção que interessa.

O banner de versão

Antes de qualquer cifragem, o cliente e o servidor enviam um ao outro uma linha de texto: o banner de versão. É visível para qualquer pessoa na internet. Pode vê-lo com ssh -v:

anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

Aqui, o servidor indica que protocolo (2.0) e que software utiliza. O Debian e o Ubuntu acrescentam a versão do pacote. Não se trata de um segredo que deva esconder: os atacantes experimentam tudo de qualquer forma, e a proteção vem das atualizações (módulo 4), não de um banner diferente. Ainda assim, é útil: pelo banner consegue ver do exterior se o seu servidor está realmente a executar a versão atualizada.

Em AlmaLinux e Rocky Linux

O início de sessão e as impressões digitais funcionam da mesma forma. O serviço chama-se sshd em vez de ssh (systemctl status sshd). O banner não contém o nome da distribuição, apenas a versão do OpenSSH.

Resumo

  • O SSH é a ligação cifrada ao seu servidor; ssh é o cliente e sshd o servidor na porta 22.
  • Na primeira ligação, o cliente mostra a impressão digital da host key. Compare-a com o resultado de ssh-keygen -lf na consola antes de escrever yes.
  • O cliente guarda a chave em ~/.ssh/known_hosts e passa a avisar por si próprio (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" é normal após uma reinstalação; caso contrário, é suspeito. Remova uma linha antiga apenas depois de verificar, com ssh-keygen -R.
  • O banner de versão é público; a proteção vem das atualizações, não de o esconder.

Questionário

1. Com que compara a impressão digital que o ssh mostra na primeira ligação?



2. Para que serve o ~/.ssh/known_hosts?



3. Reinstalou o seu VPS e recebe "REMOTE HOST IDENTIFICATION HAS CHANGED". Qual é a ordem correta?



4. Porque é que a primeira verificação é tão importante no trust on first use?



5. O que mostra o banner de versão de um servidor SSH?



Exercício

Exercício Z1.3: Banner SSH e impressão digital do seu servidor. Introduza o endereço do seu servidor, a versão do software indicada no banner (como OpenSSH_9.6p1) e a impressão digital ED25519 que consultou na consola com ssh-keygen -lf. O programa estabelece uma única ligação à sua porta SSH, lê o banner e a host key e faz a comparação. Não inicia sessão.

Exercício Z1.3: Banner SSH e impressão digital do seu servidor

Não iniciamos sessão nem testamos qualquer palavra-passe ou chave. Primeiro, demonstre que o servidor é seu: clique em "Mostrar o meu código" e coloque um ficheiro /.well-known/weboke-cursus-<code>.txt apenas com esse código no servidor web do seu nome de anfitrião. Obtemo-lo diretamente em cada endereço IP que verificamos (IPv4 e IPv6 em separado); um registo TXT não conta aqui. A verificação vem de heavy.webawere.nl (185.158.167.16 e 2a07:ae80:100:0:185:158:167:16), não do nosso servidor web. Apenas para formandos com sessão iniciada; no máximo 6 verificações por hora por servidor. Neste exercício fazemos uma única ligação e lemos apenas o banner e a chave do servidor; não surge nenhuma tentativa de início de sessão no seu registo.





O que preenche e o que encontramos não ficam guardados. O seu navegador memoriza as suas respostas e se concluiu o exercício com sucesso. Se tiver sessão iniciada, guardamos apenas que concluiu o exercício (quase) com sucesso em Os meus cursos; aí também o pode eliminar.

Para saber mais

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…