การใช้การตั้งค่าการรับรองความถูกต้องของคีย์สาธารณะและตรวจสอบลักษณะการทํางานของ SFTP บนไคลเอนต์และเซิร์ฟเวอร์

วันที่สร้างเพจ :

สภาพแวดล้อม

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

* มันสามารถใช้ได้กับรุ่นอื่น ๆ แต่ยังไม่ได้ยืนยัน

เริ่มต้นใช้งาน

ครั้งสุดท้ายที่เราตั้งค่าเซิร์ฟเวอร์ SFTP เพื่อให้แน่ใจว่าการรับรองความถูกต้องของรหัสผ่านสามารถส่งและรับไฟล์ได้ เวลานี้เราจะใช้การรับรองความถูกต้องของคีย์สาธารณะเพื่อส่งและรับไฟล์ผ่าน SFTP

เตรียมตัวให้พร้อม

  • ไคลเอ็นต์ OpenSSH ถูกติดตั้งบนไคลเอนต์
  • เซิร์ฟเวอร์ OpenSSH ถูกติดตั้งบนเซิร์ฟเวอร์
  • เซิร์ฟเวอร์ได้เริ่มต้นบริการ OpenSSH และพอร์ต 22 ถูกนําออกใช้

สร้างคีย์ส่วนตัวและคีย์สาธารณะบนไคลเอนต์

เข้าสู่ระบบไคลเอนต์ คีย์ส่วนตัวและคีย์สาธารณะยังสามารถสร้างขึ้นโดยฝั่งเซิร์ฟเวอร์ แต่คีย์ส่วนตัวถูกสร้างขึ้นโดยลูกค้าและคีย์สาธารณะเป็นเจ้าของโดยเซิร์ฟเวอร์ สร้างบนไคลเอนต์

ใช้สิทธิ์ระดับผู้ดูแลเพื่อเริ่มต้นตัวเรือนพลังงาน

image

หลังจากสร้างไฟล์แล้วให้ใช้คําสั่ง cd เพื่อนําทางไปยังโฟลเดอร์ใด ๆ แล้วพิมพ์คําสั่งต่อไปนี้:

ssh-keygen -t rsa -f id_rsa

คีย์มีรหัสผ่าน (รหัสผ่าน) ดังนั้นให้ป้อนรหัสผ่านหากจําเป็น

image

หากการสร้างคีย์สําเร็จ ข้อมูลต่อไปนี้จะปรากฏขึ้น และสร้างคีย์สาธารณะและคีย์ส่วนตัวในโฟลเดอร์: id_rsaเป็นคีย์ส่วนตัว และ "id_rsa.pub" เป็นคีย์สาธารณะ

image

image

วางคีย์สาธารณะบนเซิร์ฟเวอร์

เข้าสู่ระบบเซิร์ฟเวอร์ด้วยบัญชี SFTP

วางคีย์สาธารณะที่สร้างขึ้น "id_rsa.pub" ในโฟลเดอร์ต่อไปนี้ของเซิร์ฟเวอร์: 「. ถ้าไม่มีโฟลเดอร์ ssh ให้สร้างโฟลเดอร์นั้น นอกจากนี้ เปลี่ยนชื่อแฟ้มเป็น authorized_keys (<>แทนที่ด้วยชื่อผู้ใช้ที่เข้าสู่ระบบด้วย SFTP)

  • C:\users\<ชื่อผู้ใช้>\.ssh

image

โปรดสังเกตว่า เฉพาะผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบหรือ SFTP เท่านั้นที่สามารถเข้าถึงแฟ้มนี้ได้ ถ้าผู้ใช้อื่นมีการเข้าถึง การเชื่อมต่อ SFTP ล้มเหลวเสมอ ตัวอย่างเช่น ถ้าสิทธิ์ประกอบด้วยกลุ่ม ผู้ใช้ หรือ ทุกคน จะเป็น NG

สําหรับตัวอย่างนี้ ให้ดูที่ สิทธิ์สําหรับโฟลเดอร์ ssh คือ กลุ่ม: SYSTEM, กลุ่ม: ผู้ดูแลระบบ และ ผู้ใช้: อิสระที่สุด ถ้าคุณไม่สามารถลบสิทธิ์ได้ ให้ปิดใช้งานการสืบทอดสิทธิ์

เปิดใช้งานการรับรองความถูกต้องของคีย์สาธารณะบนเซิร์ฟเวอร์

ผู้ใช้ที่ใช้สิทธิ์ของผู้ดูแลระบบเพื่อเข้าสู่ระบบเซิร์ฟเวอร์และเปิดโฟลเดอร์ต่อไปนี้:

  • C:\ProgramData\ssh

เนื่องจากมีไฟล์ที่เรียกว่า "sshd_config" ให้คัดลอกไฟล์เปลี่ยนชื่อไฟล์เป็น "sshd_config_default" และสํารองข้อมูล

image

เปิดsshd_configในตัวแก้ไขข้อความที่เริ่มต้นด้วยสิทธิ์ระดับผู้ดูแล

เมื่อต้องการเปิดใช้งานการรับรองความถูกต้องของคีย์สาธารณะ ให้เปลี่ยนคุณลักษณะต่อไปนี้:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

นอกจากนี้ การตรวจสอบสิทธิ์รหัสผ่านถูกเปิดใช้งานโดยค่าเริ่มต้น ดังนั้นถ้าคุณต้องการปิดใช้งานการรับรองความถูกต้องของรหัสผ่าน ให้เปลี่ยนการตั้งค่าต่อไปนี้:

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

ฉันต้องการวางคีย์สาธารณะสําหรับแต่ละบัญชี SFTP ดังนั้นโปรดแสดงความคิดเห็นในบรรทัดต่อไปนี้:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

ถ้าคุณต้องการระบุไดเรกทอรีรากสําหรับแต่ละบัญชี SFTP ให้เพิ่มบรรทัดต่อไปนี้: ถ้าคุณระบุเส้นทางโฟลเดอร์จากไคลเอนต์ คุณอาจเปลี่ยนเป็นรูปแบบ C:\xxxxxx หรือ '/xxxxxx' เมื่อคุณระบุหรือไม่ระบุเส้นทางโฟลเดอร์

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

ตัวอย่าง

Match User TestUser
       ChrootDirectory C:\Users\TestUser

หลังจากบันทึก "sshd_config" แล้ว ให้รีสตาร์ทเซิร์ฟเวอร์ OpenSSH

image

ใช้การรับรองความถูกต้องของคีย์สาธารณะเพื่อส่งและรับไฟล์จากไคลเอนต์

วางคีย์ส่วนตัว "id_rsa" ที่สร้างขึ้นก่อนการเชื่อมต่อ SFTP ในโฟลเดอร์ที่สามารถเข้าถึงได้โดยผู้ใช้ที่เรียกใช้ SFTP เท่านั้น โปรดสังเกตว่า ถ้าคุณใส่ไว้ในโฟลเดอร์ที่ผู้อื่นสามารถเข้าถึงได้ การเชื่อมต่อ SFTP จะล้มเหลว โดยเฉพาะอย่างยิ่ง ถ้าโฟลเดอร์มีสิทธิ์สําหรับกลุ่ม ผู้ใช้ และ ทุกคน จะเป็น NG

โดยทั่วไปขอแนะนําให้วางไว้ในโฟลเดอร์ต่อไปนี้เนื่องจากจะอ้างอิงเส้นทางโดยอัตโนมัติ

  • C:\users\<ชื่อผู้ใช้>\.ssh

ลูกค้า" สิทธิ์สําหรับโฟลเดอร์ ssh คือ กลุ่ม: SYSTEM, กลุ่ม: ผู้ดูแลระบบ และ ผู้ใช้: <เข้าสู่ระบบ>ของผู้ใช้"

ถ้าคุณต้องการเข้าถึงใน SFTP โดยใช้คีย์ส่วนตัว ให้ป้อนคําสั่งต่อไปนี้ (แทนที่ส่วน<>): หากคุณตั้งค่าวลีรหัสผ่าน ให้พิมพ์วลีรหัสผ่าน

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

image

เมื่อเข้าสู่ระบบเรียบร้อยแล้ว ผู้ใช้เข้าสู่ระบบจะแสดง

image

นอกจากนี้คุณยังสามารถเข้าสู่ระบบผ่านคําสั่ง dir

image

ตอนนี้คุณมีไฟล์ "test3.txt" แล้วให้ส่งไฟล์โดยใช้คําสั่ง put

put c:\temp\test3.txt

image

โดยดูที่โฟลเดอร์ "C: \ผู้ใช้ \ ฟรี" ที่ฝั่งเซิร์ฟเวอร์คุณสามารถตรวจสอบได้ว่าไฟล์.txt test3 ถูกส่งแล้ว

image

ลองรับจากไคลเอนต์

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

image

ฉันสามารถยืนยันว่าฉันได้รับไฟล์

image

สรุป

การรับรองความถูกต้องของคีย์สาธารณะช่วยให้ SFTP สามารถส่งและรับแฟ้มได้ ใช้คีย์สาธารณะเพื่อป้องกันไม่ให้ฝั่งเซิร์ฟเวอร์ทราบรหัสผ่าน การแลกเปลี่ยนไฟล์มีความปลอดภัยมากกว่าการรับรองความถูกต้องของรหัสผ่าน