Autenticação
O DR-Terminal suporta três métodos de autenticação: palavra-passe, chave privada e chave de segurança FIDO2 (YubiKey).
Palavra-passe
O método mais simples. Uma palavra-passe introduzida numa ligação guardada fica armazenada no armazenamento seguro da plataforma — nunca na configuração JSON. Se o campo da palavra-passe estiver vazio, a aplicação pergunta sempre que se liga.
Fallback de chave pública → palavra-passe: quando o servidor rejeita uma chave pública (por exemplo, porque não está em authorized_keys), o DR-Terminal pede automaticamente a palavra-passe do mesmo utilizador, em vez de terminar a ligação.
Chave privada
Chaves nos formatos OpenSSH, PKCS#1, PKCS#8, ssh.com ou PuTTY PPK (v2/v3) são todas aceites — o formato é detetado automaticamente, pelo que uma chave .ppk funciona sem ser necessário convertê-la antes. É possível:
- Colar a chave diretamente no formulário de ligação.
- Utilizar o gestor de chaves (Definições → Segurança → Chaves SSH) e selecionar uma chave armazenada. Os ficheiros de chave importados aqui também podem ser DER binário bruto.
Se a chave estiver encriptada com uma passphrase, o DR-Terminal solicita-a na primeira vez em que a chave é utilizada e depois mantém-na apenas em memória — como o ssh-agent, um desbloqueio por execução da aplicação; ao fechar a aplicação, todas as chaves voltam a ficar trancadas. As chaves encriptadas importadas permanecem na respetiva forma encriptada original no armazenamento seguro. São suportados muitos algoritmos — RSA, ECDSA (P-256, P-384, P-521), Ed25519, Ed25519-SK, ECDSA-SK (FIDO).
Gerador de chaves
Definições → Segurança tem um assistente Gerar chave SSH. Escolha o tipo (por exemplo, ed25519), defina uma passphrase (opcional — protege a chave mesmo dentro do armazenamento seguro), e a chave é guardada localmente. O comentário predefinido da chave é ${user}@${host}@DR-Terminal — útil para identificar a chave no servidor. A chave pública pode ser copiada para a área de transferência, para colocar em ~/.ssh/authorized_keys no servidor.
As chaves na lista podem ser renomeadas no próprio local; se o nome escolhido colidir com um já existente, a aplicação acrescenta (2) automaticamente.
Conversor de chaves
Definições → Segurança → Chaves SSH → Converter converte uma chave privada entre todos os formatos comuns — escolha uma origem (uma chave armazenada, um ficheiro ou texto colado) e um formato de destino; depois copie, partilhe ou guarde o resultado.
Formatos, nos dois sentidos:
| Formato | Ler | Escrever |
|---|---|---|
OpenSSH (BEGIN OPENSSH PRIVATE KEY) | ✓ | ✓ |
PKCS#8 (BEGIN PRIVATE KEY) | ✓ | ✓ |
PKCS#1 (BEGIN RSA PRIVATE KEY, apenas RSA) | ✓ | ✓ |
| PuTTY PPK — v2 e v3 | ✓ | ✓ |
A entrada pode ser PEM (texto), PuTTY PPK ou DER binário bruto — o formato é detetado automaticamente. Tipos de chave: RSA, Ed25519 e ECDSA (P-256/384/521).
- A exportação para PuTTY PPK funciona agora nos dois sentidos (antes a aplicação só conseguia ler
.ppk). Escolha v3 (Argon2id KDF + HMAC-SHA-256, PuTTY moderno) ou v2 (PuTTY mais antigo) através do seletor de versão. Os ficheiros assim produzidos carregam no PuTTY/puttygensem alterações. - Passphrase de exportação opcional. Deixe em branco para uma chave não encriptada; se a definir, a saída é encriptada com um KDF forte específico por formato (bcrypt / PBKDF2 / Argon2id). Ver Segurança e dados → Chaves exportadas.
- Se a conversão falhar (passphrase de origem incorreta, formato incompatível), a aplicação mostra agora o motivo real em vez de um erro genérico.
O PKCS#1 descreve apenas chaves RSA, pelo que esse destino só é oferecido quando a origem é uma chave RSA.
Mudar uma ligação de palavra-passe para chave
Não é necessário editar o authorized_keys à mão. Para uma ligação guardada com palavra-passe, o DR-Terminal oferece uma migração guiada em dois locais:
- Lista de ligações — o ícone de chave no cartão de uma ligação com palavra-passe inicia o assistente de migração.
- Dentro de uma sessão — o menu do terminal de uma sessão ligada com palavra-passe tem Mudar para chave SSH.
Ambos seguem o mesmo fluxo: escolha uma chave armazenada ou gere uma nova; o DR-Terminal implanta a chave pública no servidor através do login com palavra-passe existente, testa se a autenticação por chave realmente funciona e só depois muda a ligação guardada para autenticação por chave. Se o teste falhar, a ligação permanece inalterada.
Chave de segurança (FIDO2 / YubiKey)
O DR-Terminal lida com chaves ed25519-sk e ecdsa-sk — que podem ser geradas dentro da própria aplicação. Não é necessário um ssh-keygen externo.
Gerar uma chave protegida por YubiKey no DR-Terminal
- Definições → Segurança → Chaves SSH → Gerar chave SSH.
- Ative o interruptor Chave de segurança. Escolha o algoritmo — Ed25519-SK (recomendado) ou ECDSA-SK.
- Toque na sua YubiKey quando lhe for pedido. A aplicação solicita ao token a criação de uma nova credencial e assina a chave pública.
- A chave é armazenada no gestor de chaves do DR-Terminal. Copie a chave pública e cole-a em
~/.ssh/authorized_keysno servidor de destino.
Windows Hello: no Windows, o pedido de PIN do FIDO2 é a caixa de diálogo nativa do Windows Hello (PIN / impressão digital / rosto), e não uma caixa de diálogo da aplicação.
As chaves residentes (armazenadas na própria YubiKey) eliminam a necessidade de carregar o ficheiro de chave — o segredo inteiro reside no token. As chaves geradas no DR-Terminal são não residentes: o identificador da credencial fica no gestor de chaves e é necessário em conjunto com o token.
Utilizar uma chave SK existente
Se já existir uma id_ed25519_sk / id_ecdsa_sk gerada noutro local (por exemplo, através de ssh-keygen -t ed25519-sk), importe-a a partir do mesmo gestor de chaves — o DR-Terminal trata as chaves SK importadas e geradas da mesma forma.
No momento da ligação
O DR-Terminal pede um toque na chave. O indicador pisca — toque nele. O iOS suporta NFC e USB-C (YubiKey 5Ci e posteriores). Android — NFC + USB (OTG). O Desktop utiliza APIs FIDO2 nativas (Windows Hello, macOS, Linux via libfido2).