Menyiapkan dan memverifikasi SFTP dengan otentikasi kunci publik pada klien dan server

Tanggal pembuatan halaman :

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.

image

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.

image

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.

image

image

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

image

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.

image

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.

image

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 <ユーザー名>@<サーバー名>

image

Jika Anda masuk dengan sukses, Anda akan beralih ke tampilan pengguna yang masuk.

image

Anda juga dapat memeriksa apakah Anda dapat masuk dengan perintah dir.

image

Sekarang setelah Anda menyiapkan file yang disebut "test3.txt", kirim file dengan perintah put.

put c:\temp\test3.txt

image

Jika Anda melihat folder C:\Users'sftptest sisi server, Anda dapat melihat bahwa file test3.txt sedang dikirim.

image

Cobalah mendapatkan dari klien.

get test3.txt c:\temp\test4.txt

image

Saya dapat mengkonfirmasi bahwa file tersebut dapat diperoleh.

image

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.