🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
44 lines
1.5 KiB
PowerShell
Executable File
44 lines
1.5 KiB
PowerShell
Executable File
# 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
|