Menyiapkan dan memverifikasi SFTP dengan otentikasi kunci publik pada klien dan server
lingkungan
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
※ Ini bekerja dalam versi lain, tetapi belum dikonfirmasi
Pada awalnya
Terakhir kali, Anda menyiapkan server SFTP untuk memverifikasi bahwa otentikasi kata sandi memungkinkan Anda mengirim dan menerima file. Kali ini, sftp mengirim dan menerima file menggunakan otentikasi kunci publik.
Persiapan sebelumnya
- Klien memiliki klien OpenSSH yang diinstal
- Server memiliki server OpenSSH yang diinstal.
- Server memulai layanan OpenSSH dan port 22 dibebaskan.
Membuat kunci pribadi dan publik di klien
Masuk ke klien. Kunci pribadi dan publik juga dapat dibuat di sisi server, tetapi kunci pribadi adalah klien dan kunci publik akan dipegang oleh server. Buat di sisi klien.
Mulai PowerShell dengan hak administrator.
Buat file, buka folder apa pun dengan perintah cd, dan ketik perintah berikut:
ssh-keygen -t rsa -f id_rsa
Anda dapat meletakkan passphrase (kata sandi) di kunci, jadi tolong letakkan jika perlu.
Jika kunci berhasil dihasilkan, kunci publik dan pribadi dibuat dalam folder sebagai berikut: "id_rsa" adalah kunci pribadi dan "id_rsa.pub" adalah kunci publik.
Menempatkan kunci publik di server
Masuk ke Windows dengan akun SFTP Anda untuk server.
Silakan tempatkan kunci publik yang dibuat "id_rsa.pub" di folder berikut di server. 「. Jika Anda tidak memiliki folder "ssh", silakan buat satu. Juga, ubah nama file menjadi "authorized_keys". (Ganti <> dengan nama pengguna yang Anda masuki dengan SFTP.)
- C:\Pengguna\< nama pengguna>\.ssh
Perhatikan bahwa hanya pengguna dengan "administrator" atau pengguna SFTP yang harus memiliki akses ke file ini. Koneksi Sftp selalu gagal jika pengguna lain memiliki akses. Misalnya, NG memiliki sekelompok Pengguna atau Semua Orang yang ditambahkan ke izin.
Dalam contoh ini, ". Hak akses dari folder "ssh" adalah "Group:SYSTEM", "Group: Administrators", dan "User: sftptest". Jika Anda tidak dapat menghapus izin, nonaktifkan warisan izin.
Mengaktifkan autentikasi kunci publik di server
Masuk ke server dengan administrator mengizinkan pengguna, lalu buka folder berikut:
- C:\ProgramData\ssh
Karena ada file yang disebut "sshd_config", salin dan ubah nama file menjadi "sshd_config_default" dan siapkan cadangan.
Buka "sshd_config" di editor teks yang diluncurkan dengan hak istimewa administrator.
Untuk mengaktifkan autentikasi kunci publik, ubah sebagai berikut:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Selain itu, autentikasi kata sandi diaktifkan secara default, jadi jika Anda ingin menonaktifkannya, ubah sebagai berikut.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Saya ingin menempatkan kunci publik untuk setiap akun SFTP, jadi saya akan berkomentar baris berikut:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Jika Anda ingin menentukan direktori root untuk setiap akun SFTP, tambahkan baris berikut: Tergantung pada apakah Anda menentukan ini atau tidak, ketika Anda menentukan jalur folder dari klien, itu dapat berubah menjadi format "C:\xxxxx" atau "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
contoh
Match User TestUser
ChrootDirectory C:\Users\TestUser
Setelah Anda menyimpan sshd_config, mulai ulang server OpenSSH.
Mengirim dan menerima file dari klien dengan otentikasi kunci publik
Tempatkan kunci pribadi "id_rsa" yang Anda buat sebelum terhubung dengan SFTP dalam folder yang hanya dapat diakses oleh pengguna yang menjalankan SFTP. Perhatikan bahwa koneksi sftp akan gagal jika ditempatkan dalam folder yang dapat diakses oleh pengguna lain. Terutama jika folder memiliki izin untuk grup Pengguna dan Semua Orang, itu adalah NG.
Pada dasarnya, disarankan karena akan secara otomatis merujuk ke jalur jika Anda memasukkannya ke dalam folder berikut.
- C:\Pengguna\< nama pengguna>\.ssh
Klien". Hak akses dari folder "ssh" adalah "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Jika Anda ingin mengakses sftp menggunakan kunci privat, ketik perintah sebagai berikut (ganti <>): Jika Anda telah membuat passphrase, masukkan passphrase juga.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Jika Anda masuk dengan sukses, Anda akan beralih ke tampilan pengguna yang masuk.
Anda juga dapat memeriksa apakah Anda dapat masuk dengan perintah dir.
Sekarang setelah Anda menyiapkan file yang disebut "test3.txt", kirim file dengan perintah put.
put c:\temp\test3.txt
Jika Anda melihat folder C:\Users'sftptest sisi server, Anda dapat melihat bahwa file test3.txt sedang dikirim.
Cobalah mendapatkan dari klien.
get test3.txt c:\temp\test4.txt
Saya dapat mengkonfirmasi bahwa file tersebut dapat diperoleh.
Ringkasan
Anda dapat mengirim dan menerima file oleh SFTP menggunakan otentikasi kunci publik. Dengan menggunakan kunci publik, sisi server tidak akan dapat mengetahui kata sandi. Ini memungkinkan Anda untuk bertukar file lebih aman daripada otentikasi kata sandi.