netbird-claude-install: пропуск перерегистрации + Mac-ключ в admin_authorized_keys

- Skip 'netbird up --setup-key' если хост уже Connected к tenant (иначе создаётся дубль peer)
- Залить публичный ed25519-ключ Mac в C:\\ProgramData\\ssh\\administrators_authorized_keys + правильные ACL (SYSTEM+Administrators)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
dttb
2026-05-28 13:07:16 +03:00
parent 5548d7d987
commit d85906f18c

View File

@@ -48,9 +48,15 @@ if (-not (Test-Path $NETBIRD_EXE)) {
}
# ===== 3. Регистрация =====
# Если уже подключён к tenant (например, через свой setup-key в другой группе) — не перерегистрировать
$nbStatus = & $NETBIRD_EXE status 2>$null | Out-String
if ($nbStatus -match "Management:\s*Connected" -or $nbStatus -match "Signal:\s*Connected") {
Write-Host "[3/7] Netbird уже подключён, перерегистрацию пропускаем"
} else {
Write-Host "[3/7] Регистрация в tenant с Claude-Diag ключом..."
& $NETBIRD_EXE up --setup-key $SETUP_KEY 2>&1 | Out-Host
Start-Sleep 3
}
# ===== 4. Пользователь claude =====
Write-Host "[4/7] Создаю/обновляю пользователя $CLAUDE_USER..."
@@ -119,6 +125,23 @@ try {
-Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force | Out-Null
} catch {}
# Mac-ключ Олега в administrators_authorized_keys (для админов sshd читает только этот файл)
$macKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPonNRAAJRK5wISltjR65MmeP7fQjf5HmYdQD9mlZ07F ai@mac-20260112"
$authKeys = "C:\ProgramData\ssh\administrators_authorized_keys"
try {
if (-not (Test-Path "C:\ProgramData\ssh")) {
New-Item -ItemType Directory -Path "C:\ProgramData\ssh" -Force | Out-Null
}
$current = if (Test-Path $authKeys) { Get-Content $authKeys -Raw -ErrorAction SilentlyContinue } else { "" }
if ($current -notmatch [regex]::Escape($macKey)) {
Add-Content -Path $authKeys -Value $macKey -Encoding ASCII
}
# Жёсткие права: только SYSTEM и Administrators (требование sshd для admin-ключей)
icacls $authKeys /inheritance:r /grant "SYSTEM:F" /grant "BUILTIN\Administrators:F" 2>&1 | Out-Null
} catch {
Write-Host " Не удалось установить Mac-ключ в administrators_authorized_keys" -ForegroundColor Yellow
}
# ===== 7. Firewall rules — только для NetBird CIDR =====
Write-Host "[7/7] Firewall rules для $NETBIRD_CIDR..."
$rules = @(