Thiết lập FTP trên Amazon Cloud Server [đã đóng]


257

Tôi đang cố gắng thiết lập FTP trên Amazon Cloud Server, nhưng không gặp may. Tôi tìm kiếm trên mạng và không có bước cụ thể nào để làm điều đó.

Tôi tìm thấy các lệnh để chạy:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

Nhưng tôi không biết viết chúng ở đâu.


10
Câu hỏi này nên được chuyển đến serverfault.com.
Jérôme Verstrynge

Câu trả lời:


570

Jaminto đã làm rất tốt khi trả lời câu hỏi, nhưng gần đây tôi đã tự mình trải qua quá trình và muốn mở rộng câu trả lời của Jaminto.

Tôi giả sử rằng bạn đã tạo một phiên bản EC2 và đã liên kết Địa chỉ IP đàn hồi với nó.


Bước # 1: Cài đặt vsftpd

SSH đến máy chủ EC2 của bạn. Kiểu:

> sudo yum install vsftpd

Điều này nên cài đặt vsftpd.

Bước # 2: Mở các cổng FTP trên phiên bản EC2 của bạn

Tiếp theo, bạn sẽ cần mở các cổng FTP trên máy chủ EC2 của mình. Đăng nhập vào Bảng điều khiển quản lý AWS EC2 và chọn Nhóm bảo mật từ cây điều hướng bên trái. Chọn nhóm bảo mật được gán cho thể hiện EC2 của bạn. Sau đó chọn tab Trong, sau đó nhấp vào Chỉnh sửa:

nhập mô tả hình ảnh ở đây

Thêm hai Quy tắc TCP tùy chỉnh với phạm vi cổng 20-21 và 1024-1048. Đối với Nguồn, bạn có thể chọn 'Mọi nơi'. Nếu bạn quyết định đặt Nguồn thành địa chỉ IP của riêng bạn, hãy lưu ý rằng địa chỉ IP của bạn có thể thay đổi nếu nó được gán qua DHCP.

nhập mô tả hình ảnh ở đây



Bước # 3: Thực hiện cập nhật cho tập tin vsftpd.conf

Chỉnh sửa tập tin conf vsftpd của bạn bằng cách gõ:

> sudo vi /etc/vsftpd/vsftpd.conf

Vô hiệu hóa FTP ẩn danh bằng cách thay đổi dòng này:

anonymous_enable=YES

đến

anonymous_enable=NO

Sau đó thêm các dòng sau vào dưới cùng của tệp vsftpd.conf:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

Tệp vsftpd.conf của bạn sẽ trông giống như sau - ngoại trừ đảm bảo thay thế pasv_address bằng địa chỉ IP đối mặt công khai của bạn:

nhập mô tả hình ảnh ở đây

Để lưu các thay đổi, nhấn thoát, sau đó nhập :wq, sau đó nhấn enter.



Bước # 4: Khởi động lại vsftpd

Khởi động lại vsftpd bằng cách gõ:

> sudo /etc/init.d/vsftpd restart

Bạn sẽ thấy một thông báo giống như:

nhập mô tả hình ảnh ở đây


Nếu điều này không hiệu quả, hãy thử:

> sudo /sbin/service vsftpd restart



Bước # 5: Tạo người dùng FTP

Nếu bạn xem qua / etc / vsftpd / user_list, bạn sẽ thấy như sau:

# 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

Điều này về cơ bản là nói, "Đừng cho phép những người dùng này truy cập FTP." vsftpd sẽ cho phép FTP truy cập vào bất kỳ người dùng nào không có trong danh sách này.

Vì vậy, để tạo tài khoản FTP mới, bạn có thể cần tạo một người dùng mới trên máy chủ của mình. (Hoặc, nếu bạn đã có tài khoản người dùng không được liệt kê trong / etc / vsftpd / user_list, bạn có thể bỏ qua bước tiếp theo.)

Tạo một người dùng mới trên một ví dụ EC2 khá đơn giản. Ví dụ: để tạo 'bret' cho người dùng, hãy nhập:

> sudo adduser bret
> sudo passwd bret

Đây là những gì nó sẽ trông như thế nào:

nhập mô tả hình ảnh ở đây



Bước # 6: Hạn chế người dùng vào thư mục nhà của họ

Tại thời điểm này, người dùng FTP của bạn không bị giới hạn trong các thư mục nhà của họ. Điều đó không an toàn lắm, nhưng chúng tôi có thể sửa nó khá dễ dàng.

Chỉnh sửa tập tin conf vsftpd của bạn một lần nữa bằng cách gõ:

> sudo vi /etc/vsftpd/vsftpd.conf

Bỏ bình luận ra dòng:

chroot_local_user=YES

Nó sẽ trông như thế này khi bạn hoàn thành:

nhập mô tả hình ảnh ở đây

Khởi động lại máy chủ vsftpd một lần nữa như vậy:

> sudo /etc/init.d/vsftpd restart

Tất cả đã được làm xong!


Phụ lục A: Sống sót khi khởi động lại

vsftpd không tự động khởi động khi máy chủ của bạn khởi động. Nếu bạn giống tôi, điều đó có nghĩa là sau khi khởi động lại phiên bản EC2 của bạn, bạn sẽ cảm thấy một khoảnh khắc khủng bố khi FTP dường như bị phá vỡ - nhưng thực tế, nó chỉ không chạy!. Đây là một cách hữu ích để khắc phục điều đó:

> sudo chkconfig --level 345 vsftpd on

Ngoài ra, nếu bạn đang sử dụng redhat, một cách khác để quản lý dịch vụ của bạn là sử dụng giao diện người dùng đồ họa tiện lợi này để kiểm soát dịch vụ nào sẽ tự động bắt đầu:

>  sudo ntsysv

nhập mô tả hình ảnh ở đây

Bây giờ vsftpd sẽ tự động khởi động khi máy chủ của bạn khởi động.


Phụ lục B: Thay đổi thư mục chính FTP của người dùng

* LƯU Ý: Iman Sedighi đã đăng một giải pháp thanh lịch hơn để hạn chế người dùng truy cập vào một thư mục cụ thể. Vui lòng tham khảo giải pháp tuyệt vời của anh ấy được đăng dưới dạng câu trả lời *

Bạn có thể muốn tạo người dùng và hạn chế quyền truy cập FTP của họ vào một thư mục cụ thể, chẳng hạn như / var / www. Để thực hiện việc này, bạn sẽ cần thay đổi thư mục nhà mặc định của người dùng:

> sudo usermod -d /var/www/ username

Trong ví dụ cụ thể này, thông thường là cấp quyền cho người dùng cho nhóm 'www', thường được liên kết với thư mục / var / www:

> sudo usermod -a -G www username

3
Sau step 3khi thêm dòng trong tập tin, làm thế nào tôi có thể lưu nó?
Sumit bijvani

2
ok tất cả đã xong, bây giờ làm thế nào tôi có thể kết nối với ftp?
Sumit bijvani

7
Chào Sumit. Vi là một biên tập viên khéo léo. Để lưu công việc của bạn, nhập thoát, sau đó ": wq" (không có dấu ngoặc kép), sau đó nhấn enter. Đối với FTP, điều đó thật khó trả lời vì nó sẽ dựa trên ứng dụng khách FTP của bạn. Nếu tôi có thời gian, tôi sẽ cố gắng thêm một số hướng dẫn vào câu trả lời của mình để thiết lập một số ứng dụng khách FTP phổ biến. Cá nhân, tôi sử dụng Aptana Studio. Trong Aptana, bạn tạo một trang SFTP và cung cấp cho Aptana tệp xác thực khóa chung mà bạn có khi tạo phiên bản EC2. Nếu bạn đang sử dụng filezilla, hãy thử sử dụng pageant.exe. Chúc mừng!
clone45

6
Thật tuyệt vời. Rất rõ ràng. Cảm ơn rât nhiều.
AC Patrice

11
Thật ra, có lẽ anh ấy có thể cho tôi tín dụng. Anh ấy đã lặp lại câu trả lời của tôi vào ngày 13 tháng 1
clone45

27

Để bật ftp thụ động trên máy chủ EC2, bạn cần định cấu hình các cổng mà máy chủ ftp của bạn nên sử dụng cho các kết nối gửi đến, sau đó mở danh sách các cổng khả dụng cho các kết nối dữ liệu máy khách ftp.

Tôi không quen thuộc với linux, nhưng các lệnh bạn đã đăng là các bước để cài đặt máy chủ ftp, định cấu hình quy tắc tường lửa ec2 (thông qua API AWS), sau đó định cấu hình máy chủ ftp để sử dụng các cổng bạn cho phép trên tường lửa ec2 .

Vì vậy, bước này cài đặt máy khách ftp (VSFTP)

> yum install vsftpd

Các bước này cấu hình máy khách ftp

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

nhưng hai bước còn lại được thực hiện dễ dàng hơn thông qua bảng điều khiển amazon trong các nhóm Bảo mật EC2. Ở đó, bạn cần định cấu hình nhóm bảo mật được gán cho máy chủ của mình để cho phép kết nối trên các cổng 20,21 và 1024-1048


Tôi biết những dòng đó có nghĩa là gì, nhưng tôi không biết gõ chúng ở đâu ... Đó là vấn đề ...
SharkTheDark

1
tại dòng lệnh trên máy chủ mà bạn đang cài đặt máy chủ ftp?
jaminto

2
Kết nối với máy chủ của bạn thông qua SSH: blog.taggesell.de/index.php?/archives/ triệt
jaminto

Trong trường hợp bạn vẫn gặp lỗi (500 OOPS: vsftpd: từ chối chạy với root có thể ghi bên trong chroot ()), điều này đã khắc phục sự cố cho tôi: benscobie.com/
kaore

Tôi bị sốc khi FTP ẩn danh được BẬT theo mặc định!
jeffkee

16

Cảm ơn @ clone45 cho giải pháp tốt đẹp. Nhưng tôi chỉ có một vấn đề quan trọng với Phụ lục b về giải pháp của anh ấy. Ngay sau khi tôi thay đổi thư mục chính thành var / www / html thì tôi không thể kết nối với máy chủ thông qua ssh và sftp vì nó luôn hiển thị các lỗi sau

permission denied (public key)

hoặc trong FileZilla tôi đã nhận được lỗi này:

No supported authentication methods available (server: public key)

Nhưng tôi có thể truy cập máy chủ thông qua kết nối FTP bình thường.

Nếu bạn gặp phải lỗi tương tự thì chỉ cần hoàn tác phụ lục b của giải pháp @ clone45 bằng cách đặt thư mục chính mặc định cho người dùng:

sudo usermod -d /home/username/ username

Nhưng khi bạn đặt thư mục chính mặc định của người dùng thì người dùng có quyền truy cập vào nhiều thư mục khác bên ngoài / var / www / http. Vì vậy, để bảo mật máy chủ của bạn, hãy làm theo các bước sau:

1- Tạo nhóm sftponly Tạo một nhóm cho tất cả người dùng mà bạn muốn hạn chế quyền truy cập của họ chỉ truy cập ftp và sftp vào var / www / html. để làm cho nhóm:

sudo groupadd sftponly

2- Bỏ tù chroot Để hạn chế quyền truy cập của nhóm này vào máy chủ thông qua sftp, bạn phải bẻ khóa chroot để không cho phép người dùng của nhóm truy cập vào bất kỳ thư mục nào ngoại trừ thư mục html trong thư mục chính của nó. để làm điều này mở /etc/ssh/sshd.config trong vim với sudo. Ở phần cuối của tập tin, vui lòng bình luận dòng này:

Subsystem sftp /usr/libexec/openssh/sftp-server

Và sau đó thêm dòng này bên dưới:

Subsystem sftp internal-sftp

Vì vậy, chúng tôi đã thay thế hệ thống con bằng nội bộ-sftp. Sau đó thêm các dòng sau bên dưới nó:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

Sau khi thêm dòng này, tôi đã lưu các thay đổi của mình và sau đó khởi động lại dịch vụ ssh bằng cách:

sudo service sshd restart

3- Thêm người dùng vào nhóm sftponly Bất kỳ người dùng nào bạn muốn hạn chế quyền truy cập của họ phải là thành viên của nhóm sftponly. Vì vậy, chúng tôi tham gia nó để sftponly bởi: sudo usermod -G sftponly tên người dùng

4- Hạn chế quyền truy cập của người dùng vào chỉ var / www / html Để hạn chế quyền truy cập của người dùng vào thư mục var / www / html, chúng ta cần tạo một thư mục trong thư mục chính (với tên 'html') của người dùng đó và sau đó mount / var / www đến / home / tên người dùng / html như sau:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- Đặt quyền truy cập ghi Nếu người dùng cần quyền truy cập ghi vào / var / www / html, thì bạn phải bỏ tù người dùng tại / var / www phải có quyền: quyền sở hữu gốc và quyền của 755. Sau đó, bạn cần phải cung cấp / var / Quyền sở hữu www / html của root: sftponly và quyền của 775 bằng cách thêm các dòng sau:

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6- Chặn quyền truy cập shell Nếu bạn muốn hạn chế quyền truy cập không truy cập vào shell để bảo mật hơn thì chỉ cần thay đổi shell mặc định thành bin / false như sau:

sudo usermod -s /bin/false username

trên của bạn sudo mount --bind /var/www /home/username/htmltôi get nói không có thư mục www. Tôi giả sử điều này được thực hiện từ root (nơi thư mục / home)?
elliotrock

1
sudo chown root:www /var/www/htmlbang chown: nhóm không hợp lệ: 'root: www'
elliotrock

2
Phần 6 tốt hơn nên là phần phụ sudo usermod -s /sbin/nologin usernamecủa các hạn chế vỏ mặc định của mô-đun pam của vsftpd (và nó dường như hoạt động tốt hơn trong trường hợp của tôi). Và phần 4 mountcần phải được thực hiện trong mỗi lần khởi động lại, vì vậy, nên đặt nó vào RC.local.
phy25

11

Bài viết tuyệt vời ... hoạt động như một làn gió trên Amazon Linux AMI.

Hai lệnh hữu ích hơn:

Để thay đổi thư mục tải lên FTP mặc định

Bước 1:

edit /etc/vsftpd/vsftpd.conf

Bước 2: Tạo một mục mới ở cuối trang:

local_root=/var/www/html

Để áp dụng đọc, viết, xóa quyền đối với các tệp trong thư mục để bạn có thể quản lý bằng thiết bị FTP

find /var/www/html -type d -exec chmod 777 {} \;

11
mà chmods mỗi tệp và thư mục thành 777, không an toàn cho một trang web
sergiogx

ĐỒNG Ý. Vì vậy, những thay đổi nào bạn đề nghị về điều này?
Ravi Shanker

3
Bạn nên chỉ định các quyền cần thiết, đừng chỉ mở tất cả các quyền cho mọi thứ hoặc bạn đang yêu cầu sự cố. Chẳng hạn, sử dụng chmod -R ug + rw / var / www / html sẽ cấp quyền đọc và ghi cho người dùng và nhóm cho tất cả các tệp mà không cấp quyền và quyền thực thi không cần thiết cho người khác. Sau đó, thiết lập người dùng và nhóm phù hợp để bạn không cần phải sửa đổi khác. Đó là nếu người dùng ftp của bạn có thể đọc và ghi tất cả các tệp và máy chủ web của bạn có thể đọc bạn đã đặt. Đặt cả hai người dùng trong cùng một nhóm và thêm rw cho người dùng và r vào nhóm.
AaronM

Bạn nên áp dụng 775 cho / var / www / html. phần còn lại của các thư mục con và tập tin có thể nhận được quyền theo nhu cầu. 777 rất không an toàn.
Iman Sedighi

6

Trong trường hợp bạn đã bật ufw, hãy nhớ thêm ftp:

> sudo ufw allow ftp

Phải mất 2 ngày tôi mới nhận ra rằng tôi đã kích hoạt ufw.


hoặc iptables, hoặc ... vâng tôi cũng luôn quên!
jsh

6

Sẽ không ổn cho đến khi bạn thêm người dùng của mình vào nhóm www bằng các lệnh sau:

sudo usermod -a -G www <USER>

Điều này giải quyết vấn đề cho phép.

Đặt đường dẫn mặc định bằng cách thêm này:

local_root=/var/www/html

4

Đừng quên cập nhật tường lửa iptables của bạn nếu bạn có một cái để cho phép phạm vi 20-21 và 1024-1048.

Làm điều này từ / etc / sysconfig / iptables

Thêm dòng như thế này:

-A INPUT -m state --state MỚI -m tcp -p tcp --dport 20:21 -j CHẤP NHẬN

-A INPUT -m state --state MỚI -m tcp -p tcp --dport 1024: 1048 -j CHẤP NHẬN

Và khởi động lại iptables bằng lệnh:

dịch vụ sudo iptables khởi động lại


4

Tôi đã đơn giản hóa các bước clone45:

Mở các cổng như ông đã đề cập

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

2

Tôi đã làm theo câu trả lời của clone45 cho đến cuối cùng. Một bài viết tuyệt vời! Vì tôi cần quyền truy cập FTP để cài đặt trình cắm vào một trong các trang web wordpress của mình, tôi đã thay đổi thư mục chính thành / var / www / mysitename. Sau đó, tôi tiếp tục thêm người dùng ftp của mình vào nhóm apache (hoặc www) như thế này:

sudo usermod -a -G apache myftpuser

Sau này tôi vẫn thấy lỗi này trên trang cài đặt plugin của WP: "Không thể định vị thư mục Nội dung WordPress (wp-content)". Đã tìm kiếm và tìm thấy giải pháp này trên phiên hỏi đáp của wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content và thêm phần sau vào cuối wp- cấu hình:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

Sau đó, plugin WP của tôi đã được cài đặt thành công.


0

có lẽ đáng nói ngoài câu trả lời của clone45 :

Sửa quyền ghi cho người dùng FTP bị chặn trong vsftpd

Phiên bản vsftpd đi kèm với Ubuntu 12.04 Chính xác không cho phép người dùng cục bộ chroated viết theo mặc định. Theo mặc định, bạn sẽ có cái này trong /etc/vsftpd.conf :

chroot_local_user=YES
write_enable=YES

Để cho phép người dùng cục bộ viết, bạn cần thêm tham số sau:

allow_writeable_chroot=YES

Lưu ý: Các sự cố với quyền ghi có thể hiển thị như các lỗi FileZilla sau :

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

Tham khảo:
Sửa quyền ghi cho người dùng FTP bị chặn trong vsftpd
VSFTPd ngừng hoạt động sau khi cập nhật


0

Trong trường hợp bạn nhận được 530 mật khẩu không chính xác

Cần thêm 1 bước nữa

trong tập tin / etc / shell

Thêm dòng sau

/ bin / sai


-2

FileZila là công cụ FTP tốt để thiết lập với Amazon Cloud.

  1. Tải xuống ứng dụng khách FileZila từ https://filezilla-project.org/
  2. Nhấp vào Tệp -> Trình quản lý Trang web ->
  3. Trang web mới
  4. Cung cấp tên máy chủ Địa chỉ IP của vị trí đám mây amazon của bạn (Cổng nếu có)
  5. Giao thức - SFTP (Có thể thay đổi dựa trên yêu cầu của bạn)
  6. Loại đăng nhập - Bình thường (Vì vậy, hệ thống sẽ không yêu cầu mật khẩu mỗi lần)
  7. Cung cấp tên người dùng và mật khẩu.
  8. Kết nối.

Bạn chỉ cần thực hiện các bước này 1 lần, sau đó nó sẽ tải nội dung lên cùng một địa chỉ IP và cùng một trang.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.