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 | 
