37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
Param(
 | 
						|
    [parameter(Mandatory=$true)]
 | 
						|
    [string]$SSHPublicKey
 | 
						|
)
 | 
						|
 | 
						|
$ErrorActionPreference = "Stop"
 | 
						|
 | 
						|
 | 
						|
function Set-SSHPublicKey {
 | 
						|
    if(!$SSHPublicKey) {
 | 
						|
        return
 | 
						|
    }
 | 
						|
    $authorizedKeysFile = Join-Path $env:ProgramData "ssh\administrators_authorized_keys"
 | 
						|
    Set-Content -Path $authorizedKeysFile -Value $SSHPublicKey -Encoding ascii
 | 
						|
    $acl = Get-Acl $authorizedKeysFile
 | 
						|
    $acl.SetAccessRuleProtection($true, $false)
 | 
						|
    $administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators", "FullControl", "Allow")
 | 
						|
    $systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM", "FullControl", "Allow")
 | 
						|
    $acl.SetAccessRule($administratorsRule)
 | 
						|
    $acl.SetAccessRule($systemRule)
 | 
						|
    $acl | Set-Acl
 | 
						|
}
 | 
						|
 | 
						|
# Install OpenSSH
 | 
						|
$(
 | 
						|
 | 
						|
Get-WindowsCapability -Online -Name OpenSSH* | Add-WindowsCapability -Online
 | 
						|
Set-Service -Name sshd -StartupType Automatic
 | 
						|
Start-Service sshd
 | 
						|
 | 
						|
# Authorize SSH key
 | 
						|
Set-SSHPublicKey
 | 
						|
 | 
						|
# Set PowerShell as default shell
 | 
						|
New-ItemProperty -Force -Path "HKLM:\SOFTWARE\OpenSSH" -PropertyType String `
 | 
						|
                 -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
 | 
						|
) *>$1 >> c:\output.txt |