Tag: ubuntu

  • Un’unica configurazione SSH per domarle tutte


    Ho quattro macchine su cui lavoro regolarmente: due desktop (uno Windows, uno Ubuntu) e due laptop (anche qui, uno per sistema). A questi si aggiungono alcuni server Linux VPS a cui mi collego per vari progetti. Sono tanti endpoint, tante chiavi SSH e tanti profili di terminale da tenere sincronizzati.

    Per un po’ ho semplicemente convissuto col caos. Ogni volta che configuravo una nuova macchina, o reinstallavo un sistema operativo, ripetevo lo stesso rituale: ricreare la configurazione SSH, copiare le chiavi in qualche modo, reinserire tutti gli alias degli host, riconfigurare colori e font del terminale. E ogni volta che cambiavo qualcosa su una macchina — un nuovo server da aggiungere, una nuova chiave da registrare — dovevo ricordarmi di replicare quella modifica su tutte le altre. Inevitabilmente, me ne dimenticavo. Le configurazioni divergevano. Una macchina aveva l’alias, un’altra no. Era una seccatura lenta e sotterranea, che non raggiungeva mai il livello di crisi, ma non spariva mai.

    Alla fine ho deciso di risolvere il problema per davvero. La soluzione che ho trovato è semplice nel concetto, solida nella pratica, e richiede circa venti minuti di configurazione iniziale.

    L’idea di fondo: una cartella sola, ovunque

    Il ragionamento è questo: invece di tenere chiavi SSH e file di configurazione sparsi su ogni singola macchina, si mette tutto in un’unica cartella all’interno del proprio cloud storage — OneDrive, Dropbox, Google Drive, qualunque si usi già. Ogni macchina poi punta a quella cartella, invece di mantenere una copia separata.

    Il meccanismo che rende possibile tutto questo si chiama collegamento simbolico (o symlink). Funziona come un cartello stradale: quando il client SSH cerca il suo file di configurazione nel posto solito, trova un cartello che lo reindirizza alla cartella condivisa sul cloud. Dall’esterno non cambia nulla. Sotto il cofano, tutte le macchine leggono dalla stessa unica fonte di verità.

    Su Windows i collegamenti simbolici funzionano allo stesso modo — ed è la scelta giusta anche lì. Forse hai sentito parlare degli hard link, un concetto correlato, ma gli hard link funzionano solo all’interno dello stesso disco. Dato che la cartella del cloud storage di solito si trova su un percorso diverso (o addirittura su un disco diverso) rispetto al profilo utente, i collegamenti simbolici sono la scelta corretta anche su Windows.

    Un prerequisito importante: il client di cloud storage deve essere configurato per mantenere i file disponibili localmente, non solo nel cloud. Su OneDrive questa opzione si chiama “Mantieni sempre su questo dispositivo”. I file devono trovarsi fisicamente su disco, accessibili anche offline.

    Creare la cartella condivisa

    All’interno della directory sincronizzata col cloud, crea questa struttura:

    ~/CloudSync/ssh-terminal/
    ├── ssh/
    │   ├── config
    │   ├── id_ed25519_workstation
    │   ├── id_ed25519_server
    │   └── id_ed25519_development
    └── terminals/
        ├── windows-terminal.json
        └── gnome-terminal-profiles/
    

    La sottocartella ssh/ contiene le chiavi SSH e il file di configurazione. La sottocartella terminals/ contiene le impostazioni dei terminali. Vedremo come popolarle entrambe nei passi successivi.

    Il file di configurazione SSH

    SSH legge le sue impostazioni da un file di testo semplice chiamato config, normalmente situato in ~/.ssh/config. È lì che si definiscono gli alias degli host, si specifica quale chiave usare per quale server, si impostano le opzioni di connessione. Se non l’hai mai usato, è una di quelle cose che, una volta scoperte, ti chiedi come hai fatto a farne a meno.

    Un esempio tipico di configurazione:

    # Esempio di configurazione SSH condivisa
    Host server-produzione
        HostName 192.168.1.100
        User administrator
        IdentityFile ~/.CloudSync/ssh-terminal/ssh/id_ed25519_production
        Port 22
    
    Host sviluppo
        HostName dev.example.com
        User developer
        IdentityFile ~/.CloudSync/ssh-terminal/ssh/id_ed25519_development
    

    Nota che i percorsi di IdentityFile usano il carattere ~ (tilde) per rappresentare la home directory. Vale la pena capire esattamente cosa significa, perché è il segreto della portabilità.

    Su Linux e su Windows, ogni utente ha una home directory: una cartella personale dove il sistema conserva file, impostazioni e configurazioni. Su Linux è tipicamente /home/tuonome, su Windows C:\Users\tuonome. Il carattere tilde (~) è un’abbreviazione che sia Bash su Linux che PowerShell su Windows espandono automaticamente alla home directory dell’utente corrente. Quindi ~/.ssh/config diventa /home/tuonome/.ssh/config su Linux, e C:\Users\tuonome\.ssh\config su Windows.

    Questo è ciò che rende il file di configurazione davvero portabile: dato che ogni macchina espande ~ alla propria home directory locale, la stessa riga funziona ovunque senza modifiche. Se avessimo scritto il percorso completo — /home/luca/CloudSync/... — funzionerebbe solo sulle macchine in cui il nome utente e la struttura delle directory coincidono esattamente.

    Una volta che il file config è pronto nella cartella condivisa, lo si collega al percorso che SSH si aspetta:

    Windows (PowerShell come Amministratore)

    New-Item -ItemType SymbolicLink `
      -Path "$env:USERPROFILE\.ssh\config" `
      -Target "$env:USERPROFILE\CloudSync\ssh-terminal\ssh\config"
    

    Ubuntu

    ln -sf ~/CloudSync/ssh-terminal/ssh/config ~/.ssh/config
    

    Da questo momento in poi, modificare il file di configurazione nella cartella cloud lo aggiorna istantaneamente su tutte le macchine. Aggiungi un nuovo server sul desktop, e il laptop lo conoscerà già alla prossima sincronizzazione.

    Profili del terminale: Windows Terminal

    Windows Terminal conserva l’intera configurazione — profili, schemi di colori, font, scorciatoie da tastiera — in un unico file JSON. Questo lo rende un candidato ideale per questo approccio.

    Il file si trova in:

    $env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
    

    Chiudi Windows Terminal, poi sostituisci quel file con un collegamento simbolico alla copia condivisa:

    # Esegui in PowerShell come Amministratore, con il Terminale chiuso
    New-Item -ItemType SymbolicLink `
      -Path "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" `
      -Target "$env:USERPROFILE\CloudSync\ssh-terminal\terminals\windows-terminal.json"
    

    È anche possibile definire profili SSH direttamente all’interno della configurazione di Windows Terminal, in modo che i server specifici appaiano come voci con nome nel menu a tendina:

    {
        "$schema": "https://aka.ms/terminal-profiles-schema",
        "profiles": {
            "list": [
                {
                    "name": "SSH Produzione",
                    "commandline": "ssh server-produzione",
                    "icon": "ms-appx:///ProfileIcons/server.png"
                }
            ]
        }
    }
    

    Profili del terminale: GNOME Terminal e Ptyxis su Ubuntu

    Sia GNOME Terminal che Ptyxis conservano la propria configurazione in dconf, un database di impostazioni a basso livello usato in tutto l’ambiente desktop GNOME. Pensalo come l’equivalente GNOME del Registro di sistema di Windows: un database strutturato dove le applicazioni memorizzano le proprie preferenze. Non c’è un singolo file a cui creare un collegamento, ma è possibile esportare e importare l’intera configurazione come uno snapshot in testo semplice usando lo strumento da riga di comando dconf.

    L’approccio è identico per entrambi i terminali — cambia solo il percorso all’interno del database dconf.

    GNOME Terminal

    Per esportare i profili attuali:

    dconf dump /org/gnome/terminal/legacy/profiles:/ \
      > ~/CloudSync/ssh-terminal/terminals/gnome-terminal-profiles/profiles.dconf
    

    Per ripristinarli su un’altra macchina:

    dconf load /org/gnome/terminal/legacy/profiles:/ \
      < ~/CloudSync/ssh-terminal/terminals/gnome-terminal-profiles/profiles.dconf
    

    Ptyxis

    Ptyxis è un emulatore di terminale più recente, ora predefinito nelle distribuzioni basate su GNOME più aggiornate, come Fedora 41 e Ubuntu 25.10. Usa un percorso dconf diverso:

    dconf dump /org/gnome/Ptyxis/ \
      > ~/CloudSync/ssh-terminal/terminals/ptyxis-profiles/profiles.dconf
    

    Per ripristinare:

    dconf load /org/gnome/Ptyxis/ \
      < ~/CloudSync/ssh-terminal/terminals/ptyxis-profiles/profiles.dconf
    

    Automatizzare il ripristino dei profili all’avvio

    È possibile automatizzare il ripristino in modo che i profili vengano applicati automaticamente ad ogni accesso, aggiungendo un controllo al proprio profilo di shell (~/.profile). Adatta il percorso e la chiave dconf al terminale che utilizzi:

    #!/bin/bash
    # Per GNOME Terminal:
    if [[ -f ~/CloudSync/ssh-terminal/terminals/gnome-terminal-profiles/profiles.dconf ]]; then
        dconf load /org/gnome/terminal/legacy/profiles:/ \
          < ~/CloudSync/ssh-terminal/terminals/gnome-terminal-profiles/profiles.dconf
    fi
    
    # Per Ptyxis:
    if [[ -f ~/CloudSync/ssh-terminal/terminals/ptyxis-profiles/profiles.dconf ]]; then
        dconf load /org/gnome/Ptyxis/ \
          < ~/CloudSync/ssh-terminal/terminals/ptyxis-profiles/profiles.dconf
    fi
    

    Una nota sulla sicurezza

    Conservare chiavi SSH private in una cartella sincronizzata col cloud è un compromesso ragionevole, ma richiede alcune precauzioni.

    Usa sempre le passphrase

    Ogni chiave privata deve essere protetta da una passphrase robusta. Questo garantisce che anche se qualcuno dovesse accedere al tuo cloud storage, non potrebbe usare le chiavi senza conoscere la passphrase. Per generare le chiavi:

    ssh-keygen -t ed25519 -a 100 -C "workstation@$(hostname)" \
      -f ~/CloudSync/ssh-terminal/ssh/id_ed25519_$(hostname)
    

    Il flag -t ed25519 seleziona un algoritmo moderno ed efficiente. Il flag -a 100 aumenta il numero di cicli di derivazione della chiave, rendendo significativamente più difficile un attacco a forza bruta sulla passphrase.

    Usa chiavi separate per ogni dispositivo

    Invece di condividere una singola coppia di chiavi su tutte le macchine, mantieni chiavi distinte per dispositivo o livello di fiducia:

    • Workstation principale: id_ed25519_workstation
    • Sistemi secondari: id_ed25519_backup
    • Ambienti di sviluppo: id_ed25519_development

    In questo modo, se una macchina viene compromessa, puoi revocare solo quella chiave senza influire su tutto il resto.

    Limita i permessi sui file

    PiattaformaCosa fare
    WindowsRimuovi i permessi ereditati del gruppo “Utenti” dalla directory SSH
    Linuxchmod 700 ~/CloudSync/ssh-terminal/ssh && chmod 600 ~/CloudSync/ssh-terminal/ssh/id_*

    SSH su Linux si rifiuterà di usare chiavi con permessi troppo permissivi — quindi questo passaggio non è opzionale.

    Quando qualcosa va storto

    Alcuni problemi che potresti incontrare, e come risolverli:

    ProblemaWindowsLinux
    Creazione del collegamento fallisceEsegui PowerShell come AmministratoreProva con sudo ln -sf
    Configurazione non caricataRiavvia Windows Terminaldconf reset -f /org/gnome/terminal/legacy/profiles:/
    Chiavi non trovateVerifica che la sincronizzazione cloud sia completatals -la ~/CloudSync/ssh-terminal/ssh/
    Passphrase richiesta continuamenteStart-Service ssh-agent; ssh-addssh-add ~/CloudSync/ssh-terminal/ssh/id_*

    Per andare oltre: configurazione condizionale

    SSH supporta gli include condizionali, che permettono di caricare blocchi di configurazione diversi a seconda del sistema operativo o di altre condizioni. È utile se hai alcune impostazioni che differiscono genuinamente tra Windows e Linux:

    # ~/.ssh/config
    Include ~/.ssh/config.d/common.conf
    
    Match exec "uname -s | grep -q ^Linux"
        Include ~/.ssh/config.d/linux.conf
    

    Il file comune contiene tutto ciò che è condiviso tra le macchine. I file specifici per piattaforma gestiscono le eccezioni.

    Il risultato

    Una volta messo in piedi, configurare una nuova macchina richiede circa cinque minuti: installa il client di cloud sync, aspetta che la cartella si scarichi, esegui due o tre comandi di collegamento, fatto. Ogni alias degli host, ogni chiave, ogni schema di colori del terminale — già lì, esattamente come li hai lasciati sulle altre macchine.

    Ma la cosa più importante è un’altra: quando fai una modifica — aggiungi un nuovo server, ruoti una chiave, ritocchi un profilo del terminale — la fai una volta sola, e si propaga ovunque automaticamente. Niente più replicazione manuale. Niente più configurazioni che divergono. Niente più sorprese quando ti siedi a una macchina e scopri che è rimasta indietro.

    È una di quelle soluzioni che, una volta installata, dimentichi di avere. Ed è esattamente questo il punto.

    Reazioni nel fediverso
  • Ubuntu 16.10 Yakkety Yak

    È uscita la versione 16.10 (Yakkety Yak) di Ubuntu.

    È una release appena successiva una LTS e contiene pochi cambiamenti significativi. (altro…)

  • Veeam per Linux: Ubuntu

    Ho finalmente ricevuto le credenziali per scaricare Veeam per Linux.

    In questo articolo parlo dell’installazione su una workstation Ubuntu con ambiente grafico, il backup su un server CentOS verrà trattato in seguito. (altro…)

  • Ubuntu 16.04 LTS

    È uscita la versione 16.04 (Xenial Xerus) di Ubuntu.

    Questa versione è una LTS (Long Term Support), quindi le edizioni Desktop, Server, Core e Kylin (per la Cina) di questa release saranno supportate per cinque anni.

    Le versioni LTS il cui supporto è ancora attivo sono la 12.04 e 14.04; per le altre versioni non LTS il supporto termina generalmente tre mesi dopo il rilascio della successiva versione. (altro…)

  • Ubuntu 15.04 Vivid Vervet

    UbuntuAltra maintenance release rispetto alla 14.04 LTS.

    Versione caratterizzata da correzione di bachi e piccole migliorie dell’usabilità.

    Unity 7.3 ha abilitato per default il posizionamento del menu applicativo all’interno della finestra (stile Windows) e non più nella barra di menu nella parte alta dello schermo (stile MacOS). A differenza delle altre piattaforme citate, un utente può sempre scegliere dove vanno i menu (System Settings | Appearance | Behaviour). C’è finalmente l’opzione per rendere i menu sempre visibili e non visibile solamente al mouseover. (altro…)

  • Ubuntu 14.04 LTS Trusty Tahr

    UbuntuVersione importante in quanto si tratta di una Long Term Support.

    A differenza delle versioni normali, il cui supporto termina dopo nove mesi, le LTS vengono supportate per cinque anni, sia nella versione desktop sia nella versione server. Sono concepite per chi vuole un ambiente stabile e non è interessato alla corsa per installare sempre l’ultima versione disponibile. Le versioni di Ubuntu escono ogni sei mesi, ogni due anni una di queste è LTS.

    Trusty Tahr potrebbe essere una buona occasione per dare nuova vita ad un PC casalingo con XP (o anche con Vista) che non si vuole buttare via. In questo caso sarebbe buona cosa installare Ubuntu su un hard disk diverso da quello con su Windows assistiti da qualche smanettone che vi può seguire nell’operazione. Gli hard disk hanno prezzi accessibili e se si conserva il vecchio disco è sempre possibile tornare indietro a Windows nel caso in cui qualcosa vada male.

    Chi arriva dalla 12.04 LTS dovrà prima leggere attentamente tutte le note di rilascio e di aggiornamento dei software che ha installato, in quanto le novità sono davvero tante.

    (altro…)

  • Ubuntu 13.10 Saucy Salamander

    UbuntuSeconda versione di Ubuntu per quest’anno.

    Non ci sono grosse novità, sembra quasi una versione di preparazione per la prossima 14.04 LTS.

    Questa volta ho provato ad aggiornare da command line anziché via interfaccia grafica con il comando sudo do-release-upgrade e non ho notato sostanziali differenze, visto che essenzialmente fa le stesse cose della versione grafica.

    In questa versione è stato rimosso il downloader per Windows. Chi volesse provare Ubuntu può utilizzare una versione live su CD o chiavetta USB.

    Tra gli aggiornamenti si possono citare:

    Non è stato introdotto il display manager Mir, che slitta di 12 mesi almeno. Sembra che in questa versione sia stato corretto il problema della copia dei file via gvfs.

    Da segnalare la comparsa dell’indicatore del linguaggio della tastiera sulla barra del menu da cui è possibile richiamare le funzioni relative e la mappa caratteri.

    Come al solito, questa versione verrà supportata per i prossimi 9 mesi, arrivederci al 17 aprile 2014 con la 14.04 LTS Trusty Tahr.

  • ubuntuforums.org compromesso

    ubuntuforumsAlle 20:11 di ieri sera 20 luglio (UTC) ubuntuforums.org è stato vittima di un defacement e pochi minuti dopo il sito è stato messo offline dagli amministratori.

    Successive analisi hanno rivelato che l’attacco non si è limitato al defacement, ma sono stati rubati nomi utente, email e password degli utenti.

    Le password non erano conservate in chiaro, ma questo non garantisce che chi ha rubato il database non possa scoprirle con un attacco di forza bruta.

    Chiunque abbia un account su ubuntiforums.org e utilizzi la stessa password per siti diversi in cui utilizza il medesimo login o la medesima mail dovrebbe cambiare la password e riconsiderare questa abitudine.

    Ubuntu One, Launchpad e tutti gli altri servizi online di Ubuntu o Canonical non sono interessati da questo problema.

    In questo momento la pagina principale del sito è stata sostituita da una pagina informativa.

    Al momento della penetrazione il sito si basava su vBulletin che, secondo alcune fonti, non sarebbe stato aggiornato e non avrebbe avuto un’adeguata protezione per il pannello amministrativo (via Srefano Quintarelli)

  • Ubuntu 13.04 Raring Ringtail

    UbuntuNuova versione di Ubuntu, la prima di quest’anno.

    Il tema dominante di questa versione è stato il miglioramento delle prestazioni e la diminuzione delle richieste di memoria da parte dell’interfaccia grafica.

    Tra gli aggiornamenti di questa release si possono ricordare:

    • Linux kernel 3.8.8
    • Unity 7
    • Upstart 1.8
    • LibreOffice 4.0
    • CUPS 1.6.2 e cups-filters 1.0.34 con una migliore gestione delle stampanti di rete
    • Python 3.3

    Il downloader per Windows non è stato incluso in questa versione a causa di vari bachi, tra i queli alcuni problemi con Windows 8, al suo posto si può utilizzare la versione live.

    A quanto pare permane il problema della copia di file di grandi dimensioni via LAN attraverso gvfs.

    Raring Ringtail verrà supportata solamente per 9 mesi, la nuova durata del supporto per le versioni non-LTS.

    Arrivederci ad ottobre con Saucy Salamander.

  • Ubuntu 12.10 Quantal Quetzal

    Secondo appuntamento del 2012 per la release di Ubuntu, la 12.10 Quantal Quetzal.

    Questa release segue una versione Long Term Support (LTS ) supportata per 5 anni anziché i normali 18 mesi, quindi alcuni potranno decidere di non aggiornare.

    A parte alcuni aspetti di interfaccia utente, sono stati aggiornati alcuni software, tra cui:

    • Linux 3.5
    • Grub2 con il supporto UEFI completo di una firma elettronica generata da Microsoft
    • Python versione 3, sebbene la versione 2 sia ancora supportata
    • Unity 6.8
    • Schermata di login che supporta il collegamento RDP verso un altro computer
    • LibreOffice 3.6.1.2
    • Gimp 2.8

    (altro…)

  • Ubuntu 12.04 LTS Precise Pangolin

    Nuova versione di Ubuntu, questa volta targata LTS (Long Term Support).

    Di norma le versioni di Ubuntu sono supportate per 18 mesi, questa versione verrà supportata per cinque anni, sia nella versione server sia in quella workstation, a differenza delle precedenti LTS in cui il supporto della versione desktop era limitato a tre anni.

    Questa versione introduce l’HUD (Heads-Up Display) per cercare rapidamente le informazioni sul proprio computer. L’HUD viene richiamato premendo e rilasciando il tasto Alt e scrivendo quello che si sta cercando.

    Altro cambiamento degno di nota è il supporto di IPv6 equiparato ad IPv4: viene considerata attiva anche una connessione priva di IPv4 funzionante, ma con il solo IPv6. (altro…)

  • Gnome: se non funziona più il tastierino numerico

    Se un bel giorno accendete il PC e scoprite che il tastierino numerico non funziona più come vi aspettate, questa è una soluzione che ha funzionato sul mio PC.

    Aprire con il vostro editor preferito il file /usr/share/X11/xkb/compat/complete

    Cercate queste sue righe:

    augment "mousekeys"
    augment "accessx(full)"

    Mettete due slash davanti per commentarle:

    //augment "mousekeys"
    //augment "accessx(full)"

    Riavviate.