⚙⚙⚙

// ADICIONAR UM HOST

Toque no botão + no ecrã de hosts para adicionar um novo servidor (no iOS abre um pequeno menu: escolha Adicionar Host).

Campos obrigatórios

  • Hostname / IP — o endereço ou IP do servidor. São suportados IPv4 e IPv6.
  • Porta — predefinido como 22. Altere se o seu servidor usa uma porta SSH diferente.
  • Nome de utilizador — o utilizador Unix com que quer iniciar sessão (ex. ubuntu, root, deploy).
  • Autenticação — escolha entre palavra-passe ou chave SSH (recomendado).

Verificação da impressão digital do host

Na primeira ligação, o SSHBorg mostra a impressão digital do servidor e pede que a aceite. É uma verificação de segurança: garante que está a ligar à máquina correta e não a um impostor. Verifique se a impressão digital corresponde à fornecida pelo administrador do servidor antes de aceitar.

Uma vez aceite, a impressão digital é guardada localmente. Se mudar numa ligação futura, o SSHBorg avisá-lo-á — pode indicar uma reconstrução do servidor, uma rotação de chaves ou um ataque man-in-the-middle.

// DICA
Pode verificar a impressão digital do servidor a qualquer momento com:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// GRUPOS DE HOSTS

Quando a lista de servidores cresce, pode organizar os hosts em grupos recolhíveis com cores — por exemplo Produção, Lab de casa, Clientes.

Criar um grupo

  1. Adicione ou edite um host e abra o menu Grupo.
  2. Escolha Novo grupo…, escreva um nome e selecione uma das cores predefinidas.
  3. Guarde o host — a lista de hosts passa a mostrar o grupo como uma secção própria.

No iOS também é possível criar um grupo sozinho, a partir do botão + → Novo grupo.

Trabalhar com grupos

  • Recolher / expandir — toque no cabeçalho de um grupo para o recolher ou reabrir. O estado é lembrado, mesmo depois de reiniciar a app.
  • Cor — a cor do grupo aparece como um ponto no cabeçalho e como tonalidade dos ícones dos hosts do grupo.
  • Editar — mantenha premido o cabeçalho e escolha Editar para renomear o grupo ou mudar a cor.
  • Eliminar — mantenha premido o cabeçalho e escolha Eliminar. Os hosts do grupo não são apagados: ficam simplesmente sem grupo.

As cores escolhem-se das amostras rápidas ou, no Android, livremente com o seletor de gradiente — no iOS a escolha é entre as amostras. Um host também pode ter uma cor própria — definida no editor do host, logo abaixo do grupo — que prevalece sobre a cor do grupo e funciona também para hosts sem grupo.

Os hosts sem grupo permanecem no topo da lista e, se nunca criar um grupo, a lista mantém exatamente o aspeto e o comportamento de sempre.

Ordem da lista

Escolha como a lista é disposta em Definições → Ordem da lista de hosts:

  • Alfabética (predefinição) — grupos por nome e hosts por etiqueta dentro de cada um.
  • Usados recentemente — em cima o host a que se ligou por último; os nunca usados ficam no fim.
  • Mais usados — primeiro os hosts com mais ligações.
  • Manual — a ordem que define à mão.

Nos três primeiros modos os grupos mantêm-se por ordem alfabética, por isso os cabeçalhos de secção nunca se movem e só os hosts lá dentro são reorganizados. Na ordem manual também se podem mover os grupos.

Para reordenar escolha Manual e abra o menu de um host ou de um cabeçalho de grupo — o botão ⋮ (… no iOS), um toque longo ou a tecla Menu do comando na Android TV — e use Mover para cima / Mover para baixo. Um host só se move dentro da sua própria secção: para o pôr noutro grupo, altere o grupo no editor do host. Ao mudar para manual mantém-se exatamente a ordem que estava no ecrã nesse momento, por isso nada salta, e os hosts adicionados depois vão para o fim da sua secção.

// GESTOR DE FICHEIROS SFTP

O gestor de ficheiros SFTP permite-lhe explorar, carregar, transferir, renomear e eliminar ficheiros no servidor diretamente a partir do telemóvel. Abra-o no ecrã de hosts com Ficheiros no menu de um host.

Navegação

Toque numa pasta para a abrir. Use a seta de retrocesso ou toque em qualquer segmento da barra de caminho para subir na árvore de diretórios. Tocar num ficheiro abre o que pode fazer com ele: transferir, abrir no editor, renomear, eliminar.

As ligações simbólicas são apresentadas com um pequeno crachá em forma de corrente. Tocar numa ligação simbólica navega para o seu destino: se apontar para um diretório, entra nele; se apontar para um ficheiro, comporta-se como um ficheiro normal.

Carregar ficheiros

Toque no botão de carregamento (↑) para selecionar um ou mais ficheiros do armazenamento do telemóvel. O carregamento começa imediatamente e o progresso é mostrado no topo do ecrã.

Transferir ficheiros e pastas

Toque no ícone de transferência à direita da linha de um ficheiro para o transferir imediatamente. Para transferir uma pasta inteira, toque no ícone de transferência junto a ela — o SSHBorg transfere toda a árvore de diretórios e guarda-a na pasta Downloads do telemóvel.

Se um ficheiro já existir no destino, uma caixa de diálogo perguntará se pretende substituir, ignorar o ficheiro ou cancelar toda a transferência.

// NOTA SOBRE LIGAÇÕES SIMBÓLICAS
Durante a transferência de uma pasta, as ligações simbólicas que apontam para diretórios são ignoradas — apenas os ficheiros normais (incluindo ligações para ficheiros) são transferidos. Isto evita transferências recursivas não intencionais.

Seleção múltipla e operações em lote

Toque em Selecionar itens na barra superior para entrar no modo de seleção e marque os itens que quiser. A barra de ferramentas mostra as ações disponíveis:

  • Transferir — transfere todos os ficheiros e pastas selecionados de uma só vez, com uma caixa de diálogo de progresso e possibilidade de cancelamento.
  • Eliminar — elimina todos os itens selecionados. Eliminar uma pasta não vazia remove todo o seu conteúdo de forma recursiva. Esta ação não pode ser desfeita.

Mover ficheiros no servidor

Escolha Cortar no menu de um ficheiro ou de uma pasta — ou vários ao mesmo tempo com Selecionar itens — depois abra a pasta de destino e toque em Colar na barra que aparece acima da lista. A movimentação é feita pelo servidor: nada é transferido para o telefone nem para o servidor, por isso um ficheiro de qualquer tamanho move-se instantaneamente.

Se esse nome já estiver ocupado no destino, o SSHBorg pergunta antes de mexer em nada. Um ficheiro pode ser substituído ou mantido ao lado do existente; duas pastas com o mesmo nome só podem ficar lado a lado, porque nenhum servidor SFTP sabe fundir pastas — o mv também recusa. Mover entre dois discos diferentes do servidor é igualmente recusado: mover é renomear, e renomear não atravessa sistemas de ficheiros. Para isso é precisa uma cópia, que o SSHBorg ainda não faz.

Editar ficheiros

Toque num ficheiro para abrir o seu menu e escolha Abrir no editor para o alterar diretamente no servidor. No telemóvel não fica nada: o ficheiro é lido para memória, editado e escrito de volta.

O ficheiro volta como chegou. A codificação é detetada e reutilizada ao guardar, os fins de linha LF ou CRLF mantêm-se, um ficheiro que acabava sem mudança de linha continua assim, e as permissões ficam iguais. Se a codificação foi lida mal, toque nela na barra ao fundo do editor e escolha outra — a lista só oferece codificações capazes de reproduzir exatamente os bytes daquele ficheiro, por isso uma escolha errada pode parecer errada no ecrã mas não danifica nada.

Ao guardar, é escrito um ficheiro temporário ao lado do original e depois renomeado para o lugar dele, de modo que uma ligação perdida a meio não deixa um ficheiro escrito pela metade no servidor.

Os ficheiros abrem até 4 MB, seja qual for o seu tamanho: só são desenhadas as linhas no ecrã, por isso um ficheiro de megabytes desliza como um curto. Acima disso a resposta é o terminal, com nano ou vi, que não tem limite nenhum.

Os ficheiros de configuração são coloridos — comentários, cadeias, números, chaves, cabeçalhos de secção, variáveis de shell e etiquetas XML — a partir do nome do ficheiro ou, quando o nome nada diz, da forma do conteúdo: scripts de shell, diretivas ao estilo do nginx e do sshd, INI, YAML, JSON e XML. O texto livre, as notas e os registos ficam de propósito sem cor, onde seria apenas ruído. A coloração é só aparência e nunca muda um byte.

Editor hexadecimal

Um ficheiro que não é texto abre no editor hexadecimal: os deslocamentos à esquerda, os bytes ao centro, os caracteres imprimíveis à direita e um teclado para os dígitos hexadecimais. Toque num byte e escreva dois dígitos para o substituir. Os valores mudam mas o tamanho nunca, por isso cada posição do ficheiro fica onde estava. Abrir em hexadecimal no menu de um ficheiro abre assim qualquer ficheiro, e um ficheiro de texto tomado por binário — com um byte NUL perdido lá dentro — ainda pode ser aberto como texto na mesma caixa.

// iOS
  • Enviar — abra o menu Ações (⋯) e escolha Enviar…; os ficheiros escolhem-se com o navegador Ficheiros do sistema.
  • Para onde vão as transferências — para a pasta própria do SSHBorg, que a app Ficheiros mostra em No meu iPhone → SSHBorg (No meu iPad num iPad). Uma transferência nunca substitui nada: se o nome já existir, o novo ficheiro recebe um nome numerado.
  • Pastas — toque longamente num ficheiro ou numa pasta para abrir o respetivo menu: Transferir, Renomear, Eliminar.
  • Seleção múltipla — escolha Selecionar itens no menu Ações e depois marque os itens. Um toque longo abre antes o menu do item.
  • Conflitos ao enviar — a caixa de diálogo oferece Substituir, Manter ambos (o ficheiro enviado recebe um novo nome) ou Cancelar.
  • Edição — o editor e o hexadecimal também existem aqui: o menu de um ficheiro, com uma pressão longa, oferece Abrir no editor e Abrir em hexadecimal. Enquanto carrega, o ficheiro passa pela pasta temporária da app e é removido assim que é lido.
  • Gravação — o ficheiro é escrito diretamente sobre o original, não num ficheiro temporário ao lado que depois é renomeado para o seu lugar, pelo que uma ligação perdida a meio da gravação pode deixá-lo escrito a meio.

// CHAVES SSH

A autenticação por chave é mais segura do que as palavras-passe e, após a configuração, não requer memorizar nem digitar nada.

Gerar uma chave

Toque no ícone da chave no topo do ecrã de hosts para abrir Chaves SSH e depois gere uma nova chave. O SSHBorg suporta:

  • Ed25519 — recomendado. Rápido, compacto e seguro.
  • ECDSA (P-256 / P-384) — boa compatibilidade com servidores mais antigos.
  • RSA (2048 / 4096 bits) — compatibilidade máxima, mas mais lento.

Dê à chave um nome significativo (ex. meu-vps ou servidor-trabalho) para a identificar mais tarde.

// NOTA DE SEGURANÇA
O SSHBorg não permite intencionalmente a exportação de chaves privadas. A chave nunca sai do dispositivo. Se precisar da mesma chave noutro dispositivo, gere uma nova lá e autorize-a separadamente nos seus servidores — é a abordagem mais segura.

Autorizar a chave no servidor

Após gerar uma chave, toque nela para ver a chave pública. Copie-a e cole-a no ficheiro ~/.ssh/authorized_keys do servidor para o utilizador pretendido.

  1. No telemóvel, abra SSHBorg → Chaves SSH (o ícone da chave no ecrã de hosts) → toque na chave → copie a chave pública.
  2. Inicie sessão no servidor (com palavra-passe ou com outra chave já disponível).
  3. Adicione a chave pública ao ficheiro de chaves autorizadas:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA...suachavecopiada..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  4. Tente ligar com o SSHBorg — deverá iniciar sessão sem pedir palavra-passe.
// REQUISITO DO SERVIDOR
Certifique-se de que o servidor tem PubkeyAuthentication yes em /etc/ssh/sshd_config. É o predefinido na maioria das distribuições, mas algumas imagens reforçadas desativam-no.

Cifrar chaves e palavras-passe guardadas

Ative Definições → Segurança → Cifrar dados sensíveis para guardar as chaves privadas e as palavras-passe dos hosts cifradas com uma chave protegida pelo hardware seguro do dispositivo — o Android Keystore ou, no iOS, o Porta-chaves. Fica desativado até o ativar; a dica de segurança mostrada no primeiro arranque aponta para ele.

Os dados cifrados ficam ligados ao dispositivo e a esta instalação da app: depois de a desinstalar, as chaves guardadas não podem ser recuperadas, e teria de gerar novas e autorizá-las de novo nos servidores. Juntamente com um bloqueio da app, é fortemente recomendado se guarda credenciais sensíveis no telemóvel.

Uma chave protegida por frase-passe pede-a uma única vez, ao importá-la, e depois é guardada aberta: a frase-passe nunca é escrita no dispositivo. Uma frase-passe costuma ser reutilizada noutro sítio, enquanto uma chave privada só vale por si — e uma chave guardada ao lado da própria frase-passe não estaria protegida por ela de qualquer forma. Aqui protegem-na o armazenamento privado da app, Cifrar dados sensíveis e o bloqueio da app. Uma chave importada por uma versão anterior ficou cifrada e não consegue autenticar-se; a lista assinala-as e têm de ser importadas de novo.

Dois formatos cifrados que a app não consegue abrir: o contentor do OpenSSL (BEGIN ENCRYPTED PRIVATE KEY) e o .ppk do PuTTY. A importação di-lo, em vez de aceitar a chave a meio. Decifre-a com a ferramenta que a criou e importe-a de novo — numa cópia, nunca no único ficheiro que tem:

ssh-keygen -p -N "" -f id_ed25519_copy
openssl pkcs8 -in key.pem -out key_plain.pem

O PuTTYgen converte um .ppk em Conversions → Export OpenSSH key.

// iOS
No iOS funciona da mesma forma: a frase-passe é pedida uma única vez, ao importar, a chave fica guardada aberta e a frase-passe não é escrita em lado nenhum. Recusa um formato a mais do que o Android: além do contentor do OpenSSL e do .ppk do PuTTY, também a cifragem PEM antiga (Proc-Type: 4,ENCRYPTED), a que o ssh-keygen -m PEM escreve quando lhe damos uma frase-passe. Decifre uma chave dessas e importe-a de novo.

// SUGESTÕES DE COMANDOS

O SSHBorg mostra uma barra de sugestões acima do teclado enquanto digita no terminal. As sugestões provêm do histórico de shell do utilizador com que se ligou.

Como funciona

Quando uma sessão terminal é aberta, o SSHBorg lê o ficheiro de histórico de shell no servidor remoto. Verifica as seguintes localizações por ordem:

  1. ~/.bash_history — predefinido para shells Bash
  2. ~/.zsh_history — predefinido para Zsh (também verificado como $HISTFILE se definido)
  3. ~/.local/share/fish/fish_history — para utilizadores de Fish shell

O primeiro ficheiro que existe e é legível é utilizado. Enquanto digita, os comandos são filtrados em tempo real e mostrados como chips na barra de sugestões. Toque num chip para inserir o comando.

Resolução de problemas

Não aparecem sugestões

  • O ficheiro de histórico pode ainda não existir (primeiro início de sessão ou shell não configurado para guardar o histórico).
  • Certifique-se de que o shell está configurado para guardar o histórico. Para Bash, adicione ao ~/.bashrc:
    HISTFILE=~/.bash_history
    HISTSIZE=10000
    HISTFILESIZE=20000
  • Para Zsh, adicione ao ~/.zshrc:
    HISTFILE=~/.zsh_history
    HISTSIZE=10000
    SAVEHIST=10000
    setopt APPEND_HISTORY SHARE_HISTORY

As sugestões pertencem ao utilizador errado

// LIMITAÇÃO CONHECIDA
Se se ligar como um utilizador e depois executar sudo su - root (ou mudar para outro utilizador com su), a barra de sugestões continua a mostrar o histórico do utilizador de início de sessão original, não de root. Isto porque o SSHBorg lê o ficheiro de histórico antes de o shell iniciar, usando as credenciais de ligação.

Para obter sugestões do histórico de root, adicione uma entrada de host separada no SSHBorg configurada para iniciar sessão diretamente como root (se o servidor permitir).

// GESTOS DO TERMINAL

O terminal responde a alguns gestos tácteis além da digitação:

  • Rolar o histórico — deslize para cima ou para baixo para navegar pelo buffer de scrollback do terminal.
  • Zoom — faça pinça para aumentar ou diminuir o tamanho do texto.
  • Copiar texto — pressione longamente em qualquer lugar do terminal para entrar no modo de seleção. Arraste as alças para ajustar a área selecionada, depois toque em Copiar seleção para o texto destacado, ou Copiar tudo para toda a saída. Toque fora para cancelar. No iOS, um toque longo seleciona a palavra sob o dedo e abre o menu do sistema com Copiar, Colar e Selecionar tudo; arraste a partir de uma das extremidades da seleção para a alargar.
  • Colar — use o botão Colar na barra de teclas adicionais (visível quando o teclado está aberto).

Aplicações de ecrã inteiro. Os programas que ocupam todo o ecrã — tmux, vim, nano, less — não têm histórico próprio, por isso enquanto estão em execução a vista permanece no ecrã ativo em vez de deslizar para a saída da shell que está por baixo.

Para rolar dentro deles, é a aplicação que tem de tratar disso. No tmux, adicione set -g mouse on ao ~/.tmux.conf: deslizar percorre então o histórico do painel sob o seu dedo. O mesmo se aplica a qualquer programa que aceite entrada do rato, como o vim com set mouse=a. Com o screen, verifique se altscreen on está em ~/.screenrc — em muitos sistemas está desativado por omissão, e o screen desenha por cima do histórico normal.

// DEFINIÇÕES DO TERMINAL

Em Definições → Terminal pode adaptar o terminal às suas necessidades:

  • Cores do terminal — o clássico esquema escuro (branco sobre preto), um esquema claro (preto sobre branco) mais legível à luz do dia, ou seguir o tema da app, que muda automaticamente com o tema da app. A alteração aplica-se de imediato, incluindo às sessões já abertas.
  • Manter o ecrã ligado — impede que o ecrã se desligue enquanto um terminal está aberto. Útil ao acompanhar logs ou comandos demorados. Desativado por predefinição.
  • Tamanho de letra predefinido — o tamanho do texto com que as novas sessões começam; continua a poder fazer zoom com dois dedos em cada sessão.
  • Scrollback, deslocamento invertido e sugestões de comandos — controlam quanto histórico de saída é mantido, a direção do deslocamento e a barra de sugestões descrita acima.
  • Ação de toque duplo — se quiser, um toque duplo no terminal envia Tab (conclusão automática) ou Tab duas vezes (lista todos os candidatos). Desativado por predefinição. No iOS, enquanto está desativado, um toque duplo seleciona uma palavra.

// BARRA DE TECLAS EXTRA

Quando o teclado virtual está aberto, aparece acima dele uma fila de botões de atalho. Deslize a barra lateralmente para aceder a todas as teclas.

Teclas modificadoras

Ctrl e Alt são alternâncias persistentes — toque numa e depois toque numa tecla de letra para enviar a combinação. Repõem-se automaticamente após o próximo toque.

  • Ctrl+C — interrompe o processo em execução.
  • Ctrl+D — envia EOF / fecha a shell.
  • Ctrl+Z — suspende o processo.
  • Ctrl+L — limpa o ecrã.

Modo palavra

O ícone de verificação ortográfica alterna o teclado entre o modo terminal e o modo palavra. No modo terminal (predefinido) a autocorreção e as sugestões de palavras estão desativadas — ideal para comandos e caminhos de ficheiros. No modo palavra o teclado comporta-se como um campo de texto normal, com sugestões e autocorreção ativadas. Útil ao escrever linguagem natural via SSH, por exemplo com Claude Code ou outras ferramentas interativas.

No Android, o modo palavra é também o que faz funcionar o ditado por voz. A tecla de microfone do teclado precisa de um campo de texto real onde escrever, por isso no modo terminal o ditado não produz nada — mude para o modo palavra antes de ditar.

Navegação e edição

  • ESC — tecla Escape.
  • Tab — autocompletar da shell.
  • ↑ ↓ ← → — teclas de seta do cursor.
  • Home / End — salta para o início ou fim da linha.
  • PgUp / PgDn — página acima / página abaixo.
  • Del — eliminar para a frente (carácter à direita do cursor).
  • Colar — cola a área de transferência no terminal.

Teclas de função

Deslize a barra para a direita para aceder às teclas F1 a F12.

Disposições e barras personalizadas

A barra existe em várias disposições. Toque na tecla ⇄ da barra para mudar: as teclas dão lugar à lista de barras disponíveis, toque numa e está feito — a escolha fica guardada. Também pode escolher e gerir as barras em Definições → Terminal → Barra de teclas extra → Personalizar.

  • Padrão — a clássica linha única com deslocamento.
  • Natural — uma linha ordenada por frequência de uso, com / - | ~ e as setas na ordem do teclado (← ↑ ↓ →).
  • Natural ×2 — duas linhas que preenchem a largura: ESC / - Home ↑ End PgUp sobre Tab Ctrl Alt ← ↓ → PgDn.
  • Natural ×3 — o mesmo mais uma terceira linha com as teclas de função.
  • Mínima — apenas ESC, Tab, Ctrl e as setas, para ecrãs estreitos.

Para criar a sua, duplique uma predefinição (menu ⋮ ao lado, ou um toque longo no iOS) ou crie uma barra nova. O editor mostra a barra exatamente como vai ficar: toque numa tecla para a selecionar e use os botões abaixo para a mover para a esquerda ou direita, para outra linha, alterá-la, adicionar uma tecla a seguir ou removê-la. Cada linha pode deslocar-se (as teclas mantêm a largura natural) ou preencher a largura do ecrã (até cerca de nove teclas por linha num telemóvel). Até três linhas; o tamanho das teclas é ajustável.

Além das teclas habituais, uma barra personalizada pode ter teclas de texto: qualquer texto, enviado tal como está — um simples |, um prefixo sudo ou um comando inteiro. Use \n para Enter, \t para Tab e \e para Escape; assim ls -la\n torna-se uma macro de um toque. Há mais duas teclas de ação: fixar mantém a barra visível com o teclado fechado e teclado mostra ou oculta o teclado.

As barras personalizadas fazem parte da cópia de segurança das definições. Na Android TV tudo funciona com o comando: as teclas e botões do editor são acessíveis com o D-pad.

// REENCAMINHAMENTO DE AGENTE

O reencaminhamento de agente SSH permite usar as chaves guardadas no SSHBorg para autenticar ligações adicionais feitas a partir de dentro do servidor remoto — por exemplo, para git clone de um repositório privado, ou para saltar para uma segunda máquina.

Ativar o reencaminhamento no SSHBorg

Ao adicionar ou editar um host, ative o interruptor Reencaminhamento de agente. O SSHBorg atuará como agente SSH para essa sessão.

Configuração no servidor

O servidor tem de permitir o reencaminhamento de agente. Verifique /etc/ssh/sshd_config:

AllowAgentForwarding yes

Este é o predefinido na maioria dos sistemas. Após alteração, reinicie o daemon SSH:

sudo systemctl restart sshd

Configuração de cliente por host (opcional)

Se também se liga a este servidor a partir de um portátil ou computador de secretária, pode configurar o reencaminhamento de forma permanente no seu ~/.ssh/config local:

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// NOTA DE SEGURANÇA
O reencaminhamento de agente dá ao servidor remoto acesso temporário ao socket do seu agente SSH. Um utilizador root (ou um processo comprometido) nesse servidor poderia usar as suas chaves para se ligar a outros sítios enquanto a sessão está ativa. Ative o reencaminhamento apenas em servidores de confiança.

// SUPORTE A CIFRAS LEGADAS

Alguns servidores mais antigos — equipamentos de rede, dispositivos embebidos ou sistemas com versões obsoletas do OpenSSH — suportam apenas algoritmos de cifra que os clientes SSH modernos já não anunciam por predefinição.

Ao ativar o interruptor Permitir cifras legadas nas definições do host, o SSHBorg adiciona os seguintes algoritmos à lista de negociação:

Algoritmos adicionados

  • Cifras: aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc
  • Troca de chaves: diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1
  • Tipo de chave de host: ssh-dss (DSA 1024-bit)

O servidor negoceia sempre o algoritmo mais forte suportado por ambos os lados, pelo que ativar esta opção não enfraquece as ligações a servidores modernos.

// iOS
No iOS as chaves de host ssh-dss não estão disponíveis: a biblioteca SSH com que a app é compilada já não inclui DSA, por isso um servidor cuja única chave de host seja DSA não é acessível a partir de um iPhone ou iPad, nem com esta opção ativada.
// NOTA DE SEGURANÇA
Os algoritmos desta lista são considerados criptograficamente fracos. Ative esta opção apenas para servidores que não pode atualizar.

// QUEDAS DE LIGAÇÃO E MULTIPLEXADORES

O SSH é uma ligação TCP ativa entre o seu telemóvel e o servidor. Se a ligação for interrompida — mesmo por um segundo — a sessão e tudo o que estava a correr nela perde-se.

Porque caem as ligações no móvel

As redes móveis são particularmente propensas a quedas de ligação por várias razões:

  • Mudanças de endereço IP — ao viajar ou mudar de antena, o seu operador pode atribuir-lhe um novo IP público. Como as ligações TCP estão ligadas ao endereço IP, a sessão SSH existente torna-se imediatamente inválida.
  • Mudança Wi-Fi ↔ dados móveis — mudar entre uma rede Wi-Fi e dados móveis (ou vice-versa) altera o seu IP e quebra qualquer ligação TCP aberta.
  • Tempos limite de inatividade — operadores e routers NAT encerram frequentemente ligações inativas após alguns minutos. As sessões ativas mas silenciosas (observar logs, aguardar entrada) são vulneráveis.
  • Perda de sinal — túneis, parques de estacionamento subterrâneos ou simplesmente um sinal fraco podem interromper brevemente a rede, o que é suficiente para terminar uma sessão.
  • Limites do Android em segundo plano — enquanto há uma sessão aberta, o SSHBorg mantém um serviço em primeiro plano, com a sua própria notificação, pelo que o Android já não interrompe as sessões ao fim de um tempo fixo: uma sessão deixada aberta continua a trabalhar enquanto usa outras apps. Ainda podem terminá-la o telefone a recuperar memória ou a poupança de bateria que alguns fabricantes aplicam às apps em segundo plano — se as suas sessões pararem sozinhas, a primeira coisa a tentar é excluir o SSHBorg da otimização da bateria. Ao reabrir a app pode voltar a ligar-se.
  • O iOS suspende as apps em segundo plano — cerca de trinta segundos depois de o SSHBorg sair do ecrã, o iOS suspende-o e as ligações caem. Quando volta, o SSHBorg volta a ligar-se sozinho (pedindo a palavra-passe apenas se não houver nenhuma guardada) e marca o ponto na saída: é uma nova shell, e o que estava a correr na anterior perdeu-se. No iOS, um multiplexador é a única forma de manter trabalho a correr enquanto usa outra app.
// IMPORTANTE
Se estiver a executar um comando longo (uma compilação, uma cópia de segurança, uma migração de base de dados) diretamente no terminal SSH e a ligação cair, o comando é interrompido imediatamente. Qualquer trabalho parcial pode ficar num estado inconsistente.

A solução: tmux ou screen

Um multiplexador de terminal executa uma sessão persistente no servidor, completamente independente da sua ligação SSH. Se a ligação cair, a sessão e tudo o que está a correr continua. Ao religar, reincorpora-se e encontra tudo exatamente como deixou.

É o hábito mais útil para quem gere servidores a partir do telemóvel.

Início rápido com tmux

tmux está disponível na maioria das distribuições Linux modernas e é a escolha recomendada.

# Iniciar uma nova sessão com nome
tmux new -s work

# Desligar da sessão (deixá-la a correr)
Ctrl+B, depois D

# Listar sessões em execução
tmux ls

# Religar a uma sessão
tmux attach -t work

# Religar à sessão mais recente
tmux attach

Início rápido com screen

screen é mais antigo mas disponível em praticamente qualquer sistema Unix, incluindo imagens mínimas onde tmux pode não estar instalado.

# Iniciar uma nova sessão com nome
screen -S work

# Desligar da sessão
Ctrl+A, depois D

# Listar sessões em execução
screen -ls

# Religar a uma sessão
screen -r work

Fluxo de trabalho recomendado no móvel

  1. Ligue ao servidor com o SSHBorg.
  2. Inicie ou reincorpore-se imediatamente a uma sessão tmux/screen: tmux attach || tmux new -s main
  3. Execute os seus comandos dentro do multiplexador.
  4. Se a ligação cair, basta religar — a sessão ainda está lá.
// DICA
Pode adicionar tmux attach || tmux new -s main ao seu ~/.bashrc ou ~/.zshrc no servidor para que uma sessão de multiplexador inicie automaticamente sempre que iniciar sessão via SSHBorg.

// JUMP HOSTS

Um jump host (também chamado bastion host) é um servidor intermédio pelo qual tem de passar para alcançar um servidor alvo não diretamente acessível a partir da internet. O SSHBorg suporta nativamente cadeias de salto simples e multi-salto.

Configurar um jump host no SSHBorg

  1. Adicione o servidor bastião como host normal no SSHBorg (ex. bastion).
  2. Adicione o servidor alvo como outro host.
  3. Nas definições do host alvo, defina Jump host para o bastião criado.
  4. Ative Reencaminhamento de agente na entrada do bastião — isto permite que a sua chave seja reencaminhada através do bastião para autenticação no alvo.
// COMO FUNCIONA
O SSHBorg estabelece primeiro uma ligação SSH ao bastião e depois abre um canal TCP reencaminhado através dele para o servidor alvo. A chave privada nunca sai do telemóvel — o bastião apenas faz proxy do fluxo cifrado.

Cadeias multi-salto

Se precisar de saltar por mais de um servidor intermédio (ex. internet → bastião → dmz → alvo), crie uma entrada para cada salto e encadeie-as:

  • bastion — sem jump host, reencaminhamento de agente ativo
  • dmz — jump host = bastion, reencaminhamento de agente ativo
  • target — jump host = dmz
// IMPORTANTE
O reencaminhamento de agente tem de estar ativo em cada salto intermédio, não apenas no primeiro. Sem isso, a cadeia de autenticação quebra e a ligação ao servidor final falhará com um erro "permission denied".

Configuração manual equivalente (para referência)

A configuração equivalente num ~/.ssh/config de computador tem este aspeto:

Host bastion
    HostName bastion.example.com
    User admin
    ForwardAgent yes

Host target
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    ForwardAgent yes

Com esta configuração, ssh target no seu computador salta transparentemente pelo bastião.

Requisitos de firewall

  • O telemóvel tem de conseguir alcançar o bastião na sua porta SSH (normalmente 22).
  • O bastião tem de conseguir alcançar o alvo na sua porta SSH.
  • O alvo não precisa de ser alcançável diretamente a partir do telemóvel.

// SESSÕES MÚLTIPLAS

O SSHBorg permite manter várias sessões de terminal SSH e gestor de ficheiros SFTP abertas ao mesmo tempo, mesmo para servidores diferentes.

  • Toque num host para abrir um terminal, ou escolha Ficheiros no respetivo menu para abrir o gestor de ficheiros. Se o host já tiver sessões abertas, o mesmo menu abre outras.
  • Mude entre sessões abertas com os separadores por baixo do terminal; um host com várias sessões abre um seletor numerado.
  • As sessões permanecem ativas em segundo plano enquanto a ligação de rede se mantiver — no iOS apenas durante pouco tempo, veja Quedas de ligação.
  • A lista de hosts mostra um pequeno distintivo junto a cada host com o número de sessões SSH e SFTP ativas, para ver de relance o que está aberto.
// DICA
Comandos de longa duração (compilações, cópias de segurança, seguimento de logs) continuam a correr mesmo quando muda para outra sessão. Use um multiplexador de terminal como tmux ou screen no servidor se quiser que sobrevivam mesmo a uma queda de ligação SSH.

// SEGURANÇA DA APP

Bloqueio da app

Escolha como a app é protegida em Definições → Segurança → Bloqueio da app: Nenhum (predefinido), Apenas biométrico (impressão digital ou reconhecimento facial), Bloqueio do dispositivo (o PIN, o padrão ou a palavra-passe do dispositivo, além da biometria) ou um PIN ou frase-passe na app. Quando um bloqueio está ativo, o SSHBorg exige autenticação antes de mostrar qualquer host, credencial ou dados de sessão. Se a autenticação for recusada, ou se a cancelar, a app permanece no seu próprio ecrã de bloqueio com um botão para tentar de novo: não fecha, pelo que as sessões que tinha abertas continuam lá quando desbloquear.

O PIN ou frase-passe na app funciona em qualquer dispositivo, mesmo sem hardware biométrico ou um bloqueio de ecrã do sistema — o que o torna a escolha certa numa Android TV. Alterá-lo ou removê-lo pede primeiro o atual. Não é recuperável se for esquecido: teria de limpar os dados da app ou reinstalá-la, por isso mantenha uma cópia de segurança dos seus hosts.

Pode definir um tempo limite de inatividade — após esse tempo em segundo plano, a app bloqueia automaticamente.

// iOS
O bloqueio oferece Nenhum, Apenas biométrico (Face ID ou Touch ID) e Bloqueio do dispositivo (o código do dispositivo ou a biometria). Não há PIN nem frase-passe na app.

Proteção de capturas de ecrã

Por predefinição, o SSHBorg bloqueia capturas de ecrã e gravação de ecrã para evitar que conteúdo sensível do terminal vaze através do ecrã de apps recentes ou ferramentas de captura.

Se precisar de fazer uma captura (ex. para partilhar uma saída do terminal), pode desativar temporariamente a proteção em Definições → Segurança → Permitir capturas.

// iOS
O iOS não permite que uma app bloqueie capturas ou gravações de ecrã, por isso esta definição não existe. Com um bloqueio da app ativo, o SSHBorg tapa o seu conteúdo assim que sai do ecrã, para que hosts e terminais não apareçam no seletor de apps.

Armazenamento de credenciais

Com Cifrar dados sensíveis ativado (veja Chaves SSH), as palavras-passe e as chaves privadas são guardadas cifradas com uma chave protegida no Android Keystore — baseado em hardware no Android 10+ — ou, no iOS, no Porta-chaves, restrita a este dispositivo. As credenciais nunca são escritas em armazenamento externo nem transmitidas para lado nenhum.

// NOTA SOBRE CÓPIAS DE SEGURANÇA
Como a chave de cifração nunca sai do hardware seguro do dispositivo, as chaves não podem ser restauradas a partir de uma cópia de segurança na cloud ou do dispositivo e não serão transferidas automaticamente para um novo telemóvel. Antes de mudar de dispositivo, certifique-se de autorizar uma nova chave gerada no novo dispositivo em todos os seus servidores.

A configuração mais segura

Cada peça acima já serve por si. Juntas são o mais seguro que a app oferece, e são dois minutos:

  1. Ative Definições → Segurança → Cifrar dados sensíveis.
  2. Ponha o bloqueio da app em Apenas biométrico — ou em PIN ou frase-passe se preferir não depender da biometria do telefone.
  3. Ponha o tempo de bloqueio em Imediatamente, ou no máximo 30 segundos.
  4. Gere uma chave nova na app, com um nome que diga de que dispositivo é.
  5. Autorize essa chave nos seus servidores e use-a em vez da palavra-passe.

Uma chave gerada no telefone nunca existiu noutro lugar: não há uma cópia mais antiga que possa já ter escapado, nem nada a limpar noutra máquina. Uma chave por dispositivo também significa que perder o telefone custa uma linha no authorized_keys — remove-a e os outros dispositivos continuam a funcionar, e é por isso que vale a pena escolher bem o nome.

O que nada disto consegue fazer: se o telefone estiver comprometido, essa chave está comprometida com ele, seja o que for que a proteja no disco. Uma frase-passe também não a salvaria — quem consegue ler o armazenamento da app também lê o que escreve. É por isso que o SSHBorg pede a frase-passe de uma chave uma única vez, ao importá-la, e guarda a chave aberta em vez de guardar a frase (ver Chaves SSH).

// BACKUP DE CONFIGURAÇÃO

O SSHBorg pode exportar e importar configurações de hosts e definições da aplicação como ficheiro JSON. Isto permite transferir a lista de servidores para outro dispositivo ou manter uma cópia de segurança portátil da sua configuração.

// IMPORTANTE
O backup inclui as configurações dos hosts e as definições da aplicação (terminal, aparência, comportamento). Palavras-passe e chaves SSH nunca são exportadas — o material da chave tem de ser reconfigurado num novo dispositivo. Porém, a cópia regista o nome da chave que cada host usa: se recriar uma chave com o mesmo nome antes de importar, os seus hosts voltam a ser associados automaticamente.

Exportar

Aceda a Definições → Backup → Exportar cópia. Escolha onde guardar o ficheiro através do seletor de ficheiros do sistema. O ficheiro chama-se sshborg_backup.json (sshborg-backup-data.json no iOS) por predefinição.

Importar

Aceda a Definições → Backup → Importar cópia. Selecione o ficheiro .json previamente exportado (ou criado manualmente). O SSHBorg irá fundi-lo com a lista de hosts existente:

  • Os hosts cujo nome corresponde a uma entrada existente são atualizados.
  • Os hosts com um novo nome são adicionados.
  • Os hosts não presentes no ficheiro ficam inalterados.
  • Um host atualizado mantém a palavra-passe, a chave e a chave de host aceite guardadas — a cópia nunca as contém.
  • Um host sem chave é associado a uma chave cujo nome corresponde ao keyLabel exportado, se existir; caso contrário, o campo é ignorado.
  • Um host atualizado mantém os dados de utilização que este dispositivo já tem — última ligação, contador e posição manual; o ficheiro só preenche o que falta.

Formato JSON

O ficheiro exportado é um objeto JSON simples. Também pode criá-lo manualmente para importar em bloco uma lista de servidores de outra fonte.

{
  "version": 7,
  "exported_at": "2026-05-14T10:00:00Z",
  "groups": [
    { "name": "Produção", "color": -1754827, "position": 0 }
  ],
  "hosts": [
    {
      "label":           "O meu VPS",
      "hostname":        "203.0.113.42",
      "port":            22,
      "username":        "ubuntu",
      "agentForwarding": false,
      "jumpMode":        "simple",
      "jumpHosts":       null,
      "jumpHostIdList":  null,
      "portForwardings": null,
      "sftpStartMode":   "last",
      "sftpStartDir":    null,
      "sftpShowHidden":  false,
      "allowLegacyCiphers": false,
      "position":        0,
      "lastConnected":   1757404800000,
      "connectCount":    12,
      "keyLabel":         "Chave do meu VPS",
      "group":           "Produção"
    }
  ],
  "settings": {
    "night_mode":            0,
    "scrollback_lines":      2000,
    "terminal_font_size":    13,
    "terminal_color_scheme": 0,
    "double_tap_action":     0
  }
}

O objeto settings (opcional) contém as definições da aplicação e é escrito automaticamente ao exportar; pode omiti-lo ao criar o ficheiro manualmente.

Referência de campos

  • label — nome mostrado no SSHBorg. Usado como chave única para a fusão na importação. Obrigatório.
  • hostname — endereço ou IP do servidor (IPv4 ou IPv6). Obrigatório.
  • port — porta SSH. Predefinição: 22.
  • username — utilizador de login. Obrigatório.
  • agentForwarding — true para ativar o reencaminhamento do agente SSH. Predefinição: false.
  • jumpMode — "simple" (usa o texto de jumpHosts) ou "host_list" (usa IDs internos do SSHBorg). Use "simple" ao criar o ficheiro manualmente.
  • jumpHosts — jump hosts separados por vírgula no formato [utilizador@]host[:porta]. Apenas usado quando jumpMode é "simple".
  • portForwardings — regras de reencaminhamento de porta local separadas por nova linha em sintaxe SSH -L, ex. "8080:localhost:8080".
  • sftpStartMode — diretório inicial SFTP: "last" (lembrar o último visitado), "fixed" (usar sempre sftpStartDir), "home" (diretório pessoal do servidor). Predefinição: "last".
  • sftpStartDir — caminho a usar quando sftpStartMode é "fixed".
  • sftpShowHidden — true para mostrar os ficheiros ocultos (dotfiles, nomes começados por ".") no explorador SFTP deste anfitrião. Predefinição false.
  • allowLegacyCiphers — true para ativar os algoritmos legados descritos acima. Predefinição: false.
  • keyLabel — nome da chave SSH que este host usa. Ao importar, se existir uma chave com este nome, é associada ao host; caso contrário, o campo é ignorado. A própria chave nunca é incluída na cópia.
  • group — nome do grupo a que o host pertence. Os grupos estão no array groups de nível superior, com name e color (ARGB como inteiro de 32 bits com sinal). Se um host referir um grupo ausente do array, este é criado automaticamente com uma cor predefinida — ao escrever o ficheiro à mão pode omitir o array.
  • color — cor opcional do host (ARGB como inteiro de 32 bits com sinal). Prevalece sobre a cor do grupo.
  • position — lugar do host na ordem manual, contado dentro da sua própria secção (o bloco sem grupo ou um grupo). Se omitido, o host é acrescentado no fim. Os grupos têm a sua própria position no array groups.
  • lastConnected — momento da última ligação, em milissegundos desde a época Unix. Alimenta a ordem "usados recentemente".
  • connectCount — quantas sessões de terminal foram abertas para este host. Alimenta a ordem "mais usados".
// CAMPOS OPCIONAIS
Todos os campos exceto label, hostname e username são opcionais. Os campos omitidos assumem os seus valores predefinidos.

// ANDROID TV

O SSHBorg funciona em Android TV e Google TV. Usa-se com o D-pad do comando, mas por ser uma app muito baseada em texto, um teclado físico faz uma grande diferença.

Navegar com o comando

  • Setas do D-pad — movem o foco entre linhas e controlos.
  • OK (centro) — a ação principal: ligar a um host, abrir uma pasta, transferir um ficheiro, expandir um grupo.
  • Voltar — subir um nível ou sair do ecrã.

Abrir o menu de uma linha

Para renomear, eliminar, editar, duplicar ou transferir a partir de uma linha, abra o seu menu: prima a tecla Menu (opções) do comando na linha focada, ou mantenha OK premido (pressão longa). O OK sozinho executa a ação principal, não o menu.

Escrever: use um teclado físico

Um teclado físico — USB ou Bluetooth (o Android TV suporta ambos) é fortemente recomendado e praticamente indispensável para o terminal. Com ele, os campos de texto e a shell funcionam normalmente.

Sem um, o teclado no ecrã ainda serve para entradas curtas: foque um campo, prima OK para o abrir, escreva e prima OK / Ir no teclado para confirmar — no pedido de palavra-passe isto liga diretamente. Introduzir comandos da shell com o teclado no ecrã é, no entanto, pouco prático.

Bloquear a app numa TV

Uma TV normalmente não tem leitor de impressões nem bloqueio de ecrã, por isso proteja a app com o bloqueio integrado por PIN ou frase-passe (Definições → Segurança) — funciona totalmente com o comando ou um teclado. Ver Segurança da app.

// LICENÇAS OPEN SOURCE

O SSHBorg é software livre, publicado sob a GNU General Public License v3. O código-fonte está no GitHub, tanto para a app Android como para a de iOS. Usa as seguintes bibliotecas, cada uma com a sua licença:

  • mwiede/JSch — o protocolo SSH no Android — licença ao estilo BSD
  • Bouncy Castle — a criptografia no Android — licença ao estilo MIT
  • sora-editor — o componente de edição de texto usado para alterar ficheiros no servidor, no Android — GNU LGPL v2.1
  • libssh2 — o protocolo SSH no iOS — licença BSD

Nenhuma delas se liga a nada por conta própria: os únicos endereços que o SSHBorg contacta são os servidores que lhe indicar, e sshborg.com quando toca num link. Não há bibliotecas de estatísticas, de publicidade nem rastreadores de qualquer tipo.

⚙⚙⚙