Linux gibi SSH aracılığıyla Windows'a bağlanma

Windows makinelerine bağlanmaktan her zaman hayal kırıklığına uğradım. Hayır, Microsoft'un ve ürünlerinin ne rakibi ne de destekçisiyim. Her ürün kendi amacı için vardır ama mesele bu değil.
Windows sunucularına bağlanmak benim için her zaman dayanılmaz derecede acı verici olmuştur, çünkü bu bağlantılar ya tek bir yerden yapılandırılmıştır (HTTPS ile merhaba WinRM) ya da çok istikrarlı bir şekilde çalışmamaktadır (yurtdışındaki sanal makinelere merhaba RDP).

Bu nedenle, tesadüfen projeye rastlamak Win32-OpenSSHKurulum deneyimimi paylaşmaya karar verdim. Belki bu araç birisini çok fazla sinirden kurtaracaktır.

Linux gibi SSH aracılığıyla Windows'a bağlanma

Kurulum seçenekleri:

  1. el ile
  2. Sayesinde paket chocolatey
  3. Ansible aracılığıyla, örneğin rol jborean93.win_openssh

Daha sonra ilk noktadan bahsedeceğim çünkü geri kalanında her şey az çok net.

Bu projenin henüz beta aşamasında olduğunu, dolayısıyla üretimde kullanılması tavsiye edilmediğini belirtmek isterim.

Yani, şu anda en son sürümü indirin 7.9.0.0p1-beta. Hem 32 hem de 64 bit sistemler için versiyonları mevcuttur.

Paketi açın C:Program DosyalarıOpenSSH
Doğru çalışma için zorunlu bir nokta: yalnızca SİSTEM ve yönetici grubu.

Komut dosyası kullanarak hizmetleri yükleme install-sshd.ps1 bu dizinde bulunan

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

22 numaralı bağlantı noktasından gelen bağlantılara izin ver:

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

Açıklama: uygulama Yeni-NetFirewallKuralı Windows Server 2012 ve sonrasında kullanılır. En eski sistemlerde (veya masaüstünde) şu komutu kullanabilirsiniz:

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

Hizmeti başlatalım:

net start sshd

Başlangıçta, ana makine anahtarları (eksikse) otomatik olarak oluşturulacaktır. %programdata%ssh

Sistem başlatıldığında servisin otomatik başlatılmasını şu komutla etkinleştirebiliriz:

Set-Service sshd -StartupType Automatic

Ayrıca varsayılan komut kabuğunu da değiştirebilirsiniz (kurulumdan sonra varsayılan cmd):

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

Açıklama: Mutlak bir yol belirtmelisiniz.

Sırada ne var?

Ve sonra kurduk sshd_configiçine yerleştireceğimiz C:Program Verileri. Örneğin:

PasswordAuthentication no
PubkeyAuthentication yes

Ve kullanıcı klasöründe bir dizin oluşturun .sshve içindeki dosya yetkili anahtarlar. Genel anahtarları oraya yazıyoruz.

Önemli açıklama: Yalnızca dosyanın bulunduğu dizinde bulunan kullanıcının bu dosyaya yazma hakkı olmalıdır.

Ancak bununla ilgili sorun yaşıyorsanız, yapılandırmada hak denetimini istediğiniz zaman kapatabilirsiniz:

StrictModes no

bu arada, içinde C:Program DosyalarıOpenSSH 2 komut dosyası var (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), hakları düzeltmekle yükümlü değildir, ancak bunlar da dahil olmak üzere yetkili anahtarlarama bazı nedenlerden dolayı kayıt olmuyorlar.

Hizmeti yeniden başlatmayı unutmayın sshd değişiklikleri uyguladıktan sonra.

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>

Öznel artılar/eksiler.

Artıları:

  • Sunuculara bağlanmaya standart yaklaşım.
    Az sayıda Windows makinesi olduğunda, aşağıdaki durumlarda çok sakıncalıdır:
    Yani, burada ssh aracılığıyla gidiyoruz ve burada rdp'yi kullanıyoruz,
    ve genel olarak burçlarla ilgili en iyi uygulama, öncelikle bir ssh tüneli ve bunun üzerinden RDP'dir.
  • Kurulumu kolay
    Bunun açık olduğunu düşünüyorum.
  • Bağlantı hızı ve uzaktaki bir makineyle çalışma
    Hem sunucu kaynaklarından hem de iletilen veri miktarından tasarruf sağlayan grafiksel bir kabuk yoktur.

Eksileri:

  • Tamamen RDP'nin yerini almaz.
    Ne yazık ki her şey konsoldan yapılamaz. GUI'nin gerekli olduğu durumları kastediyorum.

Makalede kullanılan malzemeler:
Projenin kendisine bağlantı
Kurulum seçenekleri utanmadan kopyalanıyor Ansible dokümanlar.

Kaynak: habr.com

Yorum ekle