Jaminto ทำงานได้ดีมากในการตอบคำถาม แต่เมื่อเร็ว ๆ นี้ฉันได้ดำเนินการด้วยตัวเองและต้องการที่จะขยายคำตอบของ Jaminto
ฉันสมมติว่าคุณได้สร้างอินสแตนซ์ EC2 แล้วและเชื่อมโยงที่อยู่ IP แบบยืดหยุ่นกับมัน
ขั้นตอนที่ # 1: ติดตั้ง vsftpd
SSH ไปยังเซิร์ฟเวอร์ EC2 ของคุณ ประเภท:
> sudo yum install vsftpd
สิ่งนี้ควรติดตั้ง vsftpd
ขั้นตอนที่ # 2: เปิดพอร์ต FTP บนอินสแตนซ์ EC2 ของคุณ
ถัดไปคุณจะต้องเปิดพอร์ต FTP บนเซิร์ฟเวอร์ EC2 ของคุณ เข้าสู่คอนโซลการจัดการ AWS EC2 และเลือกกลุ่มความปลอดภัยจากแผนผังการนำทางด้านซ้าย เลือกกลุ่มความปลอดภัยที่กำหนดให้กับอินสแตนซ์ EC2 ของคุณ จากนั้นเลือกแท็บขาเข้าจากนั้นคลิกแก้ไข:
เพิ่มกฎ TCP แบบกำหนดเองสองตัวที่มีช่วงพอร์ต 20-21 และ 1024-1048 สำหรับแหล่งที่มาคุณสามารถเลือก 'ที่ใดก็ได้' หากคุณตัดสินใจที่จะตั้งค่า Source เป็นที่อยู่ IP ของคุณโปรดทราบว่าที่อยู่ IP ของคุณอาจเปลี่ยนแปลงได้หากได้รับการกำหนดผ่าน DHCP
ขั้นตอนที่ # 3: ทำการอัพเดตไฟล์ vsftpd.conf
แก้ไขไฟล์ vsftpd conf ของคุณโดยพิมพ์:
> sudo vi /etc/vsftpd/vsftpd.conf
ปิดใช้งาน FTP นิรนามโดยเปลี่ยนบรรทัดนี้:
anonymous_enable=YES
ถึง
anonymous_enable=NO
จากนั้นเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์ vsftpd.conf:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
ไฟล์ vsftpd.conf ของคุณควรมีลักษณะดังนี้ - ยกเว้นให้เปลี่ยน pasv_address ด้วยที่อยู่ IP สาธารณะของคุณ:
หากต้องการบันทึกการเปลี่ยนแปลงให้กด escape แล้วพิมพ์:wq
จากนั้นกด Enter
ขั้นตอนที่ # 4: เริ่มใหม่ vsftpd
รีสตาร์ท vsftpd โดยพิมพ์:
> sudo /etc/init.d/vsftpd restart
คุณควรเห็นข้อความที่มีลักษณะดังนี้:
หากวิธีนี้ใช้ไม่ได้ให้ลอง:
> sudo /sbin/service vsftpd restart
ขั้นตอนที่ # 5: สร้างผู้ใช้ FTP
หากคุณมองที่ / etc / vsftpd / user_list คุณจะเห็นสิ่งต่อไปนี้:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
โดยทั่วไปแล้วจะพูดว่า "ไม่อนุญาตให้ผู้ใช้เหล่านี้เข้าถึง FTP" vsftpd จะอนุญาตให้เข้าถึง FTP กับผู้ใช้ที่ไม่ได้อยู่ในรายการนี้
ดังนั้นในการสร้างบัญชี FTP ใหม่คุณอาจต้องสร้างผู้ใช้ใหม่บนเซิร์ฟเวอร์ของคุณ (หรือหากคุณมีบัญชีผู้ใช้ที่ไม่อยู่ในรายการ / etc / vsftpd / user_list คุณสามารถข้ามไปยังขั้นตอนถัดไปได้)
การสร้างผู้ใช้ใหม่บนอินสแตนซ์ EC2 นั้นค่อนข้างง่าย ตัวอย่างเช่นหากต้องการสร้างผู้ใช้ 'bret' ให้พิมพ์:
> sudo adduser bret
> sudo passwd bret
นี่คือลักษณะ:
ขั้นตอนที่ # 6: การ จำกัด ผู้ใช้ไปยังไดเรกทอรีภายในบ้าน
ณ จุดนี้ผู้ใช้ FTP ของคุณจะไม่ถูก จำกัด ไปยังไดเรกทอรีบ้านของพวกเขา ไม่ปลอดภัยมาก แต่เราสามารถแก้ไขได้อย่างง่ายดาย
แก้ไขไฟล์ vsftpd conf ของคุณอีกครั้งโดยพิมพ์:
> sudo vi /etc/vsftpd/vsftpd.conf
เลิกแสดงความคิดเห็นออกบรรทัด:
chroot_local_user=YES
ควรมีลักษณะเช่นนี้เมื่อคุณทำเสร็จแล้ว:
รีสตาร์ทเซิร์ฟเวอร์ vsftpd อีกครั้งดังนี้:
> sudo /etc/init.d/vsftpd restart
ทุกอย่างเสร็จเรียบร้อย!
ภาคผนวก A: รอดชีวิตจากการรีบูต
vsftpd ไม่เริ่มโดยอัตโนมัติเมื่อเซิร์ฟเวอร์บูท หากคุณเป็นเหมือนฉันนั่นหมายความว่าหลังจากรีบูตอินสแตนซ์ EC2 ของคุณคุณจะรู้สึกอึดอัดเมื่อ FTP ดูเหมือนจะพัง - แต่ในความเป็นจริงแล้วมันไม่ทำงาน! นี่เป็นวิธีที่สะดวกในการแก้ไข:
> sudo chkconfig --level 345 vsftpd on
อีกวิธีหนึ่งถ้าคุณใช้ redhat อีกวิธีหนึ่งในการจัดการบริการของคุณคือการใช้อินเทอร์เฟซผู้ใช้กราฟิกที่ดีเพื่อควบคุมบริการที่ควรเริ่มโดยอัตโนมัติ:
> sudo ntsysv
ตอนนี้ vsftpd จะเริ่มต้นโดยอัตโนมัติเมื่อเซิร์ฟเวอร์บูท
ภาคผนวก B: การเปลี่ยนโฮม FTP ของผู้ใช้
* หมายเหตุ: Iman Sedighi ได้โพสต์โซลูชั่นที่หรูหรายิ่งขึ้นเพื่อ จำกัด การเข้าถึงของผู้ใช้ไปยังไดเรกทอรีที่เฉพาะเจาะจง โปรดอ้างอิงถึงคำตอบที่ยอดเยี่ยมของเขาที่โพสต์เป็นคำตอบ *
คุณอาจต้องการสร้างผู้ใช้และ จำกัด การเข้าถึง FTP ไปยังโฟลเดอร์เฉพาะเช่น / var / www ในการทำเช่นนี้คุณจะต้องเปลี่ยนไดเรกทอรีเริ่มต้นของผู้ใช้:
> sudo usermod -d /var/www/ username
ในตัวอย่างเฉพาะนี้เป็นเรื่องปกติที่จะให้สิทธิ์ผู้ใช้แก่กลุ่ม 'www' ซึ่งมักจะเกี่ยวข้องกับโฟลเดอร์ / var / www:
> sudo usermod -a -G www username