Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH

คุณสามารถใช้แพ็คเกจ OpenSSH อย่างเป็นทางการสำหรับ Windows เพื่อจัดระเบียบการถ่ายโอนไฟล์ที่ปลอดภัยระหว่างไคลเอนต์และเซิร์ฟเวอร์ Windows ได้อย่างง่ายดายโดยใช้ SFTP ( FTP ที่ปลอดภัย ) มาตรการ. ในบทความนี้ เราจะแสดงวิธีใช้ Win32-OpenSSH เพื่อเรียกใช้เซิร์ฟเวอร์ SFTP บน Windows 10 หรือ Windows Server 2016/2012 R2

สารบัญ:

  • SFTP คืออะไร
  • การใช้งาน SFTP ใน Windows
  • การติดตั้ง Win32 OpenSSH บน Windows 10 1803+/Windows Server 2019
  • ติดตั้ง Win32 OpenSSH บน Windows Server 2016/2012 R2
  • ทดสอบการเชื่อมต่อ SFTP โดยใช้ WinSCP
  • จะถอนการติดตั้ง Win32 OpenSSH ได้อย่างไร

SFTP คืออะไร

SFTP (ปลอดภัย โปรโตคอลการถ่ายโอนไฟล์ , FTP ที่ปลอดภัย หรือ SSH FTP ) เป็นส่วนขยายของโปรโตคอล SSH ซึ่งเป็นมาตรฐานในโลกของระบบ UNIX/Linux จากมุมมองของผู้ใช้ มันคล้ายกับ FTP แต่ในความเป็นจริง มันเป็นโปรโตคอลที่แตกต่างไปจากเดิมอย่างสิ้นเชิง โดยไม่มีอะไรเหมือนกับ FTP ข้อมูลจะถูกถ่ายโอนระหว่างไคลเอนต์และเซิร์ฟเวอร์ผ่านช่องสัญญาณ SSH (พอร์ต TCP 22)

ข้อดีหลักของ SFTP:

  1. ไฟล์และคำสั่งจะถูกโอนภายในเซสชัน SSH ที่ปลอดภัย
  2. ใช้การเชื่อมต่อเพียงครั้งเดียวเพื่อส่งทั้งไฟล์และคำสั่ง
  3. รองรับลิงก์สัญลักษณ์ ขัดจังหวะ/ถ่ายโอนต่อ ฟังก์ชันการลบไฟล์ ฯลฯ
  4. ตามกฎแล้ว ในแชนเนลที่ FTP ช้าหรือล้มเหลว การเชื่อมต่อ SFTP จะเร็วกว่าและเชื่อถือได้มากกว่า
  5. ความเป็นไปได้ในการตรวจสอบสิทธิ์โดยใช้คีย์ SSH
อย่าสับสนระหว่างโปรโตคอล SFTP และ FTPS โดยพื้นฐานแล้ว FTPS เป็นเพียง FTP ธรรมดาที่มีใบรับรอง SSL และ SFTP เป็นโปรโตคอลในการส่งข้อมูล FTP และคำสั่งภายในเซสชัน SSH

การใช้งาน SFTP ใน Windows

ในอดีต ระบบปฏิบัติการ Windows ไม่มีเครื่องมือในตัวเพื่อเรียกใช้เซิร์ฟเวอร์ SFTP ที่ปลอดภัย สำหรับวัตถุประสงค์เหล่านี้ มีการใช้โอเพ่นซอร์สหรือโซลูชันที่เป็นกรรมสิทธิ์ เช่น Core FTP, FileZilla, CYGWIN, OpenSSH, FTP Shell, IPSwitch เป็นต้น อย่างไรก็ตาม เมื่อหลายปีก่อน Microsoft ได้เปิดตัวเวอร์ชันของพอร์ต OpenSSH สำหรับ Win32 โครงการนี้เรียกว่า Win32-OpenSSH .

ลองพิจารณาการกำหนดค่าของเซิร์ฟเวอร์ SFTP ที่ใช้ Windows 10 หรือ Windows Server 2019/2016/2012 R2 โดยใช้ Win32 OpenSSH บรรจุุภัณฑ์.

การติดตั้ง Win32 OpenSSH บน Windows 10 1803+/Windows Server 2019

ใน Windows 10 รุ่น 1803 และใหม่กว่า และใน Windows Server 2019 แพ็คเกจ OpenSSH นั้นรวมอยู่ในระบบปฏิบัติการแล้วในรูปแบบของฟีเจอร์ตามคำสั่ง (FoD) เช่น RSAT

คุณสามารถติดตั้งเซิร์ฟเวอร์ OpenSSH บน Windows 10 และ Windows Server 2019 โดยใช้ PowerShell cmdlet ต่อไปนี้:

Add-WindowsCapability -Online -Name OpenSSH.Server*

หรือใช้ DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

นอกจากนี้ คุณสามารถเพิ่มเซิร์ฟเวอร์ OpenSSH จาก Windows 10 GUI (การตั้งค่า -> แอป -> คุณสมบัติเสริม -> เพิ่มคุณสมบัติ -> เปิดเซิร์ฟเวอร์ SSH -> ติดตั้ง )

การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH

  • ไฟล์เรียกทำงาน OpenSSH จะอยู่ในไดเร็กทอรี:c:\windows\system32\OpenSSH\;
  • sshd_config ไฟล์การกำหนดค่าจะอยู่ในไดเร็กทอรี:C:\ProgramData\ssh (ไดเร็กทอรีนี้ถูกสร้างขึ้นหลังจากการเริ่มบริการ sshd ครั้งแรก);
  • ไฟล์บันทึก:c:\windows\system32\OpenSSH\logs\sshd.log;
  • ไฟล์ Author_keys และคีย์ถูกจัดเก็บไว้ในไดเร็กทอรี:%USERPROFILE%\.ssh\ .

ตอนนี้คุณสามารถเชื่อมต่อกับ Windows 10 ผ่าน SSH เช่นเดียวกับใน Linux

ติดตั้ง Win32 OpenSSH บน Windows Server 2016/2012 R2

ใน Windows 10 เวอร์ชันก่อนหน้าและใน Windows Server 2016/2012 R2 คุณต้องดาวน์โหลดและติดตั้ง OpenSSH จาก GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases) คุณต้องดาวน์โหลดเวอร์ชันแพ็คเกจสำหรับ Windows x64:OpenSSH-Win64.zip (3.5 MB)

  1. แตกไฟล์เก็บถาวรไปยังไดเร็กทอรีเป้าหมาย:C:\OpenSSH-Win;
  2. เริ่ม PowerShell cli ที่ยกระดับแล้วสลับไปที่โฟลเดอร์ OpenSSH:Cd C:\OpenSSH-Win
  3. เพิ่มพาธไปยังไดเร็กทอรี OpenSSH ไปยังตัวแปรสภาพแวดล้อมพาธ (คุณสมบัติของระบบ -> แท็บขั้นสูง -> ตัวแปรสภาพแวดล้อม -> เลือกและแก้ไข เส้นทาง ตัวแปรระบบ -> เพิ่มเส้นทางไปยังโฟลเดอร์ OpenSSH); การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH
  4. ติดตั้งเซิร์ฟเวอร์ OpenSSH:.\install-sshd.ps1 (ข้อความสีเขียวควรปรากฏว่า “sshd และ ssh-agent services ติดตั้งสำเร็จแล้ว ”); การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH
  5. สร้างคีย์ SSH สำหรับเซิร์ฟเวอร์ (จำเป็นต้องเริ่มบริการ sshd):
    ssh-keygen.exe –A ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH
  6. เปิดใช้งานการเริ่มต้นอัตโนมัติสำหรับบริการ SSHD และเริ่มต้นโดยใช้คำสั่งการจัดการบริการ PowerShell ต่อไปนี้:
    Set-Service -Name sshd -StartupType ‘Automatic’
    Start-Service sshd
  7. รีสตาร์ทคอมพิวเตอร์:
    Restart-Computer
  8. ใช้ PowerShell เพื่อเปิดพอร์ต TCP 22 ในไฟร์วอลล์ Windows สำหรับการรับส่งข้อมูล SSH ขาเข้า: New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH หมายเหตุ . คำสั่งก่อนหน้านี้ใช้ไม่ได้กับ Windows เวอร์ชันเดสก์ท็อปรุ่นเก่า ในกรณีนี้ มีการใช้คำสั่งอื่น: netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22
  9. เปิดไฟล์การกำหนดค่า SSHD (C:\ProgramData\SSH\sshd_config) ในตัวแก้ไขข้อความใดๆ ค้นหาและตรวจสอบค่าของ ระบบย่อย sftp คำสั่ง sftp-server.exe ควรระบุไฟล์ที่นี่ การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH
คุณสามารถกำหนดค่าพารามิเตอร์ต่อไปนี้เพิ่มเติมในไฟล์การกำหนดค่า sshd_config:

AllowGroups corp\sftp_users # อนุญาตให้เชื่อมต่อกับ OpenSSH สำหรับผู้ใช้ในกลุ่มโดเมนนี้เท่านั้น

AuthenticationMethods password # เปิดใช้งานการตรวจสอบรหัสผ่าน (ไม่สามารถใช้คีย์ SSH)
ForceCommand internal-sftp
ChrootDirectory C:\inetpub\wwwroot\ftpfolder # ไดเร็กทอรีเริ่มต้นสำหรับผู้ใช้ SFTP

กำลังทดสอบการเชื่อมต่อ SFTP โดยใช้ WinSCP

มาลองเชื่อมต่อกับเซิร์ฟเวอร์ SSH ที่สร้างขึ้นโดยใช้โปรโตคอล SFTP ในการดำเนินการ ใช้ WinSCP . ฟรี ลูกค้า

ในหน้าต่างการกำหนดค่าการเชื่อมต่อ เลือก SFTP เป็นโปรโตคอลการถ่ายโอนไฟล์ ให้ระบุชื่อเซิร์ฟเวอร์และข้อมูลประจำตัวของบัญชี Windows ซึ่งใช้สำหรับการเชื่อมต่อ (สามารถกำหนดค่าการรับรองความถูกต้องของคีย์ได้ด้วย)

การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH

เมื่อคุณพยายามเชื่อมต่อเป็นครั้งแรก การแจ้งเตือนต่อไปนี้ของโฮสต์คีย์ที่ไม่พบในแคชในเครื่องจะปรากฏขึ้น

การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH

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

การใช้อินเทอร์เฟซตัวจัดการไฟล์ที่คุ้นเคย (เช่น Total Commander ) คุณสามารถคัดลอกไฟล์ระหว่างเซิร์ฟเวอร์และไคลเอนต์ ไฟล์ถูกโอนโดยใช้ SFTP ที่ปลอดภัย

การติดตั้งเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows ด้วย OpenSSH

จะถอนการติดตั้ง Win32 OpenSSH ได้อย่างไร

วิธีถอนการติดตั้ง Win32 OpenSSH จากระบบของคุณอย่างถูกต้อง:

  1. เรียกใช้เซสชัน PowerShell ที่ยกระดับ
  2. หยุดบริการ SSHD:
    Stop-Service sshd
  3. ถอนการติดตั้งบริการ sshd:.\uninstall-sshlsa.ps1
    sshd successfully uninstalled
    ssh-agent successfully uninstalled