Windows Server 2022, OpenSSH Server'ı isteğe bağlı bir özellik olarak sunar: üçüncü taraf kurulum programı yok, güncellemeler Windows Update ile gelir. Açıldıktan sonra SSH üzerinden PowerShell çalıştırır, scp ile dosya kopyalar ve betikleri ya da CI'yı sunucuya herhangi bir Linux makinesi gibi yöneltirsiniz.
Aşağıdakilerin hepsini Windows Server 2022 imajımızda, RDP üzerinden yönetici yetkili bir PowerShell'de yaptık (nasıl bağlanılır).
Önce ağ. NAT'lı bir Windows planında tek gelen yönlendirme RDP'ye gider; bu yüzden SSH internetten erişilemez. Dışarıdan SSH için kendi IPv4'ü olan bir plan gerekir, örneğin Windows Small-IP. Port erişilebilir olduğunda aşağıdaki adımlar yaklaşık beş dakika sürer.
1. OpenSSH Server'ı kurun
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
İstemci zaten kuruludur; sunucu siz ekleyene kadar NotPresent görünür. Sunucumuzda kurulum 28 saniye sürdü.
2. Başlatın ve açılışta başlamasını sağlayın
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*
Özelliğin kurulumu OpenSSH-Server-In-TCP güvenlik duvarı kuralını oluşturur (port 22, gelen, izinli); kendiniz eklemeniz gerekmez.
3. PowerShell'i varsayılan kabuk yapın
Varsayılan olarak SSH oturumu cmd.exe içinde açılır. PowerShell'e geçin:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Yeni bağlantılar hemen PowerShell 5.1 alır; yeniden başlatma gerekmez.
4. Administrator için anahtar: herkesin takıldığı dosya
Bu, ilk Windows tuzağıdır. Administrators grubundaki hesaplar için sshd C:\Users\<name>\.ssh\authorized_keys dosyasını okumaz. Ortak bir dosyayı, C:\ProgramData\ssh\administrators_authorized_keys dosyasını okur; o da yalnızca Administrators ve SYSTEM dışında kimse yazamıyorsa:
$pub = 'ssh-ed25519 AAAA...your-public-key... you@laptop'
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value $pub -Encoding ascii
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
-Encoding ascii de önemlidir. Testimizde aynı anahtar Out-File ile kaydedildiğinde (UTF-16, PowerShell 5.1 varsayılanı) Permission denied (publickey) ile reddedildi. Kendi makinenizden:
ssh Administrator@YOUR.SERVER.IP
Parolasız bir PowerShell istemi almalısınız. Yönetici olmayan kullanıcılar için alışılmış C:\Users\<name>\.ssh\authorized_keys çalışır.
5. Parola ile girişi kapatın: ikinci tuzak
Akla gelen PasswordAuthentication no değişikliği bu sürümde yetmez. OpenSSH 8.1, aynı Windows parolasını soran keyboard-interactive yöntemini sunmaya devam eder. Testimizde anahtarsız giriş, onu da kapatana kadar keyboard-interactive göstermeye devam etti. Ayrıca ayar, dosyanın sonundaki Match Group administrators bloğundan önce olmalıdır; yoksa yalnızca yöneticiler için geçerli olur. Bu komut iki satırı da en üste koyar:
$cfg = 'C:\ProgramData\ssh\sshd_config'
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^#?\s*(PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication)\s' }
Set-Content $cfg -Value (@('PasswordAuthentication no', 'ChallengeResponseAuthentication no') + $lines) -Encoding ascii
Restart-Service sshd
Mevcut SSH oturumunuzu açık tutun ve ikinci bir terminalden deneyin. Yalnızca parolayla yapılan deneme artık şunu almalıdır:
Permission denied (publickey).
Testimizde hem Administrator hem de normal kullanıcı için sonuç buydu; anahtarla giriş ise çalışmaya devam etti.
Bununla neler yapabilirsiniz
- Her yerden komut çalıştırmak:
ssh Administrator@IP 'Get-Service sshd'. - Dosya kopyalamak:
scp .\app.zip Administrator@IP:C:/apps/. - Portu RDP için olduğu gibi kendi adresinizle sınırlamak:
Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.
Hangi plan
Dışarıdan SSH için genel bir IPv4 gerekir: Windows Small-IP (4 vCPU, 4 GB, 50 GB) $28/ay, Windows Medium-IP (6 vCPU, 6 GB) $36/ay. Windows, kendi lisansınızla Server 2022'dir (BYOL nedir). Dört planın tamamı Windows VPS sayfasında. Bir programın bağlantı kesildikten sonra çalışmaya devam etmesi için Windows Server'da 7/24 betik çalıştırma yazısına bakın.
Yorumlar
Henüz yorum yok. İlk olun.