linux 접속 - Amazon Cloud Server에서 FTP 설정




아마존 클라우드 (12)

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

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


Answers

다음 명령으로 사용자를 www 그룹에 추가 할 때까지는 괜찮지 않을 것입니다.

sudo usermod -a -G www <USER>

이렇게하면 권한 문제가 해결됩니다.

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

local_root=/var/www/html

좋은 해결책을 위해 고맙습니다 @ 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 그룹 만들기 var / www / html에 대한 ftp 및 sftp 액세스에만 액세스를 제한하려는 모든 사용자를위한 그룹을 만듭니다. 그룹을 만들려면 :

sudo groupadd sftponly

2 - chailot 감옥 sftp를 통해이 그룹의 서버에 대한 액세스를 제한하려면 그룹의 사용자가 홈 디렉토리 내의 html 폴더를 제외한 다른 폴더에 액세스하지 못하도록 chroot를 감옥에 보내야합니다. 이것을하기 위해 sudo로 vim에서 /etc/ssh/sshd.config를여십시오. 파일 끝에 다음 줄을 주석으로 적어주십시오 :

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

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

Subsystem sftp internal-sftp

그래서 우리는 subsystem을 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에 대한 쓰기 권한이 필요한 경우 root : root 소유권과 권한 755가 있어야하는 / var / www의 사용자를 감옥에 보관해야합니다. 그러면 / var / www / html 루트의 소유권 : 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

6- 셸 셸 액세스 셸에 액세스 하지 못하도록 셸에 대한 액세스를 제한하려면 다음과 같이 기본 셸을 bin / false로 변경하십시오.

sudo usermod -s /bin/false username

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

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

이 단계를 한 번만 수행하면 나중에 동일한 IP 주소와 동일한 사이트에 콘텐츠가 업로드됩니다.


Jaminto는이 질문에 대한 답변을 훌륭하게했지만, 최근 Jaminto의 답변을 확대하려고했습니다.

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


1 단계 : vsftpd 설치

SSH를 EC2 서버에 연결하십시오. 유형:

> sudo yum install vsftpd

이것은 vsftpd를 설치해야합니다.

2 단계 : EC2 인스턴스에서 FTP 포트 열기

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

포트 범위가 20-21 및 1024-1048 인 두 개의 사용자 지정 TCP 규칙을 추가합니다. 소스의 경우 '아무 데나'를 선택할 수 있습니다. Source를 자신의 IP 주소로 설정하려면 DHCP를 통해 IP 주소를 할당하는 경우 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를 누른 다음 :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

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

> sudo usermod -a -G www username

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

저는 리눅스에 익숙하지 않지만 게시 한 명령은 ftp 서버를 설치하고, (AWS API를 통해) ec2 방화벽 규칙을 구성한 다음 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 콘솔을 통해 더 쉽게 수행 할 수 있습니다. 포트 20, 21 및 1024-1048에서 연결을 허용하도록 서버에 할당 된 보안 그룹을 구성해야합니다


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

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

다음과 같은 행 추가하기 :

-A INPUT -m 상태 - 상태 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 restart


나는 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

ufw를 활성화 한 경우 ftp :

> sudo ufw allow ftp

내가 ufw를 사용할 수 있다는 것을 깨닫는 데 2 ​​일이 걸렸다.


530 암호가 올바르지 않은 경우

1 단계 더 필요

/ etc / shells 파일

다음 행 추가

/ bin / false


아마 의 대답 이외에 언급 할만한 가치가 있습니다 :

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에서 Chrooted FTP 사용자에 대한 쓰기 권한 수정
VSFTPd가 업데이트 후 작동을 멈췄습니다.


훌륭한 기사 ... 아마존 리눅스 AMI에서 바람처럼 일했습니다.

두 가지 유용한 명령 :

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

1 단계:

edit /etc/vsftpd/vsftpd.conf

2 단계 : 페이지 하단에 새 항목 만들기 :

local_root=/var/www/html

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

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

좋아, 나를 위해 일한 유일한 방법은 다음과 같다.

  1. 키의 사용 권한 변경

    chmod 400 mykey.pem

  2. ec2-user 와 올바른 ec2-99 ... 주소를 사용하여 로그인하십시오. ec2-99 주소는 로그인 한 상태에서 인스턴스가 표시 될 때 aws 콘솔의 맨 아래에 있습니다.

    ssh -i mykey.pem [email protected]







linux amazon-web-services amazon-s3 amazon-ec2 ftp