Tag: windows

  • 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
  • Registry Explorer

    Il registry di Windows, introdotto nella versione 3.1, è un database gerarchico che ha (in parte) sostituito ed espanso i file .INI per la configurazione del sistema operativo e degli applicativi. I programmi di Windows possono scegliere se usare o no il registry, non è detto che tutti lo facciano.

    Il programma più utilizzato per analizzare e modificare il registry è RegEdit di Microsoft, fornito assieme a Windows, ma ha delle limitazioni.

    Registry Explorer di Pavel Yosifovich si pone l’obiettivo di colmare questo divario.

    Continua a leggere
  • Sincronizzare la time zone

    Sincronizzare l’ora esatta è facile, sincronizzare l’impostazione della time zone un pochino meno.

    Per sincronizzare l’ora esatta si usa il protocollo NTP, che, va ricordato, distribuisce solamente l’orario UTC; la time zone è una sorta di vista logica di UTC legata alla posizione in cui vi trovate (o al governo che riconoscete valido, se siete in Palestina).

    (altro…)
  • Veeam Agent for Microsoft Windows 2.0

    Veeam ha reso disponibile a tutti la versione RTM 2.0 di Veeam Agent for Microsoft Windows, precedentemente noto come Veeam Endpoint Backup.

    Si tratta di un software di backup granulare disaster recovery per installazioni Windows Server 2008 R2 SP1 e successivi (2016 incluso, escluse le installazioni Core e failover cluster) e Windows 7 SP1 e successivi (10 Creators Update inclusa). Dove applicabile, è possibile installare il programma anche nelle versioni a 32 bit di Windows. No, non fate i cabarettisti: “2.0” si riferisce a Veeam Agent, non a Windows.

    Il software può essere installato con tre tipi di licenze: Free, Workstation e Server. (altro…)

  • Fine della campagna “Get Windows 10”

    Se la campagna “Get Windows 10” è terminata il 29 luglio 2016, dal punto di vista del marketing, è solamente con gli aggiornamenti di settembre che è terminata dal punto di vista sistemistico.

    Questo mese Micosoft ha rilasciato l’aggiornamento facoltativo KB3184143, che rimuove GWX e tutti i componenti correlati. (altro…)

  • Abuso di utenti con privilegi elevati

    Una delle norme più virtuali dei SysAdmin *NIX e’ l’uso di sudo al posto di su - e della shell interattiva di root. Tutti dicono di farlo e pochi lo fanno per una mera ragione di praticità (e poi non è simpatico digitare continuamente la propria password sotto gli occhi della gente).

    Chi amministra *NIX lo fa spesso con un’interfaccia a riga di comando, quindi l’utilizzo della shell con privilegi di root è veramente quasi sempre dedicata ad attività amministrative.

    Gli amministratori di Windows fanno anche di peggio. (altro…)

  • Impedire il download di Windows 10

    Sembra che per qualcuno il download dell’installer di Windows 10 costituisca un’assoluta novità di download di aggiornamenti cospicui o di download a presunta insaputa dell’utente, ma transeat.

    Ci sono vari metodi per bloccare il download dell’installer di Windows 10, tutti efficaci, ma ognuno con delle possibili controindicazioni in casi specifici. (altro…)

  • “Telemetria” di Windows

    Abbiamo detto delle funzioni possibilmente lesive della privacy di Windows 10.

    Per questa specifica ragione molti hanno scelto di restare sulla versione 7 oppure 8 del sistema operativo.

    Ho una brutta notizia per voi: gli aggiornamenti KB3075249, KB3080149 e KB3068708 per Windows 7, Windows 8 e Windows Server (sia a 32 sia a 64 bit) attivano lo stesso livello di “telemetria”.

    Gli aggiornamenti sono stati distribuiti anche tramite WSUS. (altro…)

  • 10 cose su Windows

    Qual’è il dovere di ogni buon Geek nel fine settimana immediatamente successivo all’uscita di un nuovo sistema operativo?
    Naturalmente installarlo, giocarci e soprattutto condividiere: ecco quindi un breve hands-on su Windows 10, installato su un paio di macchine di test.
    Non è senz’altro un post esauriente e non è molto approfondito, principalmente per il poco tempo a disposizione per testare l’OS, ma cerco di offrire informazioni di prima mano e qualche spunto per ulteriori approfondimenti.

    Aggiornamento 2015-08-09: Dopo qualche giorno di ulteriori test con Win10 e dopo essermi documentato ulteriormente, ho deciso per una revisione di questo post. Perchè resti un articolo utile e non solo prematuro, ho corretto alcuni errori e fatto delle aggiunte. (altro…)

  • Fine del supporto di Windows Server 2003

    Windows Server 2003Oggi termina il supporto di Windows Server 2003.

    Il patch tuesday di oggi sarà l’ultimo con gli aggiornamenti di Windows Server 2003.

    Dopo questi aggiornamenti Windows Server 2003 sarà vulnerabile a problemi scoperti per altre piattaforme che potrebbero interessare anche quella versione del sistema operativo.

    I problemi maggiori riguardano naturalmente i 2003 esposti a Internet. (altro…)

  • Aggiornate gli IIS esposti a Internet ADESSO

    Microsoft ha recentemente corretto un problema critico di HTTP.sys

    Come capita spesso, qualcuno ha analizzato le differenze per scoprire il tipo di problema che è stato corretto e i risultati delle analisi portano a suggerire di aggiornare immediatamente IIS, prima che dobbiate essere costretti a farlo da una serie di BSOD. (altro…)

  • NCSI

    No, non si tratta di una nuova serie TV della CBS.

    L’acrostico è Network Connectivity Status Icon: per chi non lo sapesse, si tratta dell’etichetta con cui si identifica l’insieme delle procedure tramite le quali Windows – da Vista in poi – stabilisce se la macchina su cui gira sia collegata a internet o meno.

    Quando il nostro computer non dispone di una connessione cablata o WiFi, Windows semplicemente comunica che non siamo connessi ad alcuna rete.
    La faccenda si fa più complicata se in effetti abbiamo una connessione a una rete locale e di conseguenza il sistema operativo deve stbilire se questa rete sia collegata a sua volta a internet e ne consenta la navigazione. (altro…)