giovedì 16 ottobre 2025

Conversione MBR a GPT – Avvio protetto (secure boot)

Introduzione

Uno dei motivi per cui potrebbe fallire l'aggiornamento da Windows 10 a Windows 11 è il secure boot/avvio protetto disattivato.

 Possiamo dire che solitamente è vero quanto segue:

 BIOS legacy = boot disk formattato MBR

BIOS UEFI   = boot disk formattato GPT

 salvo boot loader intermedi (es: GRUB)

 Le strategie che possiamo adottare sono:

-          Convertire la partizione da MBR a GPT

-          Usare RUFUS, creare una USB avviabile che aggira i requisiti obbligatori di Windows 11 - NON PROVATO

-          Registry key – NON PROVATO

 Io ho scelto la strada “canonica” ovvero convertire il disco da MBR a GPT 

Attività preliminari

Alcune attività preliminari:

-          eseguite un check disk

-          fate un backup bare metal del PC (Veeam agent free/macrium o qualsiasi altro software lo consenta)

-          se il pc è dotato di più dischi, usate diskpart per verificare quale è il disco del sistema operativo e quali sono le partizioni di sistema e di avvio.

-          verificare che il disco sia davvero formattato MBR (gestione disco di Windows) 

Procedura di aggiornamento

Il processo di convertire un disco da MBR a GPT non è distruttivo. Questa è una buona notizia 😊.

E possibile eseguire la conversione usando un’utility a riga di comando di Windows chiamata mbr2gpt.

 I passaggi per aggiornare un pc con avvio protetto/secure boot disattivo a Windows 10 sono i seguenti (dopo aver eseguito le attività preliminari):

 In questo caso è necessario qualche passaggio in più ed il BIOS è impostato in modalità LEGACY:

 1.      avvio pc in modalità recovery prompt dei comandi

2.      conversione disco da MBR a GPT con mbr2gpt

3.      attivazione bios UEFI (primo accesso al BIOS) e riavvio

4.      impostazione periferica di boot dentro al BIOS e riavvio

5.      riaccedere al computer e avviare pc health check

6.      avviare aggiornamento a Windows 11 tramite Windows Update o tool Microsoft. 

avvio pc in modalità recovery prompt dei comandi

Per andare in modalità recovery aprire il menu di impostazioni di Windows 10:

Update & Security - Recovery page (ripristino) - Avvio avanzato e premere restart

Dopo il riavvio premere troubleshoot - Command prompt (potrebbe chiedere le credenziali) 

Conversione disco da MBR a GPT con mbr2gpt

mbr2gpt /validate - questo comando verifica la fattibilità della conversione

mbr2gpt /convert /allowFullOS - questo comando converte il disco in GPT 

Attivazione bios UEFI (primo accesso al BIOS) e riavvio

accedere al BIOS ed attivare la modalità UEFI. Dopo questa operazione è necessario uscire e rientrare dal BIOS. Ricordarsi di salvare le impostazioni prima di uscire

Impostazione periferica di boot dentro al BIOS e riavvio

Accedere nuovamente al BIOS e verificare le periferiche di boot. Adesso il disco formattato in modalità GPT dovrebbe risultare visibile. Verificare che sia impostato come prima periferica di boot. Salvare le impostazioni ed uscire

Riaccedere al computer e avviare pc health check

Adesso il sistema operativo dovrebbe riavviarsi correttamente. Eseguire PC health check prima di lanciare l’aggiornamento a Windows 11

Avviare aggiornamento a Windows 11 tramite Windows Update o tool Microsoft.

L’aggiornamento a Windows 11 può essere avviato da Windows Update o dal tool di Microsoft 

Problemi di conversione

Purtroppo non sempre la conversione MBR – GPT va liscia alla prima. Nel mio caso, almeno, è stato cosi. Il tool mbr2gpt esegue diverse operazioni, tra cui la creazione di una partizione EFI su disco, uno shrink delle altre partizioni se necessario, e la conversione dell’attributo TIPO delle partizioni MBR nel GUID corretto che devono avere nella nuova GUID partition table (una sorta di mapping tra TIPO partizione MBR e GUID in GPT).

Ebbene, se MBR2GPT incontra un tipo di partizione che non conosce ed a cui non sa attribuire il GUID adatto, fallisce e non effettua la conversione. 

Le difficolta che ho incontrato sono state:

-          capire il motivo dell’errore

-          identificare il GUID adatto per il tipo di partizione caausa del problema. 

Identificare il problema

Il primo passaggio e’ stato eseguire mbr2gpt puntano usando una cartella dei log su chiavetta USB, per mia comodita. La chiavettaa inserita ha preso la lettera F: e su di essa ho creaato una cartella chiamata Logs. 

Quindi ho rieseguito l’utility:

mbr2gpt.exe /convert /disk:0 /allowFullOS /logs:F:\logs 

All’interno della cartella logs ho trovato il file setuperr.log. Questo e’ l’errore: 

2025-10-14 13:34:54, Error                        ValidateLayout: Cannot map MBR partition type 222. Please supply custom mapping through the command line.

2025-10-14 13:34:55, Error                        LayoutConversion: Cannot map MBR partition type 222.

2025-10-14 13:34:55, Error                        Cannot perform layout conversion. Error: 0x00000000 

In breve significa che non è riuscito ad assegnare un GUID ad una partizione MBR di tipo 0xDE (hex), che in decimale diventa proprio 222. 

Bene, di quale partizione stiamo parlando?

Con diskpart ho potuto verificare i dettagli delle partizioni presenti sul disco 0 ed ho trovato una partizione OEM di DELL, di tipo DE formattata in FAT16 da pochi Mb. Abbiamo trovato il colpevole. 

Identificare il GUID

Adesso non rimane che identificare un GUID adatto da mappare a questo tipo di partizione. Qui a seguire. Questi sono alcuni dei GUID piu noti usati nel mondo Microsoft:

 

Partition type                                                                       Globally unique identifier (GUID)[g]

MBR partition scheme                                                        024DEE41-33E7-11D3-9D69-0008C781F39F

EFI System partition                                                           C12A7328-F81F-11D2-BA4B-00A0C93EC93B

BIOS boot partition[h]                                                        21686148-6449-6E6F-744E-656564454649

Microsoft Reserved Partition (MSR)[46]                            E3C9E316-0B5C-4DB8-817D-F92DF00215AE

Basic data partition[46][j]                                                    EBD0A0A2-B9E5-4433-87C0-68B6B72699C7

Logical Disk Manager data partition[46]                            AF9B60A0-1431-4F62-BC68-3311714A69AD

Windows Recovery Environment[46]                                DE94BBA4-06D1-4D40-A16A-BFD50179D6AC 

il GUID più adatto da assegnare aa questa partizione è il seguente:

DE94BBA4-06D1-4D40-A16A-BFD50179D6AC 

Adesso non resta che rieseguire il comando con un mapping manuale:

mbr2gpt.exe /convert /disk:0 /map:222=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC /allowFullOS

 

Questa volta è andata decisamente meglio. La conversione in GPT ha funzionato nonostante un warning.

CONCLUSIONE

Esco dal prompt dei comandi in modalità recovery, entro nel bios per impostarlo in modalità UEFI e per verificare che il disco GPT sia la prima periferica di boot, riavvio il computer e finalmente sono riuscito ad avviare Windows 10 usando il disc formattato in GPT 

Quindi riassumendo

Mbr2gpt falliva perché non sapeva come convertire la partizione OEM

Eseguendo il mapping manuale della partizione abbiamo “forzato” mbr2gpt a convertirlo in un GUID a nostra scelta

I GUID sono definiti e codificati. A ciascun GUID noto corrisponde un tipo ed un utilizzo specifico di partizione 

APPENDICE

Non avrei fatto tutte queste operazioni senza un backup aa disposizione. Fatelo senza backup a vostro rischio e pericolo. 

Diskpart

Aprire un prompt dei comandi come amministratore e digitare:

            diskpart

Elencare i dischi

            list disk

Elencare i volumi

            list vol

Elencare le partizioni di un disco

            sel disk nn

            list partition

Verificare i dettagli di una partizione

            sel part=1

            deta part (potrebbe essere utile prendere nota del tipo di partizione GUID/HEX)

Un’informazione rilevante sulle partizioni e’ il TIPO 

Nel mio caso, per identificare la partizione OEM ho eseguito i seguenti comandi, dopo essere entrato in diskpart: 

Nel mio caso il disco di boot e' il disco 0

Sul disco sono presenti diverse partizioni. La partizione OEM di DELL era la partizione 1 (FAT16, circa 40 mb) 

DISKPART> sel disk 0

DISKPART> sel part=1

DISKPART> deta part 

Partizione 1

Tipo    : DE

Nascosta  : Sì

Richiesta: Sì

... 

Dopo la conversione con mbr2gpt analizzo la stessa partizione:

Partizione 1

Tipo    : de94bba4-06d1-4d40-a16a-bfd50179d6ac

Nascosta  : Sì

Richiesta: Sì

… 

REFERENCE

https://pureinfotech.com/turn-on-secure-boot-windows-10/

https://learn.microsoft.com/en-us/windows/deployment/mbr-to-gpt

https://en.wikipedia.org/wiki/GUID_Partition_Table

https://www.soluzionecomputer.it/come-usare-rufus-per-bypassare-i-requisiti-tpm-e-secure-boot-in-windows-11/#google_vignette

https://www.punto-informatico.it/windows-11-24h2-upgrade-vecchi-pc-rufus-4-6/

https://github.com/reformatcomputer/Windows-11-Registry-Bypass

https://learn.microsoft.com/it-it/answers/questions/4309787/guida-come-bypassare-i-requisiti-dinstallazione-di

mercoledì 24 settembre 2025

Piccolo hack Windows

 Piccolo hack Windows

Delle volte potrebbe essere necessario dover sbloccare la password di un sistema operativo.

Un piccolo trucco che puo essere utile e' quello di rinominare il file che avvia Ease of use access (accesso facilitato).

Quando parte windows, anche senza effettuare il login, e' possibile avviare l'accesso facilitato premendo cinque volte shift.

L'eseguibile invocato e' il seguente :c:\windows\system32\utilman.exe 

Se sostituiamo questo eseguibile con cmd.exe, all'avvio di windows, pur senza effettuare il login possiamo avviare un prompt dei comandi come SYSTEM.

Per farlo occorre partire con un CD di boot, come ad esempio Hiren's Boot CD.

Rinominare il file c:\windows\system32\utilman.exe in utilman.exe.old

Copiare cmd.exe

Rinominare cmd.exe in utilman.exe

Ripartire normalmente con windows e premere 5 volte SHIFT.

Appena appare un prompt dei comandi si puo operare eseguendo una serie di comandi


venerdì 11 luglio 2025

WINDOWS - RECUPERARE PASSWORD WIFI (metodo veloce)

Per recuperare la password di un profilo wifi e' possibile farlo usando netsh
Avviare un prompt dei comandi come administrator ed eseguire:

netsh wlan show profiles

Selezionare il rrpofilo/rete wifi di cui si desidera recuperare la password e digitare

(NETWORK deve essere sostituito con il nome della rete)

netsh wlan show profile name="NETWORK" key=clear

martedì 17 settembre 2024

Excel - macro per unire piu file excel in uno solo

 


Mi e' capitato di dover unire differenti files di excel in uno solo.

I file di origine sono tutti generati da RVTools e sono relativi a differenti vcenter.

Quello che volevo ottenere e' un singolo file che racchiudesse tutte le informazioni raccolte da RVTool.

Tutti i file di origine sono quindi strutturati nello stesso modo. Hanno tutti gli stessi fogli di lavoro, chiamati nello stesso modo, ma ciascuno di questi contiene dati differenti. 

Il risultato desiderato e' avere un file excel strutturato con gli stessi fogli di lavoro dei file di origine e che ciscuno di quiesti contenga tutte le righe provenienti dai differenti files.

Ad esempio nel foglio/tab vInfo voglio trovare un elenco di tutte le vm che ci sono in tutti i vcenter che RVTools ha interrogato.

La soluzione che ho utilizzato e' stata quella di creare un file excel di tipo xlsm, cioe che possa utilizzare macro e inserire il seguente codice:


Alt+F11 / VB editor / inserisci modulo

Salva

Alt+F8 per eseguire.


Viene creato un file excel che contiene gli stessi fogli di lavoro de, ma ciascun foglio tutte le righe dei provenienti, con qualche piccolo difetto superabile. Ho effettuato controlli a campione dei dati importati e sembra che non ci siano errori. Il solo problema e' l'intestazione duplicata.

 


Sub UnisciFileExcelConFogli()

    Dim cartella As String

    Dim file As String

    Dim wbOrigine As Workbook

    Dim wsOrigine As Worksheet

    Dim wsDestinazione As Worksheet

    Dim wbDestinazione As Workbook

    Dim ultimaRiga As Long

    Dim nomeFoglio As String

    Dim primaUnione As Boolean

    

    ' Imposta il percorso della cartella contenente i file Excel

    cartella = "C:\test\"

    

    ' Crea un nuovo workbook per i dati uniti

    Set wbDestinazione = Workbooks.Add

    

    ' Imposta il nome del primo file nella cartella

    file = Dir(cartella & "*.xlsx")

    

    primaUnione = True

    

    Do While file <> ""

        ' Apri il file Excel

        Set wbOrigine = Workbooks.Open(cartella & file)

        

        ' Cicla attraverso ogni foglio di lavoro nel file di origine

        For Each wsOrigine In wbOrigine.Worksheets

            nomeFoglio = wsOrigine.Name

            

            ' Controlla se il foglio esiste già nel file di destinazione

            On Error Resume Next

            Set wsDestinazione = wbDestinazione.Sheets(nomeFoglio)

            On Error GoTo 0

            

            ' Se il foglio non esiste, crealo

            If wsDestinazione Is Nothing Then

                Set wsDestinazione = wbDestinazione.Sheets.Add(After:=wbDestinazione.Sheets(wbDestinazione.Sheets.Count))

                wsDestinazione.Name = nomeFoglio

                ' Copia l'intestazione dal foglio di origine al foglio di destinazione

                wsOrigine.Rows(1).Copy wsDestinazione.Rows(1)

            End If

            

            ' Trova l'ultima riga del foglio di destinazione

            ultimaRiga = wsDestinazione.Cells(wsDestinazione.Rows.Count, "A").End(xlUp).Row + 1

            

            ' Copia i dati dal foglio di origine al foglio di destinazione, saltando l'intestazione se non è la prima unione

            If primaUnione Then

                wsOrigine.UsedRange.Copy wsDestinazione.Cells(ultimaRiga, 1)

            Else

                wsOrigine.Range("A2", wsOrigine.Cells(wsOrigine.Rows.Count, wsOrigine.UsedRange.Columns.Count).End(xlUp)).Copy wsDestinazione.Cells(ultimaRiga, 1)

            End If

            

            ' Reimposta wsDestinazione per il prossimo ciclo

            Set wsDestinazione = Nothing

        Next wsOrigine

        

        ' Chiudi il file di origine

        wbOrigine.Close False

        

        ' Passa al file successivo

        file = Dir

        primaUnione = False

    Loop

    

    MsgBox "Unione completata!"

End Sub


domenica 28 aprile 2024

DCDIAG batch

set datetime=%date:~6,4%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%

set date=%date:~6,4%%date:~3,2%%date:~0,2%

set time=%time:~0,2%%time:~3,2%%time:~6,2%

echo %datetime%

C:\Windows\System32\dcdiag.exe /e /v /c /fix /f:"c:\temp\%date%_%time%_dcdiag.txt"

REM -con debug- C:\Windows\System32\dcdiag.exe /v /c /d /e /fix /f:"c:\temp\%date%_%time%_dcdiag.txt"



lunedì 29 maggio 2023

Verificare il traffico di rete con Network Monitor e Netsh

 


Verificare il traffico di rete con Network Monitor e Netsh


Abilitare il trace con Netsh

netsh winhttp set tracing level=verbose format=hex output=file max-trace-file-size=512000 state=enabled

netsh trace start scenario=InternetClient

effettuare il tipo di traffico che si sospetta abbia problemi

netsh trace stop

Cercare il log in:

%LOCALAPPDATA%\Temp\NetTraces\NetTrace.etl

Aprire il file di log con Network Monitor 3.4

Ricercare nei log usando una chiave di ricerca. Esempio

description.contains("EnabledProtocols")

N.B.

Questo esempio era relativo ala ricerca di problemi sul traffico che usava il TLS 1.2.


venerdì 28 aprile 2023

Microsoft 365 trial

 Sottoscrizione Microsoft 365 senza carta di credito

Ai seguenti link e' possibile creare una sottoscrizione trial Microsoft 365 


Office 365 Business Premium Trial

http://go.microsoft.com/fwlink/p/?LinkID=510938


Create Office 365 E5 Trial Tenant

https://go.microsoft.com/fwlink/p/?LinkID=698279


Create Office 365 E3 Trial Tenant

https://go.microsoft.com/fwlink/p/?LinkID=403802

REFERENCE

https://www.linkedin.com/pulse/how-create-office-365-trial-subscription-without-creditcard-rawal/

venerdì 24 marzo 2023

Windows DNS - problemi risoluzione nome

 Problemi risoluzione nome DNS

Nei giorni scorsi mi e' capitato un problema molto singolare.

In una rete con diversi domain controller, uno solo non riusciva a risolvere un nome specifico wpad.nomedominio.local

La parte di record DNS era configurata correttamente. Aggiungendo un nome diverso non si verificava il problema. Neppure cancellare e ricreare il record ha avuto esito positivo.

Il problema e' proprio legato al nome: WPAD.

Wpad e' un servizio che viene usato nei browser internet per impostare ed abilitare il proxy. Purtroppo non si tratta di un servizio sicuro ed e' un processo di discovery automatico che non e' possibile controllare. Soprattutto puo essere usato in modo malevolo. Per questo motivo il servizio DNS lo inserisce automaticamente nella lista delle query dns bloccate.

Per sbloccarlo e' stato sufficiente andare in HKLM\System\CurrentControlSet\Services\DNS\PArameters\

e rimuovere dalla chiave: GlobalQueryBlockList il valore wpad.

Ricordarsi di riavviare il servizio.

La stessa limitazione esiste di default anche per ISATAP, che e' un servizio di transizione tra reti IPv6 e reti IPv4. Gli host che utilizzano questo servizio si appoggiano a degli ISATAP router, scoperti tramite la ricerca del nome dns isatap.nomedominio.local (x esempio) 


REFERENCE:

https://support.hpe.com/hpesc/public/docDisplay?docId=c01632046&docLocale=en_US

https://homeworks.it/Pdf/DNS%20Server%20Global%20Query%20Block%20List.pdf

http://certsrv.ru/en/tmg/html/6e65e577-a7ee-4299-b6dc-94e03e0b3cd2.htm



mercoledì 24 agosto 2022

IDRAC - Gestione tramite powershell

POWERSHELL for IDRAC

E' possibile gestire le nuove versioni di IDRAC tramite powershell. La cosa diventa utile nel momento in cui si vuole operare da un unico strumento tramite script, diversamente e' molto piu conveniente utilizzare una console ssh

I moduli IDRAC per powershell vanno installati usando questi comandi:

Find-Module *idrac* |ogv        

Find-Module *idrac* |Install-Module    

#Restituisce lo stato di IDRAC

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 -idrac_username root -idrac_password xxx -get_power_state_only y

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 -idrac_username root -idrac_password xxx -power_request_value On

EXAMPLE WITH AUTH TOKEN

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 get_power_state_only y -x_auth_token 5bd9cc9a8727ec366a9cef5bc83b2708

REFERENCE

https://www.dell.com/support/kbdoc/it-it/000178045/redfish-api-with-dell-integrated-remote-access-controller?dgc=SM&cid=243900&lid=spr5873265198&RefID=dtw22_sm5873265198&linkId=138750710

https://dl.dell.com/manuals/common/dell-emc-poweredge-server-mgmt-idrac-api.pdf

https://github.com/dell/DellPEWSMANTools

https://dl.dell.com/manuals/common/dell-emc-poweredge-server-mgmt-idrac-api.pdf


WSUS - Forzare rilevazione client

 Ciao,


spesso mi capita di non voler aspettare che WSUS rilevi un client. PEr forzare il rilevamento utilizzo questa procedura, che per adesso mi ha sempre dato molte soddisfazione :)

Verifica impostazioni WSUS

regedit hKLM\Software\Policies\Microsoft\Windows\Windows Update\WUSERVER

Forzare rilevamento del client da parte del wsus

Da eseguire sul client

$updateSession = new-object -com "Microsoft.Update.Session"

$Criteria="IsInstalled=0 and IsHidden=0"

$updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates

wuauclt /reportnow


sabato 20 agosto 2022

Installazione e configurazione di OpenSSH su Windows

=========================================================================


=====Installazione - metodo 1=====

# Impostazione local GPO

Computer Configuration\Administrative Templates\System

Specify settings for optional component installation and component repair: Enabled

ed abilitare il flag sull'opzione

Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)

# Aggiornamento policy

gpupdate /force

# Verifica dello stato dell'installazione

Get-WindowsCapability -Online | ? name -like "openssh*"

# Installazione OpenSSH server

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


=====Installazione - metodo 2=====

# Download OpenSSH server 

## Set network connection protocol to TLS 1.2

## Define the OpenSSH latest release url

 $url = 'https://github.com/PowerShell/Win32-OpenSSH/releases/latest/'

## Create a web request to retrieve the latest release download link

 $request = [System.Net.WebRequest]::Create($url)

 $request.AllowAutoRedirect=$false

 $response=$request.GetResponse()

 $source = $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win64.zip'

## Download the latest OpenSSH for Windows package to the current working directory

 $webClient = [System.Net.WebClient]::new()

 $webClient.DownloadFile($source, (Get-Location).Path + '\OpenSSH-Win64.zip')

# Verifica la presenza del file ZIP 

Get-ChildItem *.zip

Estraggo 

# Extract the ZIP to a temporary location

 Expand-Archive -Path .\OpenSSH-Win64.zip -DestinationPath ($env:temp) -Force

# Move the extracted ZIP contents from the temporary location to C:\Program Files\OpenSSH\

 Move-Item "$($env:temp)\OpenSSH-Win64" -Destination "C:\Program Files\OpenSSH\" -Force

# Unblock the files in C:\Program Files\OpenSSH\

 Get-ChildItem -Path "C:\Program Files\OpenSSH\" | Unblock-File

Installo OpenSSH 

& 'C:\Program Files\OpenSSH\install-sshd.ps1'

=========================================================================


Imposto il servizio 

## changes the sshd service's startup type from manual to automatic.

 Set-Service sshd -StartupType Automatic

## starts the sshd service.

 Start-Service sshd


#Aggiungo le regole di firewall

New-NetFirewallRule -Name sshd -DisplayName 'Allow SSH' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

oppure

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify

if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {

    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."

    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

} else {

    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."

}


# Imposto Powershell come console predefinita per i collegamenti in SSH

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force


# Verifico la connessione con password (client)

ssh administrator@1.2.3.4

ssh scpuser@1.2.3.4


# Creo la coppia di chiavi per l'autenticazione (sul client)

ssh-keygen -t ed25519


# Creo la cartella dentro cui copiare la chiave pubblica *.pub (sul server)

New-Item -Type Directory -Path "C:\key_to_add\"


# Accedo al server ssh con un utente NON amministratore di macchina


# Creo directory e file dove salvare le chiavi pubbliche per accedere senza password - user

New-Item -Type Directory -Path $env:USERPROFILE\.ssh\

New-Item -Type File -Path $env:USERPROFILE\.ssh\authorized_keys


# Creo il file dove salvare le chiavi pubbliche per accedere senza password - admin

New-Item -Type File -Path C:\ProgramData\ssh\administrators_authorized_keys


# copio il file .pub sul server e la importo nel file delle chiavi (powershell come admin)

$authorizedKey = Get-Content -Path "C:\key_to_add\id_ed25519.pub"

Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value "$authorizedKey"

Add-Content -Force -Path C:\ProgramData\ssh\administrators_authorized_keys -Value "$authorizedKey"


# Imposto i permessi del file copiandoli da un altro

get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keys


oppure


icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"


# Verifico la connessione senza password (client)

ssh administrator@1.2.3.4

ssh scpuser@1.2.3.4


# verifico la copia dei file da remoto

scp administrator@1.2.3.4:'c:\sshtest\*.txt' .

scp administrator@1.2.3.4:'c:\sshtest\*.txt' C:\testw10\


N.B. attenzione, se sto eseguendo la powershell come admin potrebbe non funzionare.


# modifica sshdconfig aggiungendo quanto segue.

queste istruzioni limitano gli host da cui e possible accedere e consentono solo l'autenticazione tramite chiavi

=========================================================================#PasswordAuthentication yes

PasswordAuthentication no

ChrootDirectory C:\SSHTest

PermitTunnel no

#AllowAgentForwarding yes

AllowAgentForwarding no

#AllowTcpForwarding yes

AllowTcpForwarding no

GatewayPorts no


#AllowUsers scpuser@1.2.3.6 administrator@1.2.3.6

AllowUsers scpuser@1.2.3.6

#AllowUsers scpuser@1.2.3.6 administrator@1.2.3.6 scpuser@1.2.3.6 administrator@1.2.3.6

#AllowUsers scpuser gippi\scpuser@1.2.3.6 dmz\scpuser@1.2.3.6 scpuser@dmz.local@1.2.3.6 scpuser@dom.local@1.2.*

#AllowUsers dmz\scpuser@1.2.3.6 scpuser@dmz.local@1.2.3.6

AllowUsers dmz\scpuser@1.2.3.6

DenyGroups Administrators

DenyGroups Administrators


Match user scpuser

ChrootDirectory C:\SSHTest

# ForceCommand internal-sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

GatewayPorts no


#Match Group administrators

# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# ChrootDirectory C:\SSHTest

# PermitTunnel no

# AllowAgentForwarding no

# AllowTcpForwarding no

# GatewayPorts no


# Match Group SSHUsers

# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# ChrootDirectory C:\SSHTest

# # ForceCommand internal-sftp

# PermitTunnel no

# AllowAgentForwarding no

# AllowTcpForwarding no

# GatewayPorts no

=========================================================================


N.B.

i permessi processati nel seguente ordine:

DenyUsers

AllowUsers

DenyGroups

AllowGroups


# restart servizio

get-service -name sshd | restart-service


# verifica dell'accesso e della copia dei file (sul client)

scp scpuser@1.2.3.4:'*.txt' C:\sshtest\


# impostazione del servizio ssh-agent (sul client)

set-service ssh-agent StartupType 'Automatic'

Start-Service ssh-agent

ssh-add "C:\Users\user\.ssh\id_ed25519" (eseguire con l'utente che deve effettuare la copia)


# Creazione archivio protetto da password della cartella C:\Users\user\.ssh\

prima di procedere alla rimozione procedere alla creazione di un archivio protetto che contiene priv key, pub key e known_hosts. salvare il file in un posto sicuro


# Cancellazione chiave privata (solo dopo aver impostato l'agent)

remove-item "C:\Users\user\.ssh\id_ed25519"


REFERENCE

https://docs.microsoft.com/it-it/windows-server/administration/openssh/openssh_overview

https://github.com/powershell/win32-openssh/wiki

https://adamtheautomator.com/openssh-windows/

https://techietown.info/2017/05/restrict-ssh-access-for-users-from-specific-ip-address/

http://woshub.com/using-ssh-key-based-authentication-on-windows/

https://www.concurrency.com/blog/may-2019/key-based-authentication-for-openssh-on-windows

https://social.technet.microsoft.com/Forums/en-US/251804c1-883e-4ec8-a378-352dabbe87dd/openssh-server-install-failed-contact-your-administrator-to-get-this-feature?forum=ws2019

https://thesysadminchannel.com/solved-add-windowscapability-failed-error-code-0x800f0954-rsat-fix/

https://bobcares.com/blog/install-and-configure-openssh-on-windows/

https://winscp.net/eng/docs/guide_windows_openssh_server

https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration

https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui


Installazione OpenSSH su Windows Server

Windows Server 2019 e Windows 10 tra le APP includono anche un server OpenSSH

Questo server consente il trasferimento sicuro di file da un server ad un'altro usando il protocollo SSH.

La porta utilizzata e' la 22.

Aprire powershell e digitare il seguente comando per verificare se e' gia installato

Get-WindowsCapability -Online | ? name -like "openssh*"

Eseguire il seguente comando per installare il server SSH

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Il primo problema che ho incontrato e' stata l'installazione. Se nella rete locale e' bloccato l'accesso di 

Windows Update verso l'esterno anche l'installazione delle app ed il Microsoft store potrebbero essere 

impattati (quasi sicuramente lo saranno).


ERRORE RISCONTRATO

=========================================================================Add-WindowsCapability : Add-WindowsCapability failed. Error code = 0x800f0954

At line:1 char:1

+ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Add-WindowsCapability], COMException

    + FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand

=========================================================================

E possibile verificare i log dell'ionstallazione qui:

C:\Windows\Logs\DISM\dism.log


Per risolvere ho dovuto modificare le impostazioni delle policy locali del server.

Computer Configuration\Administrative Templates\System

Specify settings for optional component installation and component repair: Enabled

ed abilitare il flag sull'opzione

Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)

Attendere un attimo per dare il tempo alla policy di venire elaborata e quindi rieseguire l'installazione

Get-WindowsCapability -Online | ? name -like "openssh*"

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Se tutto ha funzionato correttamente vedremo questi 2 servizi installati in Windows:

OpenSSH Authentication Agent

OpenSSH SSH Server

Perfetto. Siamo riusciti ad installare OpenSSH.
Adesso non rimane che configurarlo e collegarsi per verificarne il funzionamento
I passaggi successi sono configurare il server e verificarne il funzionamento.

venerdì 19 agosto 2022

Installazione componenti di Windows

 Molto spesso nelle reti aziendali gli aggiornamenti sono distribuiti internamente, bloccando l'accesso a Windows Update. Questa e' una situazione sana per diversi motivi: occupazione di banda, gestione degli aggiornamenti. Bloccare l'aggiornamento a Windows Update, purtroppo porta anche ad alcuni disservizi. Si porta a malfunzionamenti di Windows Store (che salvo rare eccezioni non serve) e all'impossibilita di installare alcuni componenti di Windows come RSAT, o nel mio caso OPENSSH server (potrei aggirare scaricando ed installando manualmente il tutto).

Ad ogni modo ho bisogno di sbloccare la possibilita del sistema in questione di scaricare i componenti opzionali di Windows. Ho fatto in questo modo:

gpedit.msc - computer - Administrative template - System - Specify setting for optional component installation and component repair = enable

Flag sulla voce: Download repair content and optional ...

quindi eseguire il comando

gpupdate /force per aggiornare le policy.

Nel mio caso ha funzionato senza riavvio