Feat. Session Manager & 계정 생성 & 파일전송
공공기관에서 실시간으로 데이터를 받아 데이터 전송, 전 후처리, ML 예측까지 자동화 Pipeline을 구축하는 프로젝트를 진행하는 중입니다. 일부 공공기관이 데이터를 API방식이 아닌 FTP 서버에 실시간으로 떨궈준다고 하여 별도의 FTP서버를 AWS EC2에 구축하게 되었으며, 간단한 내용이었으나 오랜만에 진행해 좀 헤맸던 내용인 FTP 서버 구축부터 테스트, FileZilla 활용 및 연동까지 공유하고자 합니다.
※ 이 글은 2023년 1월 6일 Medium에 게시한 글을 이전한 글입니다. [원문 보기]
Launch instance
우선 FTP 서버를 운영할 EC2 Instance를 Launch해줍니다.
Amazon Linux를 활용하였고, EC2 인스턴스를 시작하는 방법은 생략하도록 하겠습니다(찾으면 많이나와요!). 참고로 초반 Session Manager부분은 선택 사항이므로 필요 없을 시 FTP 부분부터 보길
AWS Session Manager
저는 테스트 진행 시 Session Manager를 자주 사용하는 편이라 시작 전 Session Manager 활용 방법을 공유드리고자 합니다.
- AWS VPC 내 실행되는 EC2인스턴스 관리 접속기능을 제공하는 Managed service. (AWS System Manager Doc ← 클릭)
- AWS Systems Manager(SSM)의 기능으로, 포트가 아닌 IAM Role을 통해 통신
- SSH나 RDP를 사용하는 통신이 아니어서, 보안그룹을 모두 막아놓아도 AWS 콘솔에서 EC2에 접속 및 관리 가능
- Session Manager 활용하여 EC2 접속 사전조건
1. SSM Agent
2. IAM Role
3. IGW or Nat GW 라우팅 설정된 네트워크
Session Manager 활용 위한 IAM Role 설정
Session Manager를 활용하기위해선 IAM Role을 설정해야합니다. 때문에 EC2에 연결된 IAM Role에 AmazonEC2RoleforSSM Policy 추가해 줍니다.
SSM Agent 설치
SSM Agent는 AWS Managed AMI엔 기본으로 설치되어 있으나 설치되지 않은 경우 아래 방법으로 설치 또는 다음 링크를 확인하시면 될듯 합니다.
yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpmsystemctl status amazon-ssm-agent
Session Manager 활용하여 인스턴스 연결
설정을 다 한 뒤에는 Session Manager를 활용하여 인스턴스에 연결해주어야 합니다.
(인스턴스 선택 → connect → Session Manager 탭 이동 → Connect)

EC2 설치 이후 보안그룹 설정
TCP 포트 추가
범위 : 21–22

Amazon Linux에 vsftpd 패키지 설치 및 vsftpd.conf 수정
$ sudo yum install vsftpd

- vsftpd.conf 수정
$ sudo vim /etc/vsftpd/vsftpd.con#아래 내용 수정listen=NOlisten_ipv6=YESanonymous_enable=NOlocal_enable=YESchroot_local_user=YESallow_writeable_chroot=YESlocal_root=/data/ftp/fileswrite_enable=YESlocal_umask=022dirmessage_enable=YESuserlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO
- vsftpd.conf의 각 설정값에대한 설명은 아래에서 보실 수 있습니다.
- 위 수정 과정에서 기존 내용 백업을 위해 저는 주석처리하였습니다.
(feat. vim 전체주석)
1. Ctrl+V → VISUAL BLOCK모드 진입
2. 커서이동 (맨아래로)
3. 블록 잡은 후 ‘:’ 누른 뒤 ;’<,’> 에 norm i# 입력


계정 생성 및 vsftpd 재시작
#계정 생성$ sudo useradd [신규계정명]$ sudo passwd [신규계정명]#vsftpd 재시작$ sudo systemctl restart vsftpd#경로 확인ls /home
접속 테스트 및 파일 업로드, 다운로드 테스트
$ ftp [IP주소 or 도메인주소]아이디, 비번 입력접속확인 #테스트할 파일 생성$ sudo vim /home/ftpuser/testfile.txtftp> get testfile.txtftp> put aaa.txt





- 참고로 로컬 파일목록 보려면 FTP서버에서 !ls 치면 나옴 (FTP> !ls)
FileZilla 접속 테스트
정상적인 연결을 확인하였고, 마지막으로 FileZilla와도 정상적으로 연결되는지 확인하고 싶었습니다. 그래서 마지막으로 Filezilla 활용 과정에서 이슈사항을 공유드립니다.
생성한 FTP 서버를 Filezilla에 연결하고 싶었습니다. 성격이 확실한걸 좋아하는 편이라.. 근데 평소 FTP서버에 연결하듯 진행하였는데 아래와같은 오류가 나오더라구요 해결은 아래 블로그에서 많은 도움을 받았습니다.




마지막으로 서버 재부팅시 FTP 자동 시작하도록 설정
$ sudo chkconfig vsftpd on.
FTP 관련 로그 위치
/var/log/xferlog
더불어 당연한 얘기지만 계정을 통한 접속방법은 계정관리를 잘 해주셔야합니다…!
기타 오류해결
- FTP 접속 시 로그인 후 아래와 같은 메시지 발생
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files. - ftp> ls
229 Entering Extended Passive Mode (|||50872|).
150 Here comes the directory listing.
226 Transfer done (but failed to open directory). - ftp>
방화벽 문제도 없고 ..
SeLinux가 on 되어 있을 시 위와 같은 에러가 발생 - $ getenforce
Enforcing
setenforce 0 명렁어로 SeLinux를 off.
$ setenforce 0
$ getenforce
Permissive
$#
SeLinux Off 후 FTP 정상화 됨 - ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
drwxrwxrwx 2 0 0 4096 Oct 25 08:12 css
drwxrwxrwx 2 0 0 4096 Oct 25 08:12 fonts
-rwxrwxrwx 1 0 0 1182 Oct 25 08:14 index.html
drwxrwxrwx 2 0 0 61 Oct 25 08:12 js
drwxrwxrwx 3 0 0 22 Oct 25 08:12 node_modules
226 Directory send OK. - ftp>
/etc/selinux/config 파일의 설정도 이후 Disabled 상태로 변경
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing — SELinux security policy is enforced.
# permissive — SELinux prints warnings instead of enforcing.
# disabled — No SELinux policy is loaded.
SELINUX=disabled
참고자료
AWS SSM Session Manager 를 이용하여 EC2 인스턴스에 접속하기
#제 Story 의 모든 기술적 내용들은 초보자들을 대상으로 하는 것으로 제가 실제로 테스트를 하면서 작성하는 것을 원칙으로 합니다.cloudguardians.medium.comAWS Solution 1 - Session Manager (Public 접근)
본 글은 제가 개인 블로그에 썼던 글을 재구성하여 쓴 글입니다 참고(linux) 참고(Windows)err-bzz.oopy.io[Linux] useradd (adduser) 명령어 - 사용자 추가
이번 포스팅에서는 리눅스의 사용자 관리, 그중에서도 사용자 계정을 추가하는 useradd (adduser) 명령어에 대해 이야기해보고자 한다. 참고로 사용자 추가 권한은 root 권한이 있는 사용자만 허용되며…tragramming.tistory.comUbuntu 20.04에 ftp 서버 설치하기( vsftpd 사용 )
Ubuntu 20.04에 ftp 서버를 설치하는 과정을 다룹니다. vsftpd를 사용했습니다. 1. vsftpd 패키지를 설치합니다. $ sudo apt-get install vsftpd 2. vsftpd.conf…webnautes.tistory.com팻의 공부방 : 네이버 블로그
Edit descriptionblog.naver.comcatchicken님의블로그 : 네이버 블로그
Edit descriptionblog.naver.com[리눅스마스터] vsftpd.conf 설정 파일 해설
etc/vsftpd/vsftpd.conf anonymous_enable = yes //익명 ftp 서비스 활성화 여부 설정 local_enable = yes //로컬 계정 사용자 접속 여부 설정…raisonde.tistory.com[AWS] EC2 인스턴스 FTP 설치, username, 비밀번호로 접속 가능하게 계정 추가
AWS EC2 사용중 SFTP가 아닌 FTP 접속을 테스트 해야 할 경우 설정법을 정리하였다. EC2는 key 파일로 접속하는 방법 외에도 직접 사용자명, 비밀번호를 사용하여 접속할 수 있도록 설정할 수 있다…quokkas.tistory.comAWS EC2 인스턴스 FTP 설치 및 설정하기
이번에는 AWS EC2 인스턴스 서버에 FTP(vsftpd)를 설치 및 설정 방법에 대해서 설명하도록 하겠습니다. vsftpd 설치 다음 명령어를 입력하여 vsftpd를 설치합니다.sudo yum -y…app-developer.tistory.com서버를 통해 FTP 계정 생성 | Hostwinds
이 안내서는 VSFTPD를 사용하여 FTP 계정을 만드는 방법을 다룹니다.이 소프트웨어는 CentOS 6, CentOS 7 및 Ubuntu에 설치할 수 있습니다. 소프트웨어를 설치하기 전에 항상 시스템이 최신…www.hostwinds.kr서버 접속시 server sent: publickey,gssapi-keyex,gssapi-with-mic 에러 해결법
FTP나 원격 또는 기타 툴에서 서버 접속시 server sent: publickey,gssapi-keyex,gssapi-with-mic 와 같...m.blog.naver.com