# Setup SSH Keys # Run as Administrator in PowerShell param( [string]$Username = $env:USERNAME, [string]$PublicKey ) if (-not $PublicKey) { # Default public key - replace with your own or pass as parameter $PublicKey = Read-Host "Enter SSH public key (or press Enter for default)" if (-not $PublicKey) { $PublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGHUQnw0WfeFRQx76UlImXXhu3xeOH41PmDRid8pWK1D" } } Write-Host "=== Setting up SSH Keys for $Username ===" -ForegroundColor Cyan # User authorized_keys $userSshDir = "C:\Users\$Username\.ssh" $userAuthKeys = "$userSshDir\authorized_keys" Write-Host "Creating user .ssh directory..." -ForegroundColor Yellow New-Item -ItemType Directory -Path $userSshDir -Force | Out-Null Write-Host "Adding key to user authorized_keys..." -ForegroundColor Yellow Add-Content -Path $userAuthKeys -Value $PublicKey -Force # Fix permissions for user file icacls $userAuthKeys /inheritance:r /grant "${Username}:F" /grant "SYSTEM:F" # Administrator authorized_keys (for admin users) $adminAuthKeys = "C:\ProgramData\ssh\administrators_authorized_keys" Write-Host "Adding key to administrators_authorized_keys..." -ForegroundColor Yellow Add-Content -Path $adminAuthKeys -Value $PublicKey -Force # Fix permissions for admin file (required by OpenSSH) icacls $adminAuthKeys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F" Write-Host "" Write-Host "SSH keys configured for '$Username'!" -ForegroundColor Green Write-Host "You can now SSH in with the corresponding private key." -ForegroundColor Yellow