⚙⚙⚙

// AGGIUNGERE UN HOST

Tocca il pulsante + nella schermata degli host per aggiungere un nuovo server (su iOS apre un piccolo menu: scegli Aggiungi Host).

Campi obbligatori

  • Hostname / IP — l'indirizzo o l'IP del server. Sono supportati sia IPv4 che IPv6.
  • Porta — predefinita a 22. Modificala se il tuo server usa una porta SSH diversa.
  • Nome utente — l'utente Unix con cui vuoi accedere (es. ubuntu, root, deploy).
  • Autenticazione — scegli tra password o chiave SSH (consigliata).

Verifica del fingerprint

Alla prima connessione SSHBorg mostra il fingerprint del server e chiede di accettarlo. È un controllo di sicurezza: garantisce che ti stai connettendo alla macchina giusta e non a un impostore. Verifica che il fingerprint corrisponda a quello fornito dall'amministratore del server o ottenuto tramite un canale affidabile prima di accettare.

Una volta accettato, il fingerprint viene salvato localmente. Se cambia in una connessione futura, SSHBorg ti avviserà — potrebbe indicare una reinstallazione del server, una rotazione delle chiavi o un attacco man-in-the-middle.

// SUGGERIMENTO
Puoi controllare il fingerprint del server in qualsiasi momento con:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// GRUPPI DI HOST

Quando l'elenco dei server cresce, puoi organizzare gli host in gruppi richiudibili e colorati — ad esempio Produzione, Lab di casa, Clienti.

Creare un gruppo

  1. Aggiungi o modifica un host e apri il menu Gruppo.
  2. Scegli Nuovo gruppo…, digita un nome e seleziona uno dei colori predefiniti.
  3. Salva l'host — l'elenco degli host ora mostra il gruppo come sezione dedicata.

Su iOS un gruppo si può creare anche da solo, dal pulsante + → Nuovo gruppo.

Usare i gruppi

  • Comprimi / espandi — tocca l'intestazione di un gruppo per chiuderlo o riaprirlo. Lo stato viene ricordato, anche dopo il riavvio dell'app.
  • Colore — il colore del gruppo appare come pallino nell'intestazione e come tinta delle icone degli host del gruppo.
  • Modifica — tieni premuta l'intestazione e scegli Modifica per rinominare il gruppo o cambiarne il colore.
  • Elimina — tieni premuta l'intestazione e scegli Elimina. Gli host del gruppo non vengono cancellati: tornano semplicemente senza gruppo.

I colori si scelgono dagli swatch rapidi o, su Android, liberamente con il selettore a gradiente — su iOS si sceglie tra gli swatch. Un host può anche avere un colore proprio — si imposta nell'editor dell'host, subito sotto il gruppo — che prevale sul colore del gruppo e funziona anche per gli host senza gruppo.

Gli host senza gruppo restano in cima all'elenco e, se non crei alcun gruppo, l'elenco appare e si comporta esattamente come prima.

Ordinamento

Scegli come disporre la lista da Impostazioni → Ordinamento host:

  • Alfabetico (predefinito) — gruppi per nome, host per etichetta dentro ciascuno.
  • Recenti — in cima l'host a cui ti sei collegato per ultimo; quelli mai usati restano in fondo.
  • Più usati — prima gli host con più connessioni.
  • Manuale — l'ordine che imposti tu.

Nelle prime tre modalità i gruppi restano in ordine alfabetico, così le intestazioni non si spostano mai e cambia solo la disposizione degli host al loro interno. Nell'ordine manuale si possono spostare anche i gruppi.

Per riordinare scegli Manuale, poi apri il menu di un host o di un'intestazione di gruppo — il pulsante ⋮ (… su iOS), una pressione prolungata oppure il tasto Menu del telecomando su Android TV — e usa Sposta su / Sposta giù. Un host si sposta solo dentro la propria sezione: per metterlo in un altro gruppo cambia il gruppo nell'editor dell'host. Passando a manuale viene mantenuto esattamente l'ordine che avevi a schermo in quel momento, quindi non si scompiglia niente, e gli host aggiunti in seguito finiscono in fondo alla loro sezione.

// FILE MANAGER SFTP

Il file manager SFTP ti permette di navigare, caricare, scaricare, rinominare ed eliminare file sul server direttamente dal telefono. Aprilo dalla schermata degli host con File nel menu dell'host.

Navigazione

Tocca una cartella per aprirla. Usa la freccia indietro o tocca qualsiasi segmento della barra del percorso per risalire nell'albero delle directory. Toccando un file si apre quello che puoi farci: scaricare, aprire nell'editor, rinominare, eliminare.

I link simbolici sono mostrati con un piccolo badge a forma di catena. Toccare un link simbolico naviga verso la sua destinazione: se punta a una cartella la si entra, se punta a un file si comporta come un file normale.

Caricamento file

Tocca il pulsante di caricamento (↑) per scegliere uno o più file dallo storage del telefono. Il caricamento inizia immediatamente e il progresso viene mostrato in cima alla schermata.

Download di file e cartelle

Tocca l'icona di download a destra nella riga di un file per scaricarlo subito. Per scaricare un'intera cartella, tocca l'icona di download accanto ad essa — SSHBorg scaricherà l'intero albero di directory e lo salverà nella cartella Download del telefono.

Se un file esiste già nella destinazione, un dialogo chiederà se sovrascrivere, saltare il file, oppure annullare l'intero trasferimento.

// NOTA SUI LINK SIMBOLICI
Durante il download di una cartella, i link simbolici che puntano a directory vengono saltati — vengono scaricati solo i file normali (inclusi i link simbolici che puntano a file). Questo evita download ricorsivi involontari.

Selezione multipla e operazioni batch

Tocca Seleziona elementi nella barra in alto per entrare in modalità selezione, poi spunta gli elementi che ti servono. La barra degli strumenti mostra le azioni disponibili:

  • Scarica — scarica tutti i file e le cartelle selezionati in una volta, con un dialogo di avanzamento e supporto all'annullamento.
  • Elimina — elimina tutti gli elementi selezionati. L'eliminazione di una cartella non vuota rimuove tutto il suo contenuto ricorsivamente. Non è possibile annullare l'operazione.

Spostare i file sul server

Scegli Taglia nel menu di un file o di una cartella — o di più elementi insieme con Seleziona elementi — poi apri la cartella di destinazione e tocca Incolla nella barra comparsa sopra l'elenco. Lo spostamento lo fa il server: non viene scaricato né caricato niente, quindi un file di qualsiasi dimensione si sposta istantaneamente.

Se nella destinazione quel nome è già occupato, SSHBorg chiede prima di toccare qualcosa. Un file può essere sostituito o tenuto accanto a quello esistente; due cartelle con lo stesso nome possono solo stare affiancate, perché nessun server SFTP sa unire due cartelle — e mv si rifiuta anche lui. È rifiutato anche lo spostamento fra due dischi diversi del server: uno spostamento è una rinomina, e una rinomina non attraversa i filesystem. Per quello serve una copia, che SSHBorg per ora non fa.

Modificare i file

Tocca un file per aprire il suo menu e scegli Apri nell'editor per modificarlo direttamente sul server. Sul telefono non resta niente: il file viene letto in memoria, modificato e riscritto sul server.

Il file torna com'era arrivato. La codifica dei caratteri viene riconosciuta e riusata al salvataggio, la fine riga LF o CRLF viene mantenuta, un file che finiva senza a capo continua a finire senza, e i permessi restano quelli. Se la codifica è stata letta male, toccala nella barra in fondo all'editor e scegline un'altra — l'elenco propone solo codifiche in grado di riprodurre esattamente i byte di quel file, quindi una scelta sbagliata può sembrare sbagliata a schermo ma non può rovinare il file.

Il salvataggio scrive su un file temporaneo affianco all'originale e poi lo rinomina al suo posto, così una connessione caduta a metà non può lasciare un file scritto a metà sul server.

I file si aprono fino a 4 MB, qualunque sia la loro lunghezza: vengono disegnate solo le righe a schermo, quindi un file di megabyte scorre come uno corto. Oltre quella soglia la risposta è il terminale, con nano o vi, che non ha nessun limite.

I file di configurazione vengono colorati — commenti, stringhe, numeri, chiavi, intestazioni di sezione, variabili di shell e tag XML — in base al nome del file oppure, quando il nome non dice niente, alla forma del contenuto: script di shell, direttive in stile nginx e sshd, INI, YAML, JSON e XML. Il testo libero, le note e i log restano volutamente senza colore, dove sarebbe solo rumore. La colorazione è solo aspetto e non cambia un byte.

Editor esadecimale

Un file che non è testo si apre nell'editor esadecimale: gli scostamenti a sinistra, i byte al centro, i caratteri stampabili a destra e un tastierino per le cifre esadecimali. Tocca un byte e digita due cifre per sostituirlo. I valori cambiano ma la lunghezza no, quindi ogni posizione nel file resta dov'era. Apri in esadecimale nel menu di un file apre così qualunque file, e un file di testo scambiato per binario — per esempio con un byte NUL finito lì per sbaglio — si può comunque aprire come testo dallo stesso dialogo.

// iOS
  • Caricare — apri il menu Azioni (⋯) e scegli Carica…; i file si scelgono con il selettore di sistema dell'app File.
  • Dove finiscono i download — nella cartella di SSHBorg, che l'app File mostra in Su iPhone → SSHBorg (Su iPad su un iPad). Un download non sovrascrive mai nulla: se il nome è già usato, il nuovo file riceve un nome numerato.
  • Cartelle — tieni premuto un file o una cartella per il suo menu: Scarica, Rinomina, Elimina.
  • Selezione multipla — scegli Seleziona elementi nel menu Azioni, poi spunta gli elementi. Una pressione prolungata apre invece il menu dell'elemento.
  • Conflitti in caricamento — la finestra offre Sovrascrivi, Mantieni entrambi (il file caricato riceve un nuovo nome) o Annulla.
  • Modifica — ci sono anche qui l'editor e quello esadecimale: il menù di un file, con la pressione lunga, offre Apri nell'editor e Apri in esadecimale. Mentre viene caricato, il file passa dalla cartella temporanea dell'app e viene rimosso appena è stato letto.
  • Salvataggio — il file viene scritto direttamente sull'originale, non su un file temporaneo accanto che poi viene rinominato al suo posto: una connessione che cade a metà salvataggio può quindi lasciarlo scritto a metà.

// CHIAVI SSH

L'autenticazione tramite chiave è più sicura delle password e, una volta configurata, non richiede di ricordare o digitare nulla.

Generare una chiave

Tocca l'icona della chiave in alto nella schermata degli host per aprire Chiavi SSH, poi genera una nuova chiave. SSHBorg supporta:

  • Ed25519 — consigliata. Veloce, compatta e sicura.
  • ECDSA (P-256 / P-384) — buona compatibilità con server più vecchi.
  • RSA (2048 / 4096 bit) — massima compatibilità, ma più lenta.

Dai alla chiave un nome significativo (es. mio-vps o server-lavoro) per riconoscerla in seguito.

// NOTA DI SICUREZZA
SSHBorg non permette intenzionalmente l'esportazione delle chiavi private. La chiave non lascia mai il dispositivo. Se hai bisogno della stessa chiave su un altro dispositivo, genera una nuova chiave su quel dispositivo e autorizzala separatamente sui tuoi server — è l'approccio più sicuro.

Autorizzare la chiave sul server

Dopo aver generato una chiave, toccala per vedere la chiave pubblica. Copiala e incollala nel file ~/.ssh/authorized_keys del server per l'utente con cui vuoi accedere.

  1. Sul telefono, apri SSHBorg → Chiavi SSH (l'icona della chiave nella schermata degli host) → tocca la chiave → copia la chiave pubblica.
  2. Accedi al tuo server (con una password, o un'altra chiave già presente).
  3. Aggiungi la chiave pubblica al file delle chiavi autorizzate:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA...latuachiave..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  4. Prova a connetterti con SSHBorg — dovrebbe accedere senza chiedere la password.
// REQUISITO SERVER
Assicurati che il server abbia PubkeyAuthentication yes in /etc/ssh/sshd_config. È il valore predefinito sulla maggior parte delle distribuzioni, ma alcune immagini hardened lo disabilitano.

Cifrare chiavi e password salvate

Attiva Impostazioni → Sicurezza → Cifra dati sensibili per conservare le chiavi private e le password degli host cifrate con una chiave custodita nell'hardware sicuro del dispositivo — l'Android Keystore, o il Portachiavi su iOS. Resta disattivata finché non la abiliti; il consiglio di sicurezza mostrato al primo avvio la segnala.

I dati cifrati sono legati al dispositivo e a questa installazione dell'app: dopo la disinstallazione le chiavi salvate non si possono recuperare, e dovresti generarne di nuove e autorizzarle di nuovo sui server. Insieme a un blocco app, è fortemente consigliata se conservi sul telefono credenziali sensibili.

Una chiave protetta da passphrase la chiede una volta sola, al momento dell'importazione, e viene poi conservata aperta: la passphrase non viene scritta sul dispositivo. Una passphrase di solito è riusata altrove, mentre una chiave privata vale solo per sé — e una chiave conservata accanto alla propria passphrase non ne sarebbe protetta comunque. Qui la proteggono lo spazio privato dell'app, Cifra dati sensibili e il blocco dell'app. Una chiave importata da una versione precedente è rimasta cifrata e non può autenticarsi: nella lista sono segnalate, e vanno importate di nuovo.

Due formati cifrati che l'app non sa aprire: il contenitore di OpenSSL (BEGIN ENCRYPTED PRIVATE KEY) e il .ppk di PuTTY. L'importazione lo dice, invece di prendere la chiave a metà. Decifrala con lo strumento che l'ha creata e importala di nuovo — lavorando su una copia, non sull'unico file che hai:

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

PuTTYgen converte un .ppk da Conversions → Export OpenSSH key.

// iOS
Su iOS funziona allo stesso modo: la passphrase viene chiesta una volta sola, all'importazione, la chiave è conservata aperta e la passphrase non viene scritta da nessuna parte. Rifiuta un formato in più rispetto ad Android: oltre al contenitore di OpenSSL e al .ppk di PuTTY, anche la vecchia cifratura PEM (Proc-Type: 4,ENCRYPTED), quella che ssh-keygen -m PEM scrive quando gli si dà una passphrase. Decifra una chiave così e importala di nuovo.

// SUGGERIMENTI COMANDI

SSHBorg mostra una barra di suggerimenti sopra la tastiera mentre digiti nel terminale. I suggerimenti vengono presi dalla cronologia della shell dell'utente con cui ti sei connesso.

Come funziona

Quando si apre una sessione terminale, SSHBorg legge il file di cronologia della shell dal server remoto. Cerca i seguenti percorsi in ordine:

  1. ~/.bash_history — predefinito per le shell Bash
  2. ~/.zsh_history — predefinito per Zsh (verificato anche come $HISTFILE se impostato)
  3. ~/.local/share/fish/fish_history — per gli utenti di Fish shell

Viene utilizzato il primo file esistente e leggibile. Mentre digiti, i comandi vengono filtrati in tempo reale e mostrati come chip nella barra dei suggerimenti. Tocca un chip per inserire il comando.

Risoluzione problemi

Nessun suggerimento appare

  • Il file di cronologia potrebbe non esistere ancora (primo accesso, o shell non configurata per salvare la cronologia).
  • Assicurati che la tua shell salvi la cronologia. Per Bash, aggiungi a ~/.bashrc:
    HISTFILE=~/.bash_history
    HISTSIZE=10000
    HISTFILESIZE=20000
  • Per Zsh, aggiungi a ~/.zshrc:
    HISTFILE=~/.zsh_history
    HISTSIZE=10000
    SAVEHIST=10000
    setopt APPEND_HISTORY SHARE_HISTORY

I suggerimenti appartengono all'utente sbagliato

// LIMITAZIONE NOTA
Se ti connetti come un utente e poi esegui sudo su - root (o passi a un altro utente con su), la barra dei suggerimenti mostra ancora la cronologia dell'utente di login originale, non di root. Questo perché SSHBorg legge il file di cronologia prima che la shell avvii, usando le credenziali con cui ti sei connesso.

Per ottenere i suggerimenti dalla cronologia di root, aggiungi un host separato in SSHBorg configurato per accedere direttamente come root (se il server lo consente).

// GESTURE DEL TERMINALE

Il terminale risponde ad alcune gesture touch oltre alla digitazione:

  • Scorrere la cronologia — scorri su o giù per navigare nel buffer di scrollback del terminale.
  • Zoom — pizzica per aumentare o diminuire la dimensione del testo.
  • Copiare il testo — tieni premuto in un punto del terminale per entrare in modalità selezione. Trascina i marcatori per regolare l'area selezionata, poi tocca Copia selezione per copiare solo il testo evidenziato, oppure Copia tutto per copiare l'intero output. Tocca altrove per annullare. Su iOS una pressione prolungata seleziona la parola sotto il dito e apre il menu di sistema con Copia, Incolla e Seleziona tutto; trascina da un estremo della selezione per estenderla.
  • Incollare — usa il tasto Incolla nella barra dei tasti extra (visibile quando la tastiera è aperta).

App a tutto schermo. I programmi che occupano l'intero schermo — tmux, vim, nano, less — non hanno una cronologia propria, quindi mentre sono in esecuzione la vista resta sulla schermata attiva invece di scivolare nell'output della shell che sta sotto.

Per scorrere al loro interno deve essere l'applicazione a occuparsene. In tmux aggiungi set -g mouse on in ~/.tmux.conf: lo swipe scorre allora la cronologia del pannello sotto al dito. Lo stesso vale per qualsiasi programma che accetti input dal mouse, come vim con set mouse=a. Con screen, verifica che in ~/.screenrc ci sia altscreen on — su molti sistemi è disattivato di default, e screen disegna sopra alla normale cronologia.

// IMPOSTAZIONI DEL TERMINALE

In Impostazioni → Terminale puoi adattare il terminale alle tue esigenze:

  • Colori del terminale — lo schema scuro classico (bianco su nero), uno schema chiaro (nero su bianco) più leggibile in piena luce, oppure come il tema dell'app, che cambia automaticamente insieme al tema dell'app. La modifica si applica subito, anche alle sessioni già aperte.
  • Mantieni lo schermo acceso — impedisce lo spegnimento dello schermo mentre un terminale è aperto. Comodo quando osservi log o comandi di lunga durata. Disattivato di default.
  • Dimensione carattere predefinita — la dimensione del testo con cui partono le nuove sessioni; puoi comunque usare il pinch-zoom in ogni sessione.
  • Scrollback, scorrimento invertito e suggerimenti dei comandi — controllano quanta cronologia di output viene conservata, la direzione dello scorrimento e la barra dei suggerimenti descritta sopra.
  • Azione doppio tocco — se vuoi, un doppio tocco sul terminale invia Tab (autocompletamento) o due volte Tab (elenca tutti i candidati). Disattivato di default. Su iOS, finché è disattivata, un doppio tocco seleziona una parola.

// BARRA DEI TASTI EXTRA

Quando la tastiera virtuale è aperta, sopra di essa appare una riga di pulsanti scorciatoia. Scorri la barra lateralmente per raggiungere tutti i tasti.

Tasti modificatori

Ctrl e Alt sono toggle persistenti — toccane uno, poi tocca un tasto lettera per inviare la combinazione. Si resettano automaticamente dopo il tasto successivo.

  • Ctrl+C — interrompe il processo in esecuzione.
  • Ctrl+D — invia EOF / chiude la shell.
  • Ctrl+Z — sospende il processo.
  • Ctrl+L — pulisce lo schermo.

Modalità parole

L'icona di correzione ortografica alterna la tastiera tra modalità terminale e modalità parole. In modalità terminale (predefinita) autocorrettore e suggerimenti di parole sono disabilitati — ideale per comandi e percorsi di file. In modalità parole la tastiera si comporta come un normale campo di testo, con suggerimenti e autocorrettore attivi. Utile quando si digita testo in linguaggio naturale via SSH, ad esempio con Claude Code o altri strumenti interattivi.

Su Android la modalità parole è anche ciò che fa funzionare la digitazione vocale. Il tasto microfono della tastiera ha bisogno di un vero campo di testo in cui scrivere, quindi in modalità terminale la dettatura non produce nulla — passa alla modalità parole prima di dettare.

Navigazione e modifica

  • ESC — tasto Escape.
  • Tab — autocompletamento della shell.
  • ↑ ↓ ← → — frecce direzionali.
  • Home / End — salta all'inizio o alla fine della riga.
  • PgUp / PgDn — pagina su / pagina giù.
  • Del — cancella in avanti (il carattere a destra del cursore).
  • Incolla — incolla gli appunti nel terminale.

Tasti funzione

Scorri la barra verso destra per raggiungere i tasti da F1 a F12.

Layout e barre personalizzate

La barra esiste in più layout. Tocca il tasto ⇄ sulla barra per cambiarlo: i tasti lasciano il posto all'elenco delle barre disponibili, ne tocchi una e hai finito — la scelta viene ricordata. Puoi scegliere e gestire le barre anche da Impostazioni → Terminale → Barra tasti extra → Personalizza.

  • Standard — la classica riga singola a scorrimento.
  • Naturale — una riga ordinata per frequenza d'uso, con / - | ~ e le frecce nell'ordine della tastiera (← ↑ ↓ →).
  • Naturale ×2 — due righe che riempiono la larghezza: ESC / - Home ↑ End PgUp sopra Tab Ctrl Alt ← ↓ → PgDn.
  • Naturale ×3 — come sopra più una terza riga con i tasti funzione.
  • Minimale — solo ESC, Tab, Ctrl e le frecce, per schermi stretti.

Per crearne una tua, duplica un preset (menu ⋮ accanto, o una pressione prolungata su iOS) oppure crea una barra nuova. L'editor mostra la barra esattamente come apparirà: tocca un tasto per selezionarlo, poi usa i pulsanti sotto per spostarlo a sinistra o a destra, in un'altra riga, cambiarlo, aggiungere un tasto dopo di lui o rimuoverlo. Ogni riga può scorrere (i tasti tengono la larghezza naturale) oppure riempire la larghezza dello schermo (fino a circa nove tasti per riga su un telefono). Fino a tre righe; la dimensione dei tasti è regolabile.

Oltre ai tasti soliti, una barra personalizzata può contenere tasti di testo: un testo qualsiasi, inviato così com'è — un singolo |, un prefisso sudo o un comando intero. Usa \n per Invio, \t per Tab e \e per Esc, così ls -la\n diventa una macro a un tocco. Ci sono altri due tasti azione: puntina tiene la barra visibile a tastiera chiusa, tastiera mostra o nasconde la tastiera.

Le barre personalizzate sono incluse nel backup delle impostazioni. Su Android TV funziona tutto col telecomando: tasti e pulsanti dell'editor sono raggiungibili col D-pad.

// AGENT FORWARDING

L'agent forwarding SSH permette di usare le chiavi memorizzate in SSHBorg per autenticare ulteriori connessioni effettuate dall'interno del server remoto — ad esempio per fare git clone di un repo privato, o per saltare su una seconda macchina.

Abilitare il forwarding in SSHBorg

Quando aggiungi o modifichi un host, abilita il toggle Agent forwarding. SSHBorg fungerà da agente SSH per quella sessione.

Configurazione lato server

Il server deve permettere l'agent forwarding. Controlla /etc/ssh/sshd_config:

AllowAgentForwarding yes

È il valore predefinito sulla maggior parte dei sistemi. Dopo averlo modificato, riavvia il demone SSH:

sudo systemctl restart sshd

Configurazione client per host (opzionale)

Se ti connetti a questo server anche da laptop o desktop, puoi configurare il forwarding in modo persistente nel tuo ~/.ssh/config locale:

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// NOTA DI SICUREZZA
L'agent forwarding dà al server remoto accesso temporaneo al socket del tuo agente SSH. Un utente root (o un processo compromesso) su quel server potrebbe usare le tue chiavi per connettersi altrove mentre la sessione è attiva. Abilita il forwarding solo su server di cui ti fidi.

// CIFRATURE LEGACY

Alcuni server più vecchi — apparati di rete, dispositivi embedded o sistemi con versioni obsolete di OpenSSH — supportano solo algoritmi di cifratura che i client SSH moderni non annunciano più di default.

Abilitando il toggle Cifrature Legacy nella configurazione dell'host, SSHBorg aggiunge i seguenti algoritmi alla lista di negoziazione:

Algoritmi aggiunti

  • Cifrature: aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc
  • Key exchange: diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1
  • Tipo chiave host: ssh-dss (DSA 1024-bit)

Il server negozia sempre l'algoritmo più forte disponibile su entrambi i lati, quindi abilitare questa opzione non indebolisce le connessioni ai server moderni — gli algoritmi legacy vengono usati solo se il server non può offrire nulla di meglio.

// iOS
Su iOS le chiavi host ssh-dss non sono disponibili: la libreria SSH con cui è compilata l'app non include più DSA, quindi un server che ha solo una chiave host DSA non è raggiungibile da iPhone o iPad, nemmeno con questa opzione attiva.
// NOTA DI SICUREZZA
Gli algoritmi in questo elenco sono considerati crittograficamente deboli. Abilitare questa opzione solo per server che non è possibile aggiornare.

// CONNESSIONI INSTABILI E MULTIPLEXER

SSH è una connessione TCP attiva tra il telefono e il server. Se la connessione si interrompe — anche solo per un secondo — la sessione e tutto ciò che stava eseguendo va perso.

Perché le connessioni cadono su mobile

Le reti mobili sono particolarmente soggette a interruzioni per diversi motivi:

  • Cambio di indirizzo IP — quando sei in viaggio o cambi ripetitore, l'operatore può assegnarti un nuovo IP pubblico. Poiché le connessioni TCP sono legate all'indirizzo IP, la sessione SSH esistente diventa immediatamente non valida.
  • Cambio Wi-Fi ↔ dati mobili — passare da una rete Wi-Fi ai dati mobili (o viceversa) cambia il tuo IP e interrompe qualsiasi connessione TCP aperta.
  • Timeout di inattività — operatori e router NAT spesso chiudono le connessioni inattive dopo pochi minuti. Le sessioni attive ma silenziose (guardare log, aspettare input) sono vulnerabili a questo.
  • Perdita di segnale — tunnel, parcheggi sotterranei o semplicemente un segnale debole possono interrompere brevemente la rete, il che è sufficiente per uccidere una sessione.
  • Limiti di Android in background — mentre una sessione è aperta SSHBorg tiene attivo un servizio in primo piano, con la sua notifica, così Android non interrompe più le sessioni a tempo: una sessione lasciata aperta continua a lavorare mentre usi altre app. Possono ancora fermarla il telefono che recupera memoria o il risparmio energetico che alcuni produttori applicano alle app in background — se le sessioni si fermano da sole, la prima cosa da provare è escludere SSHBorg dall'ottimizzazione della batteria. Riaprendo l'app puoi riconnetterti.
  • iOS sospende le app in background — circa trenta secondi dopo che SSHBorg lascia lo schermo, iOS lo sospende e le sue connessioni cadono. Quando torni, SSHBorg si riconnette da solo (chiedendo la password solo se non è salvata) e segna il punto nell'output: è una nuova shell, e ciò che girava in quella vecchia è perso. Su iOS un multiplexer è l'unico modo per lasciare un lavoro in esecuzione mentre usi un'altra app.
// IMPORTANTE
Se stai eseguendo un comando lungo (una build, un backup, una migrazione del database) direttamente nel terminale SSH e la connessione cade, il comando viene interrotto immediatamente. Qualsiasi lavoro parziale potrebbe essere lasciato in uno stato inconsistente.

La soluzione: tmux o screen

Un multiplexer di terminale esegue una sessione persistente sul server, completamente indipendente dalla connessione SSH. Se la connessione cade, la sessione e tutto ciò che sta eseguendo continua. Quando ti riconnetti, ti riattacchi e trovi tutto esattamente com'era.

È l'abitudine più utile per chi gestisce server dal telefono.

Guida rapida a tmux

tmux è disponibile sulla maggior parte delle distribuzioni Linux moderne ed è la scelta consigliata.

# Avvia una nuova sessione con nome
tmux new -s work

# Distacca dalla sessione (lasciala in esecuzione)
Ctrl+B, poi D

# Elenca le sessioni in esecuzione
tmux ls

# Riattacca a una sessione
tmux attach -t work

# Riattacca alla sessione più recente
tmux attach

Guida rapida a screen

screen è più vecchio ma disponibile su praticamente ogni sistema Unix, incluse le immagini server minimali dove tmux potrebbe non essere installato.

# Avvia una nuova sessione con nome
screen -S work

# Distacca dalla sessione
Ctrl+A, poi D

# Elenca le sessioni in esecuzione
screen -ls

# Riattacca a una sessione
screen -r work

Flusso di lavoro consigliato su mobile

  1. Connettiti al server con SSHBorg.
  2. Avvia o riattacca subito una sessione tmux/screen: tmux attach || tmux new -s main
  3. Esegui i tuoi comandi all'interno del multiplexer.
  4. Se la connessione cade, riconnettiti — la sessione è ancora lì.
// SUGGERIMENTO
Puoi aggiungere tmux attach || tmux new -s main al tuo ~/.bashrc o ~/.zshrc sul server in modo che una sessione multiplexer si avvii automaticamente ogni volta che accedi tramite SSHBorg.

// JUMP HOST

Un jump host (detto anche bastion host) è un server intermedio attraverso cui devi passare per raggiungere un server di destinazione non direttamente accessibile da internet. SSHBorg supporta nativamente catene di salto singole e multi-hop.

Configurare un jump host in SSHBorg

  1. Aggiungi il server bastion come host normale in SSHBorg (es. bastion).
  2. Aggiungi il server di destinazione come altro host.
  3. Nelle impostazioni dell'host di destinazione, imposta Jump host al bastion host creato.
  4. Abilita Agent forwarding sulla voce del bastion — questo permette alla tua chiave di essere inoltrata attraverso il bastion per autenticarsi sulla destinazione.
// COME FUNZIONA
SSHBorg stabilisce prima una connessione SSH al bastion, poi apre un canale TCP inoltrato attraverso di esso al server di destinazione. La chiave privata non lascia mai il telefono — il bastion fa solo da proxy per il flusso cifrato.

Catene multi-hop

Se devi saltare attraverso più server intermedi (es. internet → bastion → dmz → target), crea una voce per ogni hop e concatenale:

  • bastion — nessun jump host, agent forwarding attivo
  • dmz — jump host = bastion, agent forwarding attivo
  • target — jump host = dmz
// IMPORTANTE
L'agent forwarding deve essere abilitato su ogni hop intermedio, non solo sul primo. Senza di esso, la catena di autenticazione si interrompe e la connessione al server finale fallirà con un errore "permission denied".

Configurazione manuale equivalente (per riferimento)

La configurazione equivalente in un ~/.ssh/config su desktop è la seguente:

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

Host target
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    ForwardAgent yes

Con questa configurazione, ssh target sul laptop salta trasparentemente attraverso il bastion.

Requisiti del firewall

  • Il telefono deve poter raggiungere il bastion sulla sua porta SSH (di solito 22).
  • Il bastion deve poter raggiungere il target sulla sua porta SSH.
  • Il target non deve essere raggiungibile direttamente dal telefono.

// SESSIONI MULTIPLE

SSHBorg permette di tenere aperte più sessioni di terminale SSH e di file manager SFTP contemporaneamente, anche verso server diversi.

  • Tocca un host per aprire un terminale, oppure scegli File nel suo menu per aprire il file manager. Se l'host ha già sessioni aperte, lo stesso menu ne apre altre.
  • Passa da una sessione all'altra con le schede sotto il terminale; un host con più sessioni apre un selettore numerato.
  • Le sessioni rimangono attive in background finché la connessione di rete regge — su iOS solo per poco, vedi Connessioni instabili.
  • L'elenco degli host mostra un piccolo badge accanto a ogni host con il numero di sessioni SSH e SFTP attive, così puoi vedere a colpo d'occhio cosa è aperto.
// SUGGERIMENTO
I comandi a lunga esecuzione (build, backup, tail di log) continuano a girare anche quando passi a un'altra sessione. Usa un multiplexer di terminale come tmux o screen lato server se vuoi che sopravvivano anche a una caduta della connessione SSH.

// SICUREZZA DELL'APP

Blocco app

Scegli come proteggere l'app in Impostazioni → Sicurezza → Blocco app: Nessuno (predefinito), Solo biometrico (impronta digitale o riconoscimento facciale), Blocco del dispositivo (il PIN, la sequenza o la password del dispositivo, oltre alla biometria) o un PIN o passphrase in-app. Quando un blocco è attivo, SSHBorg richiede l'autenticazione prima di mostrare qualsiasi host, credenziale o dato di sessione. Se l'autenticazione viene rifiutata, o la annulli, l'app resta sulla propria schermata di blocco con un pulsante per riprovare: non si chiude, quindi le sessioni che avevi aperte sono ancora lì quando sblocchi.

Il PIN o passphrase in-app funziona su qualsiasi dispositivo, anche senza hardware biometrico o un blocco schermo di sistema — per questo è la scelta giusta su una Android TV. Per cambiarlo o rimuoverlo viene chiesto prima quello attuale. Non è recuperabile se dimenticato: dovresti cancellare i dati dell'app o reinstallarla, quindi tieni un backup dei tuoi host.

Puoi impostare un timeout di inattività — dopo quel tempo in background l'app si blocca automaticamente.

// iOS
Il blocco offre Nessuno, Solo biometrico (Face ID o Touch ID) e Blocco del dispositivo (il codice del dispositivo o la biometria). Non esiste un PIN o una passphrase in-app.

Protezione screenshot

Per impostazione predefinita SSHBorg blocca screenshot e registrazione dello schermo per evitare che il contenuto sensibile del terminale trapeli tramite la schermata delle app recenti o strumenti di cattura dello schermo.

Se devi fare uno screenshot (es. per condividere un output del terminale), puoi disabilitare temporaneamente la protezione in Impostazioni → Sicurezza → Consenti screenshot.

// iOS
iOS non permette a un'app di bloccare screenshot o registrazioni dello schermo, quindi questa impostazione non esiste. Con un blocco app attivo, SSHBorg copre i propri contenuti appena lascia lo schermo, così host e terminali non compaiono nel multitasking.

Archiviazione delle credenziali

Con Cifra dati sensibili attiva (vedi Chiavi SSH), password e chiavi private sono conservate cifrate con una chiave custodita nell'Android Keystore — basato su hardware su Android 10+ — o, su iOS, nel Portachiavi, limitata a questo dispositivo. Le credenziali non vengono mai scritte su storage esterno né trasmesse da nessuna parte.

// NOTA SUL BACKUP
Poiché la chiave di cifratura non lascia mai l'hardware sicuro del dispositivo, le chiavi non possono essere ripristinate da un backup cloud o del dispositivo e non si trasferiranno automaticamente su un nuovo telefono. Prima di cambiare dispositivo, assicurati di autorizzare una nuova chiave generata sul nuovo dispositivo su tutti i tuoi server.

L'impostazione più sicura

Ognuno dei pezzi qui sopra serve già da solo. Messi insieme sono il massimo che l'app può offrire, e sono due minuti di lavoro:

  1. Attiva Impostazioni → Sicurezza → Cifra dati sensibili.
  2. Imposta il blocco dell'app su Solo biometrico — oppure su PIN o passphrase se preferisci non affidarti alla biometria del telefono.
  3. Imposta il timeout del blocco su Immediatamente, o al massimo 30 secondi.
  4. Genera una nuova chiave nell'app, con un nome che dica di quale dispositivo è.
  5. Autorizza quella chiave sui tuoi server e usala invece della password.

Una chiave generata sul telefono non è mai esistita altrove: non c'è una copia più vecchia che possa già essere sfuggita, e non c'è niente da ripulire su un'altra macchina. Una chiave per dispositivo significa anche che perdere il telefono costa una riga in authorized_keys — la togli e gli altri dispositivi continuano a funzionare, ed è per questo che vale la pena scegliere bene il nome.

Quello che niente di tutto questo può fare: se il telefono stesso è compromesso, quella chiave è compromessa con lui, qualunque cosa la protegga su disco. Nemmeno una passphrase sulla chiave la salverebbe — chi riesce a leggere lo spazio dell'app riesce anche a leggere quello che digiti. È per questo che SSHBorg chiede la passphrase di una chiave una volta sola, all'importazione, e conserva la chiave aperta invece di tenere la passphrase (vedi Chiavi SSH).

// BACKUP CONFIGURAZIONE

SSHBorg può esportare e importare le configurazioni degli host e le impostazioni dell'app come file JSON. Questo permette di trasferire la lista dei server su un altro dispositivo o di conservare un backup portabile della propria configurazione.

// IMPORTANTE
Il backup include le configurazioni degli host e le impostazioni dell'app (terminale, aspetto, comportamento). Password e chiavi SSH non vengono mai esportate — il materiale della chiave va riconfigurato su un nuovo dispositivo. Il backup registra però il nome della chiave usata da ogni host: se ricrei una chiave con lo stesso nome prima di importare, i suoi host vengono ricollegati automaticamente.

Esportare

Vai in Impostazioni → Backup → Esporta backup. Scegli dove salvare il file tramite il selettore file di sistema. Il file si chiama sshborg_backup.json (sshborg-backup-data.json su iOS) per impostazione predefinita.

Importare

Vai in Impostazioni → Backup → Importa backup. Seleziona il file .json precedentemente esportato (o creato manualmente). SSHBorg lo unirà alla lista degli host esistenti:

  • Gli host il cui nome corrisponde a un host esistente vengono aggiornati.
  • Gli host con un nome nuovo vengono aggiunti.
  • Gli host non presenti nel file rimangono invariati.
  • Un host aggiornato mantiene password, chiave e chiave host accettata già salvate — il backup non le contiene.
  • Un host senza chiave viene collegato a una chiave il cui nome corrisponde al keyLabel esportato, se esiste; altrimenti il campo viene ignorato.
  • Un host aggiornato mantiene i dati d'uso già presenti su questo dispositivo — ultima connessione, contatore e posizione manuale; il file riempie solo ciò che manca.

Formato JSON

Il file esportato è un normale oggetto JSON. È possibile crearlo manualmente per importare in blocco una lista di server da un'altra fonte.

{
  "version": 7,
  "exported_at": "2026-05-14T10:00:00Z",
  "groups": [
    { "name": "Produzione", "color": -1754827, "position": 0 }
  ],
  "hosts": [
    {
      "label":           "Il mio 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":         "Chiave VPS",
      "group":           "Produzione"
    }
  ],
  "settings": {
    "night_mode":            0,
    "scrollback_lines":      2000,
    "terminal_font_size":    13,
    "terminal_color_scheme": 0,
    "double_tap_action":     0
  }
}

L'oggetto settings (facoltativo) contiene le impostazioni dell'app e viene scritto automaticamente all'esportazione; puoi ometterlo se crei il file a mano.

Riferimento campi

  • label — nome visualizzato in SSHBorg. Usato come chiave univoca per l'unione in fase di importazione. Obbligatorio.
  • hostname — indirizzo o IP del server (IPv4 o IPv6). Obbligatorio.
  • port — porta SSH. Valore predefinito: 22.
  • username — utente di login. Obbligatorio.
  • agentForwarding — true per abilitare il forwarding dell'agente SSH. Valore predefinito: false.
  • jumpMode — "simple" (usa il testo di jumpHosts) o "host_list" (usa gli ID interni di SSHBorg). Usa "simple" quando crei il file manualmente.
  • jumpHosts — lista di jump host separati da virgola nel formato [utente@]host[:porta]. Usato solo con jumpMode "simple".
  • portForwardings — regole di port forwarding locale separate da newline in sintassi SSH -L, es. "8080:localhost:8080".
  • sftpStartMode — cartella iniziale SFTP: "last" (ricorda l'ultima visitata), "fixed" (usa sempre sftpStartDir), "home" (home del server). Valore predefinito: "last".
  • sftpStartDir — percorso da usare quando sftpStartMode è "fixed".
  • sftpShowHidden — true per mostrare i file nascosti (dotfile, nomi che iniziano con ".") nel browser SFTP di questo host. Predefinito false.
  • allowLegacyCiphers — true per abilitare gli algoritmi legacy descritti sopra. Predefinito: false.
  • keyLabel — nome della chiave SSH usata da questo host. All'importazione, se esiste una chiave con questo nome viene collegata all'host; altrimenti il campo viene ignorato. La chiave stessa non è mai inclusa nel backup.
  • group — nome del gruppo a cui appartiene l'host. I gruppi sono elencati nell'array groups in cima al file, con name e color (ARGB come intero a 32 bit con segno). Se un host fa riferimento a un gruppo assente dall'array, il gruppo viene creato automaticamente con un colore predefinito: scrivendo il file a mano puoi quindi omettere l'array.
  • color — colore opzionale del singolo host (ARGB come intero a 32 bit con segno). Prevale sul colore del gruppo.
  • position — posto dell'host nell'ordine manuale, contato dentro la sua sezione (il blocco senza gruppo, oppure un gruppo). Se lo ometti l'host viene accodato in fondo. Anche i gruppi hanno una loro position nell'array groups.
  • lastConnected — momento dell'ultima connessione, in millisecondi dall'epoca Unix. Alimenta l'ordinamento "recenti".
  • connectCount — quante sessioni di terminale sono state aperte verso questo host. Alimenta l'ordinamento "più usati".
// CAMPI OPZIONALI
Tutti i campi eccetto label, hostname e username sono opzionali. I campi omessi riprendono i valori predefiniti.

// ANDROID TV

SSHBorg funziona su Android TV e Google TV. Si usa con il D-pad del telecomando, ma trattandosi di un'app molto basata sul testo, una tastiera fisica fa una grande differenza.

Navigare col telecomando

  • Frecce del D-pad — spostano il focus tra righe e controlli.
  • OK (centrale) — l'azione primaria: connettere un host, aprire una cartella, scaricare un file, espandere un gruppo.
  • Indietro — sale di livello o esce dalla schermata.

Aprire il menu di una riga

Per rinominare, eliminare, modificare, duplicare o scaricare da una riga, apri il suo menu: premi il tasto Menu (opzioni) del telecomando sulla riga con il focus, oppure tieni premuto OK (pressione lunga). OK da solo esegue l'azione primaria, non il menu.

Scrivere: usa una tastiera fisica

Una tastiera fisica — USB o Bluetooth (Android TV supporta entrambe) è fortemente consigliata, e di fatto necessaria per il terminale. Con una tastiera i campi di testo e la shell funzionano normalmente.

Senza, la tastiera a schermo gestisce comunque inserimenti brevi: metti il focus su un campo, premi OK per aprirlo, digita e premi OK / Vai sulla tastiera per confermare — nel prompt della password questo connette direttamente. Inserire comandi shell con la tastiera a schermo, però, è poco pratico.

Bloccare l'app su una TV

Una TV di solito non ha lettore di impronte né blocco schermo, quindi proteggi l'app con il blocco integrato con PIN o passphrase (Impostazioni → Sicurezza) — funziona interamente col telecomando o una tastiera. Vedi Sicurezza dell'app.

// LICENZE OPEN SOURCE

SSHBorg è software libero, rilasciato sotto GNU General Public License v3. Il codice sorgente è su GitHub, sia per l'app Android sia per quella iOS. Usa le librerie seguenti, ciascuna con la sua licenza:

  • mwiede/JSch — il protocollo SSH su Android — licenza di tipo BSD
  • Bouncy Castle — la crittografia su Android — licenza di tipo MIT
  • sora-editor — il componente di modifica testo usato per modificare i file sul server, su Android — GNU LGPL v2.1
  • libssh2 — il protocollo SSH su iOS — licenza BSD

Nessuna di esse si collega a niente per conto suo: gli unici indirizzi che SSHBorg contatta sono i server che gli indichi tu, e sshborg.com quando tocchi un collegamento. Non ci sono librerie di statistiche, di pubblicità né tracciatori di alcun tipo.

⚙⚙⚙