어쩌다보니 회사에서 서버를 배포해야하는 상황이 와서 맞으면서 배우는 중이다.
FTP, SSH, SFTP?
FTP(File Tansfer Protocol)는 TCP/IP 계층을 통해 파일을 전송하는 프로토콜이다.
SFTP는 FTP의 앞의 S는 Secure가 붙어 암호화한 내용을 주고 받기 때문에 보안적이라고 한다.
SSH(Secure SHell)도 비슷한 개념으로 Shell을 통해 서버를 조작하는 작업 또한 보안 이슈가 되면서 등장하게 되었다고 한다.
- open SSH Server 설치
SFTP는 SSH 기반 FTP이기 때문에 우선 접속하려는 서버에 SSH가 설치되어 있어야 한다.
또한 SFTP 접속 설정 또한 SSH 설정 파일에서 할 수 있다.
보통 SSH나 SFTP를 사용할 때에는 설치 후 기본 포트를 사용하지만 보안 상 이유로 포트를 변경해야 하는 경우가 있을 수 있다.
설치 전 패키지 업데이트를 해주는 것과 서버에 설치된 프로그램을 전체적으로 업그레이드 해주는 과정입니다.
sudo apt update
sudo apt upgrade
업데이트 후 아래 명령어로 Open SSH Server를 설치합니다.
sudo apt install openssh-server
설치가 완료되면 SSH 서버가 자동으로 실행됩니다.
SSH 서버 상태 확인 명령어 입니다.
sudo systemctl status ssh
만약 SSH 서버가 실행된 상태가 아니라면 명령어를 통해 실행합니다.
sudo systemctl start ssh
- SSH 설정
보안을 위해서 SSH 접속 포트를 변경하고 싶을 때, 설정 파일로 이동합니다.
sudo vi /etc/ssh/sshd_config
기본 포트 번호인 22를 주석 처리(#)하고 원하는 포트 번호를 입력하면 됩니다.
편집한 내용을 적용하기 위해 ssh 서비스를 재시작합니다.
sudo service ssh restart
Ubuntu의 기본 방화벽인 ufw를 사용하는 경우 바뀐 포트 번호를 다음 명령을 실행하여
포트를 열고 추가합니다.
sudo ufw allow 바뀐 포트번호/tcp
이렇게 하면 포트 설정 변경 완료!
+추가 계정에 대한 권한 설정
계정 생성하기
sudo adduser guest
Ubuntu에 계정을 생성 및 비밀번호를 설정하고,
이 계정이 특정 폴더 외의 다른 폴더는 접근하지 못하게 권한 설정한다.
sftp 설정 바꾸기
$ vi /etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server # 이 부분을
Subsystem sftp internal-sftp # 다음과 같이 바꾸어준다.
다음과 같이 바꾼다
파일의 아래 사항을 추가한다.
Match Group filetransfer
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
변경 사항을 반영하기 위해 재시작한다.
service ssh restart
계정에 대한 권한 설정하기
제한을 걸 유저를 포함시킬 그룹을 생성한다
sudo addgroup --system filetransfer #그룹 추가
그리고 그 그룹안에 넣자
usermod -G filetransfer guest #유저 권한 부여
chown root:root /home/guest #파일 소유권 변경
chmod 755 /home/guest #파일 권한 변경
여기서 guest부분을 본인이 생성한 계정명으로 바꾸면 된다.
이제 생성한 폴더(request)에 대해 이 계정이 쓰기 권한을 갖게 해보자!
권한 설정에 부분은 다른 chown
, chmod
명령어를 참조한다.
cd /home/guest #경로 /home/guest 들어가기
mkdir request respond #폴더 생성
chown guest:filetransfer request #권한 설정
이렇게 하면 /, /respond 두 폴더는 쓰기권한이 없고 보기권한만 있는 상태가 되고 /request 폴더에 쓰기 권한이 주어진다.
[출처] : https://itncode.tistory.com/95, https://webdir.tistory.com/205