Bagikan melalui


Konfigurasi OpenSSH Server untuk Windows Server dan Windows

Berlaku untuk Windows Server 2022, Windows Server 2019, Windows 10 (build 1809 dan yang lebih baru)

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 default, atau file konfigurasi yang berbeda dapat ditentukan dengan meluncurkan sshd.exe dengan -f parameter . 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 di %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 dapat 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 adalah %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 default dilakukan di registri Windows dengan menambahkan jalur lengkap ke shell yang dapat dieksekusi ke HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH dalam nilai DefaultShellstring .

Sebagai contoh, perintah PowerShell yang ditingkatkan berikut mengatur shell default menjadi powershell.exe:

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 dapat ditentukan dengan meluncurkan sshd.exe dengan -f parameter . Jika file tidak ada, sshd menghasilkannya dengan konfigurasi default saat layanan dimulai.

Elemen yang tercantum di bawah ini 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.

Tip

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

AllowGroups, AllowUsers, DenyGroups, DenyUsers

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 kartubebas di ssh_config, lihat 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 banyak yang 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 di bawah ini memungkinkan pengguna lokal untuk masuk dari host 192.168.2.23 dan memungkinkan anggota sshusers grup.

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

AuthenticationMethods

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

Penting

Autentikasi menggunakan akun Microsoft Entra saat ini tidak didukung.

AuthorizedKeysFile

Default 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.

Tip

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 menghormati 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.

GSSAPIAuthentication

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 di bawah ini.

# 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.

Cocokkan

Cocok dengan kondisi menggunakan satu atau beberapa kriteria. Setelah kecocokan, argumen konfigurasi berikutnya diterapkan. Kecocokan 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:

  • GSSAPIAuthentication

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

  • AcceptEnv
  • AllowStreamLocalForwarding
  • AuthorizedKeysCommand
  • AuthorizedKeysCommandUser
  • AuthorizedPrincipalsCommand
  • AuthorizedPrincipalsCommandUser
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • HostbasedAcceptedKeyTypes
  • HostbasedAuthentication
  • HostbasedUsesNameFromPacketOnly
  • IgnoreRhosts
  • IgnoreUserKnownHosts
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • PermitUserEnvironment
  • PermitUserRC
  • PidFile
  • PrintLastLog
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation