Menyediakan dan mengesahkan SFTP dengan pengesahan kunci awam pada klien dan pelayan

Tarikh penciptaan halaman :

Persekitaran

Windows
  • Windows 10 Pro
  • Windows Server 2019
  • Windows 7
  • Windows Server 2012 R2
OpenSSH
  • 7.7p1
  • 8.1p1 - Beta

※ Ia berfungsi dalam versi lain, tetapi ia tidak disahkan

Pada mulanya

Kali terakhir, anda menyediakan pelayan SFTP untuk mengesahkan bahawa pengesahan kata laluan membolehkan anda menghantar dan menerima fail. Kali ini, sftp menghantar dan menerima fail menggunakan pengesahan kekunci awam.

Persediaan terlebih dahulu

  • Pelanggan mempunyai klien OpenSSH yang dipasang
  • Pelayan mempunyai pelayan OpenSSH yang dipasang.
  • Pelayan memulakan perkhidmatan OpenSSH dan port 22 dibekukan.

Mencipta kunci peribadi dan awam dalam klien

Log masuk ke klien. Kunci peribadi dan awam juga boleh dicipta di sebelah pelayan, tetapi kunci peribadi akan menjadi pelanggan dan kunci awam akan dipegang oleh pelayan. Cipta di sebelah klien.

Mulakan PowerShell dengan hak pentadbir.

image

Cipta fail, pergi ke mana-mana folder dengan perintah cd, dan taipkan perintah berikut:

ssh-keygen -t rsa -f id_rsa

Anda boleh meletakkan frasa laluan (kata laluan) di kekunci, jadi sila letakkan jika perlu.

image

Jika kunci berjaya dijana, kunci awam dan persendirian akan dicipta dalam folder seperti berikut: "id_rsa" adalah kunci peribadi dan "id_rsa.pub" adalah kunci umum.

image

image

Letakkan kunci awam pada pelayan

Log masuk ke Windows dengan akaun SFTP anda untuk pelayan.

Sila letakkan kekunci awam yang dicipta "id_rsa.pub" dalam folder berikut pada pelayan. 「. jika anda tidak mempunyai folder "ssh", sila ciptanya. Juga, tukar nama fail kepada "authorized_keys". (Gantikan <> dengan nama pengguna yang anda log masuk dengan SFTP.)

  • C:\Pengguna\< nama pengguna>\.ssh

image

Ambil perhatian bahawa hanya pengguna "pentadbir" atau pengguna SFTP sahaja yang mempunyai capaian ke fail ini. Sambungan sftp sentiasa gagal jika pengguna lain mempunyai capaian. Contohnya, NG mempunyai sekumpulan Pengguna atau Semua Orang yang ditambahkan pada keizinan.

Dalam contoh ini, ". Hak akses bagi folder "ssh" adalah "Kumpulan:SYSTEM", "Kumpulan: Pentadbir", dan "Pengguna: ssh". Jika anda tidak dapat mengalih keluar keizinan, nyahdayakan warisan keizinan.

Mendayakan pengesahan kekunci awam pada pelayan

Log masuk ke pelayan dengan pengguna keizinan pentadbir, kemudian buka folder berikut:

  • C:\ProgramData\ssh

Oleh kerana terdapat fail yang dipanggil "sshd_config", salin dan ubah nama fail kepada "sshd_config_default" dan sediakan sandaran.

image

Buka "sshd_config" dalam editor teks yang dilancarkan dengan keistimewaan pentadbir.

Untuk mendayakan pengesahan kunci awam, ubahnya seperti berikut:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

Juga, pengesahan kata laluan didayakan secara lalai, jadi jika anda ingin menyahdayakannya, ubahnya seperti berikut.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Saya ingin meletakkan kunci awam untuk setiap akaun SFTP, jadi saya akan mengulas 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 akar bagi setiap akaun SFTP, tambah baris berikut: Bergantung kepada sama ada anda menentukan ini atau tidak, apabila anda menentukan laluan folder dari pelanggan, ia boleh berubah kepada format "C:\xxxxx" atau "/xxxxx".

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

Sebagai contoh

Match User TestUser
       ChrootDirectory C:\Users\TestUser

Selepas anda menyimpan sshd_config, mulakan semula pelayan OpenSSH.

image

Hantar dan terima fail daripada klien dengan pengesahan kunci awam

Letakkan kunci peribadi "id_rsa" yang anda cipta sebelum bersambung dengan SFTP dalam folder yang hanya boleh diakses oleh pengguna yang menjalankan SFTP. Sila ambil perhatian bahawa sambungan sftp akan gagal jika diletakkan dalam folder yang boleh dicapai oleh pengguna lain. Terutamanya jika folder mempunyai keizinan untuk kumpulan Pengguna dan Semua Orang, ia adalah NG.

Pada asasnya, adalah disyorkan kerana ia akan merujuk laluan secara automatik jika anda memasukkannya ke dalam folder berikut.

  • C:\Pengguna\< nama pengguna>\.ssh

Pelanggan ". Hak akses bagi folder "ssh" adalah "Kumpulan:SYSTEM", "Kumpulan: Pentadbir", "Pengguna: < Login pengguna >".

Jika anda ingin mencapai rakit menggunakan kunci peribadi, taipkan perintah seperti berikut (gantikan <>): Jika anda telah menyediakan frasa laluan, masukkan frasa laluan juga.

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

Jika anda log masuk dengan jayanya, anda akan ditukar ke paparan pengguna yang log masuk.

image

Anda juga boleh menyemak bahawa anda boleh log masuk dengan perintah dir.

image

Sekarang anda telah menyediakan fail yang dipanggil "test3.txt", hantar fail dengan perintah letak.

put c:\temp\test3.txt

image

Jika anda melihat folder C:\Users\sftptest, anda boleh melihat bahawa fail test3.txt sedang dihantar.

image

Cuba dapatkan dari pelanggan.

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

image

Saya dapat mengesahkan bahawa fail itu dapat diperolehi.

image

Ringkasan

Anda dapat menghantar dan menerima fail oleh SFTP menggunakan pengesahan kekunci awam. Dengan menggunakan kekunci awam, bahagian pelayan tidak akan dapat mengetahui kata laluan. Ia membolehkan anda bertukar-tukar fail dengan lebih selamat daripada pengesahan kata laluan.