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

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

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