O que faz este módulo #
O SSH é a porta de entrada para o teu servidor: o canal cifrado através do qual te ligas para o administrar. Garantir que essa porta está bem montada —com as chaves certas e sem fechaduras a mais— é o que separa um servidor seguro de um exposto.
O módulo ssh junta as tarefas desse acesso remoto num único comando: gere as chaves autorizadas do utilizador (adicionar, listar, remover), controla as host keys com que o servidor se identifica perante os clientes, mostra as sessões ativas e verifica ou reaplica o hardening do sshd definido na tua configuração. Cada operação que toca no sshd valida a configuração primeiro (sshd -t) para que uma alteração errada não te tranque fora.
Mantém uma sessão aberta enquanto mudas chaves ou reinicias o sshd: assim, se algo correr mal, continuas dentro para o corrigir. Por omissão, o módulo trabalha sobre o utilizador gerido ubuntu; usa --user para operar sobre outro.
Tarefas comuns #
Escolhe o que queres fazer. Cada receita traz o comando já escrito — basta trocar pelo teu próprio utilizador ou chave, e clicar em Copiar.
1
Ver o estado do acesso SSH
Verifica num relance que o sshd está ativo e bem configurado.
Liga-te por SSH ao teu servidor com o utilizador ubuntu e executa:
$ sudo imaxe ssh statusPrecisas dele para um script? Adiciona --json e obténs a mesma informação, legível por máquina:
$ sudo imaxe ssh status --jsonsshd está ativo, em que porta escuta e um resumo do hardening aplicado.2
Adicionar ou remover uma chave autorizada
Concede acesso a uma máquina nova ou revoga uma que já não usas.
Primeiro, vê que chaves estão atualmente autorizadas para o utilizador gerido:
$ sudo imaxe ssh keys listAdiciona uma chave pública passando-a como argumento (ou usa - para lê-la da entrada padrão):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"Já não precisas dela? Remove-a pelo seu fingerprint ou pelo seu comentário:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys do utilizador é atualizado. Verifica o resultado com keys list.3
Regenerar host keys após clonagem
Essencial depois de criar uma máquina a partir de uma AMI.
Quando clonas uma imagem, cada cópia herda a mesma identidade de servidor. Gera host keys novas e únicas para esta máquina:
$ sudo imaxe ssh hostkeys regenerate --yes4
Rever e reaplicar o hardening
Verifica que o sshd continua configurado como deve e corrige-o se não estiver.
Compara o hardening atual com o desejado (o que a tua configuração define):
$ sudo imaxe ssh harden showHá diferenças? Reaplica o hardening a partir do YAML e recarrega o sshd em segurança:
$ sudo imaxe ssh harden reapplysshd recarrega sem derrubar a tua sessão.5
Ver sessões e reiniciar o sshd
Vê quem está ligado e aplica alterações sem medo de te trancares fora.
Lista as sessões SSH ativas neste momento:
$ sudo imaxe ssh sessionsPara aplicar alterações à configuração, prefere reload (não derruba ligações); usa restart só se for necessário um reinício completo. Ambos validam a configuração primeiro:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartAntes de reiniciar o sshd ou mudar a porta, mantém uma segunda sessão de emergência aberta. Se, ao reconectar, receberes um aviso de host key diferente após um hostkeys regenerate, é esperado: aceita a nova identidade.
Sinopse #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]As operações que leem ou modificam o sshd, as chaves autorizadas ou as host keys requerem privilégios de root (usa sudo). Os grupos keys, hostkeys e harden reúnem os seus próprios subcomandos aninhados. Adiciona --json a status, sessions, keys list ou harden show para saída apta para scripting.
Subcomandos #
| Subcomando | O que faz | Flags relevantes |
|---|---|---|
| status | Estado do sshd: ativo, porta e resumo do hardening. | --json |
| keys list | Lista as chaves autorizadas do utilizador gerido. | --user, --json |
| keys add | Adiciona uma chave pública (a partir de argumento ou stdin). | --user, --comment |
| keys remove | Remove uma chave por fingerprint ou comentário. | --user |
| hostkeys regenerate | Regenera as host keys (crítico após clonar uma AMI; muda o fingerprint). | --yes |
| sessions | Lista as sessões SSH ativas. | --json |
| harden show | Mostra o hardening atual face ao desejado. | --json |
| harden reapply | Reaplica o hardening a partir do YAML e recarrega o sshd. | — |
| restart | Reinicia o sshd, validando a configuração primeiro (sshd -t). | — |
| reload | Recarrega o sshd, validando a configuração primeiro (sshd -t). | — |
Argumentos e flags #
| Argumento / Flag | Tipo | Por omissão | Descrição |
|---|---|---|---|
| <clave> obr. | string | — | Em keys add: a chave pública, ou - para lê-la do stdin. |
| <selector> obr. | string | — | Em keys remove: fingerprint (SHA256:...) ou comentário da chave a remover. |
| --user | string | ubuntu | Utilizador cujo authorized_keys se consulta ou modifica (em keys list/add/remove). |
| --comment | string | — | Em keys add: comentário associado à chave para a identificar mais tarde. |
| --yes | bool | false | Em hostkeys regenerate: confirma sem perguntar (muda o fingerprint que os clientes veem). |
| --json | bool | false | Em status, sessions, keys list e harden show: emite o resultado como JSON em stdout. |
Ficheiros e caminhos #
| Caminho | Conteúdo |
|---|---|
| /etc/imaxe/ssh.yml | Configuração do módulo: porta, políticas de login (root, palavra-passe, chave pública), utilizadores permitidos, utilizador gerido e regeneração das host keys. |
| /home/<usuario>/.ssh/authorized_keys | As chaves públicas autorizadas do utilizador gerido que o keys add/remove modificam. |
| /etc/ssh/sshd_config.d/ | Fragmentos de configuração do sshd onde o hardening é aplicado. |
| /etc/ssh/ssh_host_*_key | Host keys que identificam o servidor e que o hostkeys regenerate renova. |
Exemplo de ssh.yml:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueCódigos de saída e logs #
Cada execução devolve um código que podes verificar com echo $? — útil para encadear em scripts:
sshd -t falhou; nada foi aplicado.Segue o log do serviço em direto enquanto depuras:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonResolução de problemas #
| Sintoma | Causa provável | Solução |
|---|---|---|
| Sai CONFIG (código 3) | O hardening ou uma alteração manual deixaram o sshd com uma configuração inválida. | Revê o diff com imaxe ssh harden show e corrige-o; a validação impede aplicar uma config partida. |
| Ao reconectar, um aviso de host key diferente | As host keys foram regeneradas (esperado após clonar uma AMI). | É normal: aceita a nova identidade no cliente e atualiza o teu known_hosts. |
keys add devolve NOTFOUND (código 4) | O utilizador indicado em --user não existe no sistema. | Verifica o nome de utilizador ou usa o gerido por omissão (ubuntu). |
| Já não consigo entrar com palavra-passe | O password_authentication está definido como "no" pelo hardening. | É intencional: entra com uma chave pública e gere-as com imaxe ssh keys. |
Ficou bloqueado com o módulo SSH?
Escreva-nos com a saída de «imaxe <module> status --json» e respondemos rapidamente.