Programing

Amazon Cloud Server에서 FTP 설정

lottogame 2020. 4. 3. 08:11
반응형

Amazon Cloud Server에서 FTP 설정


Amazon Cloud Server에서 FTP를 설정하려고하지만 운이 없습니다. 나는 그물을 검색하고 그것을 수행하는 구체적인 단계가 없습니다.

실행할 명령을 찾았습니다.

$ 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

그러나 나는 그들을 어디에 쓸지 모른다.


Jaminto는이 질문에 대답하는 데 큰 도움이되었지만 최근에이 과정을 직접 진행하여 Jaminto의 답변을 확대하고 싶었습니다.

EC2 인스턴스가 이미 생성되어 있고 탄력적 IP 주소가 연결되어 있다고 가정합니다.


1 단계 : vsftpd 설치

EC2 서버에 대한 SSH. 유형:

> sudo yum install vsftpd

vsftpd를 설치해야합니다.

2 단계 : EC2 인스턴스에서 FTP 포트를 엽니 다

다음으로 EC2 서버에서 FTP 포트를 열어야합니다. AWS EC2 관리 콘솔에 로그인하고 왼쪽의 탐색 트리에서 보안 그룹을 선택하십시오. EC2 인스턴스에 할당 된 보안 그룹을 선택하십시오. 그런 다음 인바운드 탭을 선택한 다음 편집을 클릭하십시오.

여기에 이미지 설명을 입력하십시오

포트 범위가 20-21 및 1024-1048 인 두 개의 사용자 지정 TCP 규칙을 추가하십시오. 소스의 경우 'Anywhere'를 선택할 수 있습니다. 소스를 고유 한 IP 주소로 설정하기로 결정한 경우 DHCP를 통해 할당 된 경우 IP 주소가 변경 될 수 있습니다.

여기에 이미지 설명을 입력하십시오



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를 누른 다음을 입력하고 Enter 키를 누르십시오 :wq.



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

이 특정 예에서는 일반적으로 / var / www 폴더와 관련된 'www'그룹에 사용자 권한을 부여하는 것이 일반적입니다.

> sudo usermod -a -G www username

EC2 서버에서 수동 ftp를 활성화하려면 ftp 서버가 인바운드 연결에 사용해야하는 포트를 구성한 다음 ftp 클라이언트 데이터 연결에 사용 가능한 포트 목록을 열어야합니다.

나는 리눅스에 익숙하지 않지만 게시 한 명령은 ftp 서버를 설치하고 ec2 방화벽 규칙을 구성하고 (AWS API를 통해) ec2 방화벽에 허용 된 포트를 사용하도록 ftp 서버를 구성하는 단계입니다 .

이 단계에서는 FTP 클라이언트 (VSFTP)를 설치합니다.

> yum install vsftpd

이 단계는 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

다른 두 단계는 EC2 보안 그룹의 Amazon Console을 통해보다 쉽게 ​​수행 할 수 있습니다. 포트 20, 21 및 1024-1048의 연결을 허용하도록 서버에 지정된 보안 그룹을 구성해야합니다.


좋은 해결책을 주신 @ clone45에게 감사합니다. 그러나 나는 그의 해결책의 부록 b와 관련하여 중요한 문제가 하나 있었다. 홈 디렉토리를 var / www / html로 변경 한 직후 ssh와 sftp를 통해 서버에 연결할 수 없었습니다. 항상 다음과 같은 오류가 표시됩니다.

permission denied (public key)

또는 FileZilla 에서이 오류가 발생했습니다.

No supported authentication methods available (server: public key)

그러나 정상적인 FTP 연결을 통해 서버에 액세스 할 수 있습니다.

동일한 오류가 발생하면 사용자의 기본 홈 디렉토리를 설정하여 @ clone45 솔루션의 부록 b를 실행 취소하십시오.

sudo usermod -d /home/username/ username

그러나 사용자의 기본 홈 디렉토리를 설정하면 사용자는 / var / www / http 외부의 다른 많은 폴더에 액세스 할 수 있습니다. 따라서 서버를 보호하려면 다음 단계를 수행하십시오.

1- sftponly 그룹 만들기 ftp로만 액세스를 제한하려는 모든 사용자와 var / www / html에 대한 sftp 액세스로 그룹을 만듭니다. 그룹을 만들려면 :

sudo groupadd sftponly

2- chroot 탈옥 sftp를 통해이 그룹의 서버 액세스를 제한하려면 그룹 사용자가 홈 디렉토리 내의 html 폴더를 제외한 모든 폴더에 액세스 할 수 없도록 chroot를 탈옥해야합니다. 이 작업을 수행하려면 sudo를 사용하여 vim에서 /etc/ssh/sshd.config를여십시오. 파일 끝에서 다음 줄을 주석으로 처리하십시오.

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

그런 다음 아래에이 줄을 추가하십시오.

Subsystem sftp internal-sftp

따라서 서브 시스템을 internal-sftp로 교체했습니다. 그런 다음 아래에 다음 줄을 추가하십시오.

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

이 줄을 추가 한 후 변경 사항을 저장 한 후 다음을 수행하여 ssh 서비스를 다시 시작하십시오.

sudo service sshd restart

3- sftponly 그룹에 사용자 추가 액세스를 제한하려는 모든 사용자는 sftponly 그룹의 구성원이어야합니다. 따라서 다음과 같이 sftponly에 가입합니다. sudo usermod -G sftponly username

4- var / www / html에 대한 사용자 액세스 제한 var / www / html 폴더에 대한 사용자 액세스를 제한하려면 해당 사용자의 홈 디렉토리 ( 'html'이름)에 디렉토리를 만든 다음 / var을 마운트해야합니다. / www를 / home / username / html에 다음과 같이 입력하십시오.

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

5- 쓰기 액세스 설정 사용자에게 / var / www / html에 대한 쓰기 액세스 권한이 필요한 경우 / var / www에서 루트 : 루트 소유권 및 755 권한을 가진 사용자를 감옥에 가두어 야합니다. 그런 다음 / var /를 제공해야합니다. 다음 행을 추가하여 www : html root : sftponly의 소유권 및 775의 권한

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

쉘 액세스 차단 쉘에 대한 액세스를보다 안전하게하기 위해 액세스를 제한하려면 다음과 같이 기본 쉘을 bin / false로 변경하십시오.

sudo usermod -s /bin/false username

Great Article ...은 Amazon Linux AMI에서 산들 바람처럼 작동했습니다.

두 가지 더 유용한 명령 :

기본 FTP 업로드 폴더를 변경하려면

1 단계:

edit /etc/vsftpd/vsftpd.conf

2 단계 : 페이지 하단에 새 항목을 만듭니다.

local_root=/var/www/html

FTP 장치를 사용하여 관리 할 수 ​​있도록 폴더 아래의 파일에 대한 읽기, 쓰기, 삭제 권한을 적용하려면

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

ufw를 활성화 한 경우 ftp를 추가하십시오.

> sudo ufw allow ftp

ufw를 사용하도록 설정하는 데 2 ​​일이 걸렸습니다.


다음 명령으로 사용자를 www 그룹에 추가 할 때까지 확인되지 않습니다.

sudo usermod -a -G www <USER>

이것은 권한 문제를 해결합니다.

다음을 추가하여 기본 경로를 설정하십시오.

local_root=/var/www/html

20-21 및 1024-1048 범위를 허용하는 방화벽이있는 경우 iptables 방화벽을 업데이트하는 것을 잊지 마십시오.

/ etc / sysconfig / iptables에서이를 수행하십시오.

다음과 같은 줄 추가하기 :

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024 : 1048 -j ACCEPT

그리고 다음 명령으로 iptables를 다시 시작하십시오.

sudo 서비스 iptables 다시 시작


clone45 단계를 단순화했습니다.

그가 언급 한대로 포트를여십시오

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

나는 clone45의 대답을 끝까지 따라 갔다. 좋은 기사! 워드 프레스 사이트 중 하나에 플러그인을 설치하려면 FTP 액세스가 필요했기 때문에 홈 디렉토리를 / var / www / mysitename으로 변경했습니다. 그런 다음 ftp 사용자를 다음과 같이 apache (또는 www) 그룹에 계속 추가했습니다.

sudo usermod -a -G apache myftpuser

이 후에도 WP의 플러그인 설치 페이지에서 "WordPress Content 디렉토리 (wp-content)를 찾을 수 없습니다"라는 오류가 계속 표시됩니다. wp.org Q & A 세션에서이 솔루션을 검색하고 발견했습니다 : https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content 다음을 wp- 의 끝에 추가했습니다 config.php :

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

이 후 내 WP 플러그인이 성공적으로 설치되었습니다.


clone45 의 답변 외에도 언급 할 가치가 있습니다 .

vsftpd에서 Chrooted FTP 사용자의 쓰기 권한 수정

Ubuntu 12.04 Precise와 함께 제공되는 vsftpd 버전은 기본적으로 chroot 된 로컬 사용자의 쓰기를 허용하지 않습니다. 기본적으로 이것을 /etc/vsftpd.conf에 있습니다 :

chroot_local_user=YES
write_enable=YES

로컬 사용자가 쓸 수있게하려면 다음 매개 변수를 추가해야합니다.

allow_writeable_chroot=YES

참고 : 쓰기 권한 문제는 다음 FileZilla 오류 로 표시 될 수 있습니다.

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

참조 :
vsftpd VSFTPd 에서 Chroot 된 FTP 사용자의 쓰기 권한 수정
업데이트 후 작동이 중지되었습니다.


530 비밀번호가 틀린 경우

1 단계 더 필요

/ etc / shells 파일에서

다음 줄을 추가하십시오

/ bin / false


FileZila는 Amazon Cloud로 설정하기에 좋은 FTP 도구입니다.

  1. https://filezilla-project.org/ 에서 FileZila 클라이언트를 다운로드 하십시오.
  2. 파일-> 사이트 관리자->를 클릭하십시오.
  3. 새로운 사이트
  4. Amazon 클라우드 위치의 호스트 이름 IP 주소 제공 (있는 경우 포트)
  5. 프로토콜-SFTP (요구 사항에 따라 변경 될 수 있음)
  6. 로그인 유형-정상 (시스템은 매번 비밀번호를 요구하지 않습니다)
  7. 사용자 이름과 비밀번호를 제공하십시오.
  8. 잇다.

이 단계는 한 번만 수행하면 나중에 동일한 IP 주소 및 동일한 사이트에 컨텐츠를 업로드합니다.

참고 URL : https://stackoverflow.com/questions/7052875/setting-up-ftp-on-amazon-cloud-server


반응형