Windows Server 2022 menyertakan OpenSSH Server sebagai fitur opsional: tanpa penginstal pihak ketiga, diperbarui lewat Windows Update. Setelah aktif, Anda bisa menjalankan PowerShell lewat SSH, menyalin file dengan scp, dan mengarahkan skrip atau CI ke server seperti ke mesin Linux mana pun.
Semua langkah di bawah kami lakukan di image Windows Server 2022 kami, dalam PowerShell dengan hak administrator lewat RDP (cara terhubung).
Pertama, jaringan. Di paket Windows dengan NAT, satu-satunya penerusan masuk mengarah ke RDP, jadi SSH tidak bisa dijangkau dari internet. Untuk SSH dari luar Anda memerlukan paket dengan IPv4 sendiri, seperti Windows Small-IP. Jika port bisa dijangkau, langkah-langkah di bawah memakan sekitar lima menit.
1. Pasang OpenSSH Server
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Klien sudah terpasang; server menampilkan NotPresent sampai Anda menambahkannya. Di server kami pemasangan memakan 28 detik.
2. Jalankan dan aktifkan saat boot
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*
Memasang fitur ini membuat aturan firewall OpenSSH-Server-In-TCP (port 22, masuk, diizinkan), jadi Anda tidak perlu menambahkannya sendiri.
3. Jadikan PowerShell shell bawaan
Secara bawaan, sesi SSH masuk ke cmd.exe. Ganti ke PowerShell:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Koneksi baru langsung mendapat PowerShell 5.1; tidak perlu restart.
4. Kunci untuk Administrator: file yang membuat semua orang tersandung
Inilah jebakan Windows yang pertama. Untuk akun di grup Administrators, sshd tidak membaca C:\Users\<name>\.ssh\authorized_keys. Ia membaca satu file bersama, C:\ProgramData\ssh\administrators_authorized_keys, dan hanya jika tidak ada yang bisa menulis ke file itu selain Administrators dan SYSTEM:
$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 juga penting. Dalam pengujian kami, kunci yang sama yang disimpan dengan Out-File (UTF-16, bawaan PowerShell 5.1) ditolak dengan Permission denied (publickey). Dari komputer Anda:
ssh Administrator@YOUR.SERVER.IP
Anda seharusnya mendapat prompt PowerShell tanpa kata sandi. Untuk pengguna yang bukan administrator, C:\Users\<name>\.ssh\authorized_keys yang biasa tetap berfungsi.
5. Matikan login kata sandi: jebakan kedua
Perubahan yang paling jelas, PasswordAuthentication no, tidak cukup di versi ini. OpenSSH 8.1 tetap menawarkan keyboard-interactive, yang meminta kata sandi Windows yang sama. Dalam pengujian kami, login tanpa kunci masih menampilkan keyboard-interactive sampai kami mematikannya juga. Selain itu, pengaturannya harus berada sebelum blok Match Group administrators di akhir file, jika tidak hanya berlaku untuk administrator. Perintah ini menaruh kedua baris di paling atas:
$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
Biarkan sesi SSH Anda saat ini tetap terbuka dan uji dari terminal kedua. Percobaan hanya dengan kata sandi sekarang seharusnya mendapat:
Permission denied (publickey).
Itulah hasil pengujian kami untuk Administrator maupun pengguna biasa, sementara login dengan kunci tetap berfungsi.
Apa yang bisa Anda lakukan
- Menjalankan perintah dari mana saja:
ssh Administrator@IP 'Get-Service sshd'. - Menyalin file:
scp .\app.zip Administrator@IP:C:/apps/. - Membatasi port ke alamat Anda dengan cara yang sama seperti untuk RDP:
Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.
Paket yang mana
SSH dari luar membutuhkan IPv4 publik: Windows Small-IP (4 vCPU, 4 GB, 50 GB) seharga $28/bln, Windows Medium-IP (6 vCPU, 6 GB) $36/bln. Windows-nya adalah Server 2022 dengan lisensi Anda sendiri (penjelasan BYOL). Keempat paket ada di halaman Windows VPS. Agar program tetap berjalan setelah Anda memutus koneksi, lihat menjalankan skrip 24/7 di Windows Server.
Komentar
Belum ada komentar. Jadilah yang pertama.