88 lines
2.7 KiB
PowerShell
88 lines
2.7 KiB
PowerShell
$ErrorActionPreference = "Continue"
|
|
$logFile = "C:\ssh_install.log"
|
|
|
|
function Log($msg) {
|
|
$ts = Get-Date -Format "HH:mm:ss"
|
|
$line = "[$ts] $msg"
|
|
Write-Host $line -ForegroundColor Cyan
|
|
Add-Content -Path $logFile -Value $line
|
|
try {
|
|
if ($WZ_HOST) {
|
|
(New-Object Net.WebClient).DownloadString("http://${WZ_HOST}/log?msg=$msg") | Out-Null
|
|
}
|
|
} catch {}
|
|
}
|
|
|
|
Log "=========================================="
|
|
Log "OPENSSH LEGACY INSTALLER (2008R2+)"
|
|
Log "=========================================="
|
|
|
|
$sshDir = "C:\OpenSSH-Win64"
|
|
$zipPath = "C:\OpenSSH-Win64.zip"
|
|
$sshUrl = "http://${WZ_HOST}/payloads/OpenSSH-Win64.zip"
|
|
|
|
try {
|
|
if (Test-Path "$sshDir\sshd.exe") {
|
|
Log "OpenSSH ya instalado en $sshDir"
|
|
} else {
|
|
Log "Paso 1: Descargando ZIP..."
|
|
$wc = New-Object System.Net.WebClient
|
|
$wc.DownloadFile($sshUrl, $zipPath)
|
|
Log "Descarga OK ($zipPath)"
|
|
|
|
Log "Paso 2: Extrayendo ZIP..."
|
|
$shell = New-Object -ComObject Shell.Application
|
|
$zip = $shell.NameSpace($zipPath)
|
|
$dest = $shell.NameSpace("C:\")
|
|
$dest.CopyHere($zip.Items(), 0x14)
|
|
Log "Extraido en $sshDir"
|
|
}
|
|
|
|
Log "Paso 3: Instalando servicio sshd..."
|
|
cd $sshDir
|
|
powershell -ExecutionPolicy Bypass -File "$sshDir\install-sshd.ps1"
|
|
Log "Servicio instalado"
|
|
|
|
Log "Paso 4: Generando host keys..."
|
|
if (!(Test-Path "$sshDir\ssh_host_rsa_key")) {
|
|
& "$sshDir\ssh-keygen.exe" -A
|
|
Log "Host keys generadas"
|
|
} else {
|
|
Log "Host keys ya existen"
|
|
}
|
|
|
|
Log "Paso 5: Configurando puerto 7022..."
|
|
$cfg = "$sshDir\sshd_config"
|
|
if (Test-Path "$sshDir\sshd_config_default") {
|
|
Copy-Item "$sshDir\sshd_config_default" $cfg -Force
|
|
}
|
|
if (Test-Path $cfg) {
|
|
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^\s*#?\s*Port\s+\d+' }
|
|
$newContent = @("Port 7022") + $lines
|
|
$newContent | Set-Content $cfg -Force
|
|
} else {
|
|
"Port 7022" | Set-Content $cfg
|
|
}
|
|
Log "Config: Port 7022"
|
|
|
|
Log "Paso 6: Firewall..."
|
|
netsh advfirewall firewall add rule name="SSH-7022" dir=in action=allow protocol=TCP localport=7022
|
|
Log "Firewall actualizado"
|
|
|
|
Log "Paso 7: Iniciando servicio..."
|
|
Set-Service sshd -StartupType Automatic -ErrorAction SilentlyContinue
|
|
Start-Service sshd -ErrorAction Stop
|
|
Log "Servicio sshd INICIADO en puerto 7022"
|
|
|
|
} catch {
|
|
Log "ERROR: $($_.Exception.Message)"
|
|
Log "LINEA: $($_.InvocationInfo.ScriptLineNumber)"
|
|
}
|
|
|
|
Log "=========================================="
|
|
Log "FIN. Log guardado en $logFile"
|
|
Log "=========================================="
|
|
Write-Host ""
|
|
Write-Host "Presiona ENTER para cerrar..." -ForegroundColor Yellow
|
|
Read-Host
|