Bagikan melalui


Konfigurasi OpenSSH Server untuk Windows Server dan Windows

Artikel ini membahas konfigurasi khusus Windows untuk OpenSSH Server (sshd).

OpenSSH mempertahankan dokumentasi terperinci untuk opsi konfigurasi secara online di OpenSSH.com, yang tidak diduplikasi dalam kumpulan dokumentasi ini.

File konfigurasi OpenSSH

OpenSSH memiliki file konfigurasi untuk pengaturan server dan klien. OpenSSH adalah sumber terbuka dan ditambahkan ke sistem operasi Windows Server dan Windows Client, dimulai dengan Windows Server 2019 dan Windows 10 (build 1809). Akibatnya, dokumentasi sumber terbuka untuk file konfigurasi OpenSSH tidak diulang di sini. File konfigurasi klien dan dapat ditemukan di halaman manual ssh_config dan untuk file konfigurasi OpenSSH Server dapat ditemukan di halaman manual sshd_config.

Buka SSH Server (sshd) membaca data konfigurasi dari %programdata%\ssh\sshd_config secara bawaan, atau file konfigurasi yang berbeda dapat ditentukan dengan menjalankan sshd.exe dengan parameter -f. Jika file tidak ada, sshd menghasilkannya dengan konfigurasi default saat layanan dimulai.

Di Windows, Klien OpenSSH (ssh) membaca data konfigurasi dari file konfigurasi dalam urutan berikut:

  1. Dengan meluncurkan ssh.exe dengan parameter -F, menentukan jalur ke file konfigurasi dan nama entri dari file tersebut.
  2. File konfigurasi pengguna di %userprofile%\.ssh\config.
  3. File konfigurasi di seluruh sistem pada %programdata%\ssh\ssh_config.

Mengonfigurasi shell default untuk OpenSSH di Windows

Shell perintah default memberikan pengalaman yang dilihat pengguna saat menyambungkan ke server menggunakan SSH. Windows default awal adalah shell Perintah Windows (cmd.exe). Windows juga menyertakan PowerShell, dan shell perintah pihak ketiga juga tersedia untuk Windows dan mungkin dikonfigurasi sebagai shell default untuk server.

Untuk mengatur shell perintah default, pertama-tama konfirmasikan bahwa folder penginstalan OpenSSH ada di jalur sistem. Untuk Windows, folder penginstalan default %systemdrive%\Windows\System32\openssh. Perintah berikut menunjukkan pengaturan jalur saat ini, dan menambahkan folder penginstalan OpenSSH default ke dalamnya.

Shell perintah Perintah yang akan digunakan
Perintah path
PowerShell $env:path

Mengonfigurasi shell ssh bawaan dilakukan di registri Windows dengan menambahkan jalur lengkap ke shell yang bisa dijalankan ke HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH dalam nilai string DefaultShell.

Sebagai contoh, perintah PowerShell yang ditingkatkan berikut mengatur shell default untuk powershell.exe OpenSSH Server (pengaturan jalur ini tidak berlaku untuk Klien OpenSSH):

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Konfigurasi Windows di sshd_config

Di Windows, sshd membaca data konfigurasi dari %programdata%\ssh\sshd_config secara default, atau file konfigurasi yang berbeda mungkin ditentukan dengan meluncurkan sshd.exe dengan -f parameter . Jika file tidak ada, sshd menghasilkannya dengan konfigurasi default saat layanan dimulai.

Elemen berikut menyediakan konfigurasi khusus Windows yang dimungkinkan melalui entri dalam sshd_config. Ada pengaturan konfigurasi lain yang mungkin tidak tercantum di sini, karena dibahas secara rinci dalam dokumentasi Win32 OpenSSH online.

Petunjuk / Saran

OpenSSH Server (sshd) membaca file konfigurasi saat layanan dimulai. Setiap perubahan pada file konfigurasi mengharuskan layanan dimulai ulang.

IzinkanKelompok, IzinkanPengguna, TolakKelompok, TolakPengguna

Mengontrol pengguna dan grup mana yang dapat tersambung ke server dilakukan menggunakan arahan AllowGroups, AllowUsers, DenyGroups, dan DenyUsers . Arahan izinkan/tolak diproses dalam urutan berikut: DenyUsers, AllowUsers, DenyGroups, dan akhirnya AllowGroups. Semua nama akun harus ditentukan dalam huruf kecil. Untuk informasi selengkapnya tentang POLA dan wildcard di ssh_config, lihat pada halaman manual sshd_config OpenBSD.

Saat mengonfigurasi aturan berbasis pengguna/grup dengan pengguna atau grup domain, gunakan format berikut: user?domain*. Windows memungkinkan beberapa format untuk menentukan prinsipal domain, tetapi mungkin bertentangan dengan pola Linux standar. Untuk alasan itu, * ditambahkan untuk mencakup FQDN. Selain itu, pendekatan ini menggunakan ?, alih-alih @, untuk menghindari konflik dengan format username@host.

Pengguna/grup grup kerja dan akun yang terhubung ke internet selalu diselesaikan ke nama akun lokal mereka (tidak ada bagian domain, mirip dengan nama Unix standar). Pengguna dan grup domain secara ketat diselesaikan ke format NameSamCompatible: domain_short_name\user_name. Semua aturan konfigurasi berbasis pengguna/grup perlu mematuhi format ini.

Contoh berikut menolak contoso\admin dari host 192.168.2.23, dan memblokir semua pengguna dari domain contoso. Ini juga memungkinkan pengguna yang merupakan anggota grup contoso\sshusers dan contoso\serveroperators.

DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators

Contoh berikut memungkinkan pengguna lokal untuk masuk dari host 192.168.2.23 dan memungkinkan anggota grup sshusers.

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

Metode Autentikasi

Untuk Windows OpenSSH, satu-satunya metode autentikasi yang tersedia adalah password dan publickey.

Penting

Autentikasi menggunakan akun Microsoft Entra saat ini tidak didukung.

FileKunciTerverifikasi

Defaultnya adalah .ssh/authorized_keys. Jika jalur tidak absolut, jalur tersebut diambil relatif terhadap direktori beranda pengguna (atau jalur gambar profil), misalnya, C:\Users\username. Jika pengguna termasuk dalam grup administrator, %programdata%/ssh/administrators_authorized_keys digunakan sebagai gantinya.

Petunjuk / Saran

File administrators_authorized_keys hanya boleh memiliki entri izin untuk akun NT Authority\SYSTEM dan grup keamanan BUILTIN\Administrators. Akun NT Authority\SYSTEM harus diberikan kontrol penuh. Grup keamanan BUILTIN\Administrators diperlukan bagi administrator untuk mengelola kunci yang diotorisasi, Anda dapat memilih akses yang diperlukan. Untuk memberikan izin, Anda dapat membuka prompt PowerShell yang ditingkatkan, dan menjalankan perintah icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F".

ChrootDirectory (Dukungan ditambahkan dalam v7.7.0.0)

Arahan ini hanya didukung dengan sesi sftp. Sesi jarak jauh ke cmd.exe tidak akan mematuhi ChrootDirectory. Untuk menyiapkan server chroot khusus sftp, atur ForceCommand ke internal-sftp. Anda juga dapat mengatur scp dengan kroot, dengan menerapkan shell kustom yang hanya akan memungkinkan scp dan sftp.

Autentikasi GSSAPI

Argumen GSSAPIAuthentication konfigurasi menentukan apakah autentikasi pengguna berbasis GSSAPI diizinkan. Default untuk GSSAPIAuthentication adalah tidak.

Autentikasi GSSAPI juga memerlukan penggunaan -K sakelar yang menentukan nama host saat menggunakan klien OpenSSH. Atau, Anda dapat membuat entri yang sesuai dalam konfigurasi klien SSH. Di Windows, klien OpenSSH membaca data konfigurasi dari %userprofile%.ssh\config secara default.

Anda dapat melihat contoh konfigurasi klien GSSAPI OpenSSH:

# Specify a set of configuration arguments for a host matching the pattern SERVER01.contoso.com
# Patterns are case sensitive
Host SERVER01.contoso.com
    # Enables GSSAPI authentication
    GSSAPIAuthentication yes
    # Forward (delegate) credentials to the server.
    GSSAPIDelegateCredentials yes

Penting

GSSAPI hanya tersedia mulai dari Windows Server 2022, Windows 11, dan Windows 10 xxxx.

HostKey

Defaultnya adalah:

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

Jika default tidak ada, sshd secara otomatis menghasilkannya pada awal layanan.

Pertandingan

Cocok dengan kondisi menggunakan satu atau beberapa kriteria. Setelah kecocokan, argumen konfigurasi berikutnya diterapkan. Pencocokan menggunakan aturan pola yang tercakup di bagian AllowGroups, AllowUsers, DenyGroups, DenyUsers. Nama pengguna dan grup harus dalam huruf kecil.

PermitRootLogin

Tidak berlaku di Windows. Untuk mencegah administrator masuk, gunakan Administrator dengan direktif DenyGroups .

SyslogFacility

Jika Anda memerlukan pengelogan berbasis file, gunakan LOCAL0. Log dihasilkan di bawah %programdata%\ssh\logs. Untuk nilai lain, termasuk nilai default, AUTH mengarahkan pengelogan ke ETW. Untuk informasi selengkapnya, lihat Fasilitas Pengelogan di Windows.

Argumen konfigurasi

Argumen konfigurasi berikut tersedia mulai windows Server 2022, Windows 11, dan Windows 10 xxxx:

  • Autentikasi GSSAPI

Argumen konfigurasi berikut tidak tersedia dalam versi OpenSSH yang dikirim di Windows Server dan klien Windows:

  • AcceptEnv
  • IjinkanPenerusanStreamLokal
  • AuthorizedKeysCommand
  • PenggunaPerintahKunciOtorisasi
  • PerintahPrinsipalYangDiizinkan
  • PenggunaPerintahPrinsipalTerotorisasi
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • JenisKunciDiterimaBerbasisHost
  • Autentikasi Berbasis Host
  • HostberbasisMenggunakanNamaDariPaketSaja (HostbasedUsesNameFromPacketOnly)
  • IgnoreRhosts
  • AbaikanHostYangDikenalPengguna (IgnoreUserKnownHosts)
  • Autentikasi Interaktif Kbd
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • IzinkanLingkunganPengguna
  • IzinPenggunaRC
  • PidFile
  • PrintLastLog (CetakLogTerakhir)
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation