Mengkonfigurasi otentikasi kunci SSH di Windows 10/2019

Pada artikel ini, kami akan mengonfigurasi otentikasi SSH di Windows menggunakan kunci RSA untuk akses aman ke sistem jarak jauh. Kami akan menunjukkan cara membuat kunci RSA (sertifikat) di Windows dan mengkonfigurasi server OpenSSH di Windows 10 / Windows Server 2019 untuk otorisasi dengan kunci (tanpa kata sandi).

Otentikasi oleh kunci SSH banyak digunakan di dunia Linux, dan pada Windows fungsi ini muncul relatif baru-baru ini. Idenya adalah bahwa kunci publik klien ditambahkan ke server SSH dan, ketika terhubung, server memeriksa kunci pribadi yang sesuai untuk klien.

Konten:

  • Menghasilkan kunci RSA pada klien Windows
  • Mengkonfigurasi OpenSSH pada Windows untuk Otorisasi Utama
  • Login kunci SSH untuk administrator Windows lokal

Menghasilkan kunci RSA pada klien Windows

Pada komputer klien dari mana Anda akan terhubung ke server Windows jarak jauh dengan OpenSSH, Anda perlu membuat sepasang kunci RSA (publik dan pribadi). Kunci pribadi disimpan pada klien (jangan berikan kepada siapa pun!), Dan kunci publik ditempatkan pada server SSH dalam file kunci yang diizinkan. Untuk menghasilkan kunci RSA pada klien Windows, Anda harus menginstal klien OpenSSH.

Pada Windows 10 1809 dan Windows Server 2019, klien OpenSSH diinstal sebagai komponen bawaan yang terpisah:

Add-WindowsCapability -Online -Name OpenSSH.Client ~~~~ 0.0.1.0

Di versi Windows sebelumnya, Anda dapat menginstal port Win32-OpenSSH dengan GitHub (lihat contoh di artikel tentang mengonfigurasi server SFTP di Windows).

Mulai sesi reguler (sesi PowerShell yang tidak diprivat) dan buat sepasang kunci RSA 2048 dengan perintah:

ssh-keygen

Utilitas akan meminta Anda menentukan kata sandi untuk melindungi kunci pribadi. Jika Anda menentukan kata sandi, maka setiap kali Anda menggunakan kunci ini untuk otorisasi SSH, Anda harus memasukkan kata sandi ini. Saya tidak menentukan kata sandi untuk kunci (tidak disarankan).

Utilitas ssh-keygen akan membuat direktori .ssh di profil pengguna Windows saat ini (C: \ Users \ your_username) dan masukkan 2 file di dalamnya:

  • id_rsa - kunci pribadi
  • id_rsa.pub - kunci publik

Setelah kunci dibuat, Anda dapat menambahkan kunci pribadi ke layanan Agen SSH, yang memungkinkan Anda mengelola kunci pribadi dengan mudah dan menggunakannya untuk otentikasi.

Agen SSH dapat menyimpan kunci pribadi dan menyediakannya dalam konteks keamanan pengguna saat ini. Mulai layanan ssh-agent dan konfigurasikan AutoShell untuk memulai perintah kontrol layanan menggunakan PowerShell:

set-service ssh-agent StartupType 'Otomatis'
Mulai-Layanan ssh-agent

Tambahkan kunci pribadi Anda ke basis data ssh-agent:

ssh-tambahkan "C: \ Users \ youruser \ .ssh \ id_rsa"

Atau lebih:

ssh-add.exe $ ENV: UserProfile \ .ssh \ id_rsa

Mengkonfigurasi OpenSSH pada Windows untuk Otorisasi Utama

Sekarang kunci publik yang Anda hasilkan pada klien perlu disalin ke server SSH Anda (dalam contoh ini, ini adalah komputer jarak jauh dengan Windows 10 1903 dan layanan OpenSSH yang dikonfigurasi).

Kami telah memeriksa secara detail konfigurasi server OpenSSH di Windows.

Salin file id_rsa.pub ke katalog .ssh profil pengguna di mana Anda akan terhubung ke server SSH. Misalnya, saya memiliki pengguna yang dibuat di Windows 10 admin, maka saya harus menyalin kunci ke file C: \ Users \ admin \ .ssh \ otor_keys.

Anda dapat menyalin kunci ke server SSH dari klien menggunakan SCP:

scp C: \ Users \ youruser \ .ssh \ id_rsa.pub [email protected]: c: \ users \ admin \ .ssh \ berwenang_keys

Sekarang Anda dapat terhubung ke server SSH tanpa memasukkan kata sandi pengguna. Dan jika Anda belum menetapkan kata sandi (frasa sandi) untuk kunci pribadi, Anda akan segera terhubung secara otomatis ke server Windows jarak jauh Anda.

Untuk terhubung melalui SSH ke host jarak jauh, gunakan perintah berikut:

ssh (nama pengguna) @ (nama atau alamat IP server SSH)

Sebagai contoh,

ssh [email protected]

Ini berarti bahwa Anda ingin terhubung ke server SSH jarak jauh dengan alamat tersebut 192.168.1.90 dalam akun admin. Layanan Agen SSH akan secara otomatis mencoba menggunakan kunci pribadi yang disimpan sebelumnya untuk otorisasi.

Jika Anda tidak ingin menggunakan ssh-agent untuk manajemen kunci, Anda bisa menentukan path ke kunci pribadi yang ingin Anda gunakan untuk otentikasi SSH:

ssh [email protected] -i "C: \ Users \ youruser \ .ssh \ id_rsa"

Jika Anda tidak dapat terhubung ke server SSH Anda menggunakan kunci RSA, dan Anda masih dimintai kata sandi, kemungkinan besar pengguna yang Anda hubungi adalah anggota grup administrator server lokal (SID dari grup S-1-5-32-544). Tentang ini lebih lanjut.

Login kunci SSH untuk administrator Windows lokal

OpenSSH menggunakan pengaturan akses kunci khusus untuk pengguna dengan hak administrator Windows lokal.

Pertama-tama, alih-alih kunci otor_keys di profil pengguna, Anda harus menggunakan file dengan kunci C: \ ProgramData \ ssh \administrators_authorized_keys. Anda perlu menambahkan kunci Anda ke file teks ini (untuk alasan keamanan, hanya Administrator dan SISTEM yang berhak atas file ini).

Untuk menggunakan kunci Authorized_key dari profil pengguna dan tidak mentransfer data kunci publik ke file Administrators_authorized_keys, Anda dapat mengomentari baris dalam file konfigurasi OpenSSH ("C: \ ProgramData \ ssh \sshd_config").

Berikan komentar:

#Match Administrator grup # AuthorizedKeysFile __PROGRAMDATA __ / ssh / Administrators_authorized_keys

Selain itu, dalam file sshd_config, Anda dapat mengaktifkan login menggunakan kunci RSA:

PubkeyAuthentication ya

Dan tolak akses dengan kata sandi:

PasswordAuthentication no

Setelah menyimpan perubahan pada file sshd_config, ingatlah untuk memulai kembali layanan sshd.

mulai ulang layanan sshd

Nuansa kecil lainnya. Dalam versi OpenSSH yang lebih lama, Anda harus memberi NT Service hak untuk membaca berwenang_kunci.

Untuk melakukan ini, lakukan salah satu dari yang berikut:

  • Pasang modul Opensshutils: Instal-Modul -Paksa OpenSSHUtils -Scope AllUsers . Untuk mengubah izin pada file, jalankan perintah: Perbaikan-AuthorizedKeyPermission -FilePath C: \ Users \ admin \ .ssh \ authorized_keys ;
  • Ubah izin file NTFS menggunakan modul NTFSSecurity atau icacls;
  • Atau Anda dapat menonaktifkan mode di file konfigurasi sshd_config StrictModes. Secara default, mode ini diaktifkan dan melarang otentikasi kunci jika kunci pribadi dan publik tidak cukup dilindungi. Batalkan komentar pada garis #StrictModes ya, ubah ke StrictModes no .

Jadi, Anda telah mengonfigurasi otentikasi SSH di Windows menggunakan kunci publik RSA (sertifikat). Sekarang Anda dapat menggunakan metode otentikasi ini untuk akses aman ke server jauh, secara otomatis meningkatkan penerusan port di terowongan SSH, menjalankan skrip dan tugas otomatisasi lainnya.