// AGGIUNGERE UN HOST

Tocca il pulsante + nella schermata degli host per aggiungere un nuovo server.

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

// FILE MANAGER SFTP

Il file manager SFTP ti permette di navigare, caricare, scaricare, rinominare ed eliminare file sul server direttamente dal telefono. Apri una sessione SFTP dalla schermata degli host toccando SFTP.

Navigazione

Tocca una cartella per aprirla. Usa la freccia indietro o tocca qualsiasi segmento della barra del percorso per risalire nell'albero delle directory.

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 un file qualsiasi per scaricarlo immediatamente. 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

Tieni premuto un elemento per entrare in modalità selezione, poi tocca altri elementi per aggiungere alla selezione. 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.

// CHIAVI SSH

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

Generare una chiave

Vai in Impostazioni → Chiavi SSH → Genera 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 → Impostazioni → Chiavi SSH → 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.

Cifratura aggiuntiva della chiave

SSHBorg offre una passphrase aggiuntiva opzionale per le tue chiavi (Impostazioni → Chiavi SSH → tocca una chiave → Abilita cifratura). Quando attiva, la chiave viene cifrata con una passphrase che SSHBorg non memorizza — ti verrà chiesta ogni volta che la chiave viene utilizzata.

È fortemente consigliata se conservi credenziali sensibili sul telefono, o se hai il blocco biometrico disabilitato.

// 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.
  • Incollare — usa il tasto Incolla nella barra dei tasti extra (visibile quando la tastiera è aperta).

// 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.

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.

// 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.

// 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.
// 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.

  • Apri una sessione dalla schermata degli host toccando Terminale o SFTP.
  • Passa da una sessione all'altra usando il selettore di sessioni in cima alla schermata.
  • Le sessioni rimangono attive in background finché la connessione di rete regge.
  • 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 biometrico

Abilita il blocco biometrico in Impostazioni → Sicurezza → Blocco biometrico. Quando attivo, SSHBorg richiede l'impronta digitale o il riconoscimento facciale prima di mostrare qualsiasi host, credenziale o dato di sessione.

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

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.

Archiviazione delle credenziali

Tutte le credenziali (password, chiavi private, passphrase) sono memorizzate cifrate usando l'Android Keystore — un enclave sicuro basato su hardware disponibile su Android 10+. Non vengono mai scritte su storage esterno né trasmesse da nessuna parte.

// NOTA SUL BACKUP
Poiché le chiavi sono memorizzate nell'Android Keystore, non possono essere salvate nel backup cloud di Android 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.

// BACKUP CONFIGURAZIONE

SSHBorg può esportare e importare le configurazioni degli host 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 solo le configurazioni degli host (indirizzo, porta, utente, impostazioni). Password e chiavi SSH non vengono mai esportate — devono essere riconfigurate dopo l'importazione su un nuovo dispositivo.

Esportare

Vai in Impostazioni → Backup → Esporta host. Scegli dove salvare il file tramite il selettore file di sistema. Il file si chiama sshborg_hosts.json per impostazione predefinita.

Importare

Vai in Impostazioni → Backup → Importa host. 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.

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": 1,
  "exported_at": "2026-05-14T10:00:00Z",
  "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
    }
  ]
}

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.
  • agentForwardingtrue 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".
// CAMPI OPZIONALI
Tutti i campi eccetto label, hostname e username sono opzionali. I campi omessi riprendono i valori predefiniti.