αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… Windows αžαžΆαž˜αžšαž™αŸˆ SSH αžŠαžΌαž…αž‡αžΆαž›αžΈαž“αž»αž…

αžαŸ’αž‰αž»αŸ†αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž€αžΆαžšαžαž€αž…αž·αžαŸ’αžαžŠαŸ„αž™αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžœαžΈαž“αžŠαžΌαŸ” αž‘αŸ αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‚αžΌαž”αŸ’αžšαž‡αŸ‚αž„ αž¬αž‡αžΆαž’αŸ’αž“αž€αž‚αžΆαŸ†αž‘αŸ’αžš Microsoft αž“αž·αž„αž•αž›αž·αžαž•αž›αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‘αŸαŸ” αž•αž›αž·αžαž•αž›αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ„αŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž“αŸ„αŸ‡αž‘αŸαŸ”
αžœαžΆαžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž€αžΆαžšαžˆαžΊαž…αžΆαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžœαžΈαž“αžŠαžΌ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžšαž™αŸˆαž€αž“αŸ’αž›αŸ‚αž„αžαŸ‚αž˜αž½αž™ (αž‡αŸ†αžšαžΆαž”αžŸαž½αžš WinRM αž‡αžΆαž˜αž½αž™ HTTPS) αž¬αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž›αžΆαŸ†αž„ (αž‡αŸ†αžšαžΆαž”αžŸαž½αžš RDP αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αžšαŸ…αž”αŸ’αžšαž‘αŸαžŸ) αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ Win32-OpenSSHαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™αžŸαž„αŸ’αžšαŸ’αž‚αŸ„αŸ‡αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαžŸαžšαžŸαŸƒαž”αŸ’αžšαžŸαžΆαž‘αŸ”

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… Windows αžαžΆαž˜αžšαž™αŸˆ SSH αžŠαžΌαž…αž‡αžΆαž›αžΈαž“αž»αž…

αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ†αž‘αžΎαž„αŸ–

  1. αžŠαŸ„αž™αžŠαŸƒ
  2. αžαžΆαž˜αžšαž™αŸˆ αž€αž‰αŸ’αž…αž”αŸ‹ αžŸαžΌαž€αžΌαž‘αžΆ
  3. αžαžΆαž˜αžšαž™αŸˆ Ansible αž§αž‘αžΆαž αžšαžŽαŸαžαž½αž“αžΆαž‘αžΈ jborean93.win_openssh

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž…αŸ†αžŽαž»αž…αžŠαŸ†αž”αžΌαž„αž–αŸ’αžšαŸ„αŸ‡αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž„αž¬αžαž·αž…αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αŸ”

αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αŸαžαžΆ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž’αŸ„αž™αž”αŸ’αžšαžΎαžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αžαž“αŸ„αŸ‡αž‘αŸαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαžΌαž˜αž‘αžΆαž‰αž™αž€αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αž αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ 7.9.0.0p1-αž”αŸαžαžΆ. αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ 32 αž“αž·αž„ 64 αž”αŸŠαžΈαžαŸ”

αžαŸ’αž…αž”αŸ‹αž…αžΌαž› C: αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ FilesOpenSSH
αž…αŸ†αžŽαž»αž…αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ– αž˜αžΆαž“αžαŸ‚ αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž“αž·αž„αž€αŸ’αžšαž»αž˜αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž” αžŠαŸ†αž‘αžΎαž„-sshd.ps1 αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž“αŸαŸ‡αŸ”

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž…αžΌαž›αž“αŸ…αž›αžΎαž…αŸ’αžšαž€ 22αŸ–

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

αž€αžΆαžšαž”αž€αžŸαŸ’αžšαžΆαž™αŸ– αž’αžΆαž”αŸ‹αž—αŸ’αž›αŸαž New-NetFirewallRule αž”αŸ’αžšαžΎαž“αŸ…αž›αžΎ Windows Server 2012 αž“αž·αž„αž€αŸ’αžšαŸ„αž™αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαžŸαŸ‹αž”αŸ†αž•αž»αž (αž¬αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž›αžΎαžαž») αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ–

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ–

net start sshd

αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžŸαŸ„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αžΆαžαŸ‹) αž“αŸ…αž€αŸ’αž“αž»αž„ % programdata%ssh

αž™αžΎαž„αž’αžΆαž…αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš autostart αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ–

Set-Service sshd -StartupType Automatic

αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ (αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αžšαž½αž… αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‚αžΊ cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αŸ– αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαžŠαžΆαž…αŸ‹αžαžΆαžαŸ”

αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž‡αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹?

αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αžšαŸ€αž”αž…αŸ†αžœαžΆαŸ” sshd_configαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹ C: αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž§αž‘αžΆαž αžšαžŽαŸαŸˆ

PasswordAuthentication no
PubkeyAuthentication yes

αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαžαžαž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„αžαžαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ .sshαž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž―αž€αžŸαžΆαžš αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž. αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ”

αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αŸ– αž˜αžΆαž“αžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αžŸαžšαžŸαŸαžšαž‘αŸ…αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž”αž·αž‘αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž·αž‘αŸ’αž’αž·αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αŸ–

StrictModes no

αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ C: αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ FilesOpenSSH αž˜αžΆαž“ 2 αžŸαŸ’αž‚αŸ’αžšαžΈαž” (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1) αžŠαŸ‚αž›αž‚αž½αžšαžαŸ‚αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžαž–αŸ’αžœαž€αž·αž…αŸ’αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αžŸαž·αž‘αŸ’αž’αž· αžšαž½αž˜αž‘αžΆαŸ†αž„αž‡αžΆαž˜αž½αž™ αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž–αž½αž€αž‚αŸαž˜αž·αž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αŸ”

αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‘αžΎαž„αžœαž·αž‰ sshd αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· / αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž“αŸƒαž”αŸ’αžšαž’αžΆαž“αž”αž‘αŸ”

αž”αŸ’αžšαž»αžŸ:

  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”
    αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Windows αžαž·αž…αžαž½αž… αžœαžΆαž–αž·αžαž‡αžΆαžšαž’αžΆαž€αŸ‹αžšαž’αž½αž›αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αŸ–
    αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž‘αŸ…αžαžΆαž˜αžšαž™αŸˆ ssh αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž”αŸ’αžšαžΎ rdp,
    αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ…αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž‡αžΆαž˜αž½αž™αž”αž“αŸ’αž‘αžΆαž™αž‚αžΊαž‡αžΆαž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈ ssh αžŠαŸ†αž”αžΌαž„αž αžΎαž™ RDP αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆαŸ”
  • αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„
    αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž“αŸαŸ‡αž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αŸ”
  • αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαž…αž˜αŸ’αž„αžΆαž™
    αž˜αž·αž“αž˜αžΆαž“αžŸαŸ‚αž›αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž‘αŸ αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αžΆαŸ†αž„αž’αž“αž’αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αŸ”

αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·:

  • αž˜αž·αž“αž‡αŸ†αž“αž½αžŸ RDP αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž‘αŸαŸ”
    αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž’αŸ’αžœαžΈβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž–αžΈβ€‹αž€αž»αž„αžŸαžΌαž›, alas. αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž› GUI αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαŸ”

αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αŸ–
αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž›αž½αž“αž―αž„
αž‡αž˜αŸ’αžšαžΎαžŸαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αžŠαŸ„αž™αž’αŸ€αž“αžαŸ’αž˜αžΆαžŸαž–αžΈ αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αŸ”.

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹