การใช้การตั้งค่าการรับรองความถูกต้องของคีย์สาธารณะและตรวจสอบลักษณะการทํางานของ 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 ถูกนําออกใช้
สร้างคีย์ส่วนตัวและคีย์สาธารณะบนไคลเอนต์
เข้าสู่ระบบไคลเอนต์ คีย์ส่วนตัวและคีย์สาธารณะยังสามารถสร้างขึ้นโดยฝั่งเซิร์ฟเวอร์ แต่คีย์ส่วนตัวถูกสร้างขึ้นโดยลูกค้าและคีย์สาธารณะเป็นเจ้าของโดยเซิร์ฟเวอร์ สร้างบนไคลเอนต์
ใช้สิทธิ์ระดับผู้ดูแลเพื่อเริ่มต้นตัวเรือนพลังงาน
หลังจากสร้างไฟล์แล้วให้ใช้คําสั่ง cd เพื่อนําทางไปยังโฟลเดอร์ใด ๆ แล้วพิมพ์คําสั่งต่อไปนี้:
ssh-keygen -t rsa -f id_rsa
คีย์มีรหัสผ่าน (รหัสผ่าน) ดังนั้นให้ป้อนรหัสผ่านหากจําเป็น
หากการสร้างคีย์สําเร็จ ข้อมูลต่อไปนี้จะปรากฏขึ้น และสร้างคีย์สาธารณะและคีย์ส่วนตัวในโฟลเดอร์: id_rsaเป็นคีย์ส่วนตัว และ "id_rsa.pub" เป็นคีย์สาธารณะ
วางคีย์สาธารณะบนเซิร์ฟเวอร์
เข้าสู่ระบบเซิร์ฟเวอร์ด้วยบัญชี SFTP
วางคีย์สาธารณะที่สร้างขึ้น "id_rsa.pub" ในโฟลเดอร์ต่อไปนี้ของเซิร์ฟเวอร์: 「. ถ้าไม่มีโฟลเดอร์ ssh ให้สร้างโฟลเดอร์นั้น นอกจากนี้ เปลี่ยนชื่อแฟ้มเป็น authorized_keys (<>แทนที่ด้วยชื่อผู้ใช้ที่เข้าสู่ระบบด้วย SFTP)
- C:\users\<ชื่อผู้ใช้>\.ssh
โปรดสังเกตว่า เฉพาะผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบหรือ SFTP เท่านั้นที่สามารถเข้าถึงแฟ้มนี้ได้ ถ้าผู้ใช้อื่นมีการเข้าถึง การเชื่อมต่อ SFTP ล้มเหลวเสมอ ตัวอย่างเช่น ถ้าสิทธิ์ประกอบด้วยกลุ่ม ผู้ใช้ หรือ ทุกคน จะเป็น NG
สําหรับตัวอย่างนี้ ให้ดูที่ สิทธิ์สําหรับโฟลเดอร์ ssh คือ กลุ่ม: SYSTEM, กลุ่ม: ผู้ดูแลระบบ และ ผู้ใช้: อิสระที่สุด ถ้าคุณไม่สามารถลบสิทธิ์ได้ ให้ปิดใช้งานการสืบทอดสิทธิ์
เปิดใช้งานการรับรองความถูกต้องของคีย์สาธารณะบนเซิร์ฟเวอร์
ผู้ใช้ที่ใช้สิทธิ์ของผู้ดูแลระบบเพื่อเข้าสู่ระบบเซิร์ฟเวอร์และเปิดโฟลเดอร์ต่อไปนี้:
- C:\ProgramData\ssh
เนื่องจากมีไฟล์ที่เรียกว่า "sshd_config" ให้คัดลอกไฟล์เปลี่ยนชื่อไฟล์เป็น "sshd_config_default" และสํารองข้อมูล
เปิด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
ใช้การรับรองความถูกต้องของคีย์สาธารณะเพื่อส่งและรับไฟล์จากไคลเอนต์
วางคีย์ส่วนตัว "id_rsa" ที่สร้างขึ้นก่อนการเชื่อมต่อ SFTP ในโฟลเดอร์ที่สามารถเข้าถึงได้โดยผู้ใช้ที่เรียกใช้ SFTP เท่านั้น โปรดสังเกตว่า ถ้าคุณใส่ไว้ในโฟลเดอร์ที่ผู้อื่นสามารถเข้าถึงได้ การเชื่อมต่อ SFTP จะล้มเหลว โดยเฉพาะอย่างยิ่ง ถ้าโฟลเดอร์มีสิทธิ์สําหรับกลุ่ม ผู้ใช้ และ ทุกคน จะเป็น NG
โดยทั่วไปขอแนะนําให้วางไว้ในโฟลเดอร์ต่อไปนี้เนื่องจากจะอ้างอิงเส้นทางโดยอัตโนมัติ
- C:\users\<ชื่อผู้ใช้>\.ssh
ลูกค้า" สิทธิ์สําหรับโฟลเดอร์ ssh คือ กลุ่ม: SYSTEM, กลุ่ม: ผู้ดูแลระบบ และ ผู้ใช้: <เข้าสู่ระบบ>ของผู้ใช้"
ถ้าคุณต้องการเข้าถึงใน SFTP โดยใช้คีย์ส่วนตัว ให้ป้อนคําสั่งต่อไปนี้ (แทนที่ส่วน<>): หากคุณตั้งค่าวลีรหัสผ่าน ให้พิมพ์วลีรหัสผ่าน
sftp -i id_rsa <ユーザー名>@<サーバー名>
เมื่อเข้าสู่ระบบเรียบร้อยแล้ว ผู้ใช้เข้าสู่ระบบจะแสดง
นอกจากนี้คุณยังสามารถเข้าสู่ระบบผ่านคําสั่ง dir
ตอนนี้คุณมีไฟล์ "test3.txt" แล้วให้ส่งไฟล์โดยใช้คําสั่ง put
put c:\temp\test3.txt
โดยดูที่โฟลเดอร์ "C: \ผู้ใช้ \ ฟรี" ที่ฝั่งเซิร์ฟเวอร์คุณสามารถตรวจสอบได้ว่าไฟล์.txt test3 ถูกส่งแล้ว
ลองรับจากไคลเอนต์
get test3.txt c:\temp\test4.txt
ฉันสามารถยืนยันว่าฉันได้รับไฟล์
สรุป
การรับรองความถูกต้องของคีย์สาธารณะช่วยให้ SFTP สามารถส่งและรับแฟ้มได้ ใช้คีย์สาธารณะเพื่อป้องกันไม่ให้ฝั่งเซิร์ฟเวอร์ทราบรหัสผ่าน การแลกเปลี่ยนไฟล์มีความปลอดภัยมากกว่าการรับรองความถูกต้องของรหัสผ่าน