Computer >> 컴퓨터 >  >> 체계 >> Linux

Linux에서 SFTP 서버를 설정하는 방법

Linux에서 SFTP 서버를 설정하는 방법

대부분의 사람들은 Linux 서버에서 또는 Linux 서버에서 파일을 전송해야 할 때 FileZilla, WinSCP 또는 기타 FTP ​​프로그램과 같은 유틸리티를 선호합니다. SFTP는 원래 FTP 프로토콜의 안전한 대안입니다. 보안되지 않은 버전과 거의 동일한 기능을 수행하지만 암호화 계층이 추가되었습니다. 이를 위해 암호화 기능을 제공하는 SSH 프로토콜을 사용합니다. Linux 시스템에서 SFTP 서버를 설정하려면 여러 단계를 거쳐야 하며 여기에서 설명합니다.

SFTP란 무엇입니까?

SFTP(Secure File Transfer Protocol)는 클라이언트에서 서버로 파일을 전송하기 위한 네트워크 프로토콜입니다. FTP(File Transfer Protocol)와 달리 SFTP는 SSH(Secure Shell) 프로토콜을 사용하여 전송되는 데이터를 암호화합니다. 1990년대 SSH 프로토콜 개발을 담당한 컴퓨터 과학자 Tatu Ylönen과 Sami Lehtinen이 개발했습니다. 그러나 최신 버전은 IETF(Internet Engineering Task Force)에서 개발한 것입니다.

이름에서 파일 전송 작업만 수행함을 나타내더라도 원격 파일 시스템 프로토콜로 설명할 수 있습니다. 클라이언트에서 수신 서버로 SFTP를 사용하여 파일을 보낼 때 데이터는 대상으로 보내기 전에 암호화됩니다. 전송 중인 데이터가 "중간자"에 의해 가로채어지면 이 제3자가 쉽게 해독할 수 없습니다.

SSH 및 OpenSSH 서버 설치

SSH와 OpenSSH 서버를 설치하여 SFTP 서버를 설정하는 과정을 시작합니다.

대부분의 Linux 설치에는 기본적으로 SSH가 이미 설치되어 있지만 시스템에 SSH가 없는 경우 Advanced Packaging Tool의 apt를 사용하여 설치할 수 있습니다. 명령:

sudo apt install ssh

SSH를 설치한 후 ssh를 실행하여 버전을 확인할 수 있습니다. -V 명령 플래그:

ssh -V
Linux에서 SFTP 서버를 설정하는 방법

예를 들어 apt를 사용하여 Debian 및 Ubuntu 시스템에 OpenSSH 서버를 설치할 수 있습니다. 명령:

sudo apt install openssh-server

pacman을 사용하여 Arch Linux에서도 동일한 작업을 수행할 수 있습니다. 명령:

sudo pacman -S openssh

SFTP용 사용자, 그룹 및 디렉토리 생성

Linux의 다른 서비스는 고유한 사용자, 그룹 및 디렉터리를 사용해야 하는 것이 일반적입니다.

SFTP 사용자를 위한 그룹을 생성하여 시작합니다. 이것은 groupadd를 사용하여 수행됩니다. 명령:

sudo groupadd sftp_group

사용자를 생성하고 useradd를 사용하여 생성된 그룹에 추가할 수 있습니다. 명령 및 해당 -g 사용자가 속할 그룹을 지정하는 데 사용되는 플래그:

sudo useradd -g sftp_group sftp_user

사용자를 생성한 후 passwd를 사용하여 암호를 할당합니다. 명령:

sudo passwd sftp_user
Linux에서 SFTP 서버를 설정하는 방법

새로 생성된 사용자의 기본 디렉토리 생성:

sudo mkdir -p /data/sftp_user/uploaded_files

chown 사용 디렉토리에 필요한 권한을 부여하는 명령:

sudo chown -R root:sftp_group /data/sftp_user
sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files

SSH 서버 구성

SFTP 서버를 설정하기 위한 다음 단계는 사용할 SSH 서버를 구성하는 것입니다.

"/etc/ssh/"에 있는 "sshd_config" 파일을 사용자가 SSH의 셸 대신 서버에 연결할 때 SFTP 셸을 사용하도록 편집합니다.

기본적으로 많은 Linux 설치에 있는 일반적으로 사용되는 Nano 편집기를 사용하여 파일을 쉽게 편집할 수 있습니다.

sudo nano /etc/ssh/sshd_config

파일 하단을 찾아 다음을 추가합니다.

Match Group sftp_group
ChrootDirectory /data/%u
ForceCommand internal-sftp
Linux에서 SFTP 서버를 설정하는 방법

SSH 서비스 다시 시작:

sudo systemtl restart sshd

(선택 사항) SFTP 포트 변경

SFTP 서버가 사용하는 포트를 기본값인 22에서 선택한 옵션으로 변경하려면 "sshd_config" 파일을 다시 한 번 편집해야 합니다.

다시 한 번 Nano 편집기를 사용하여 파일을 편집합니다.

sudo nano /etc/ssh/sshd_config

파일에서 기본 포트 값 22가 주석 처리된 줄을 찾습니다.

#Port 22

행을 주석 처리하는 데 사용되는 해시(#) 기호를 제거하고 선택한 포트 값을 추가할 수 있습니다. 제 경우에는 값을 1111로 변경합니다.

Port 1111

이제 파일을 저장하기만 하면 됩니다.

Linux에서 SFTP 서버를 설정하는 방법

서버를 다시 시작하십시오.

sudo systemctl restart sshd

로그인 및 서버 사용

W 서버가 설치 및 구성되어 사용할 준비가 되었습니다. SSH에서 제공하는 암호화된 세션으로 파일을 쉽게 업로드하고 다운로드할 수 있습니다.

로그인하기 전에 제공된 설명서를 살펴보는 것도 나쁘지 않을 것입니다.

sftp -h
Linux에서 SFTP 서버를 설정하는 방법

다음 형식으로 사용자 이름과 서버 IP 또는 호스트 이름을 제공하여 서버에 로그인합니다.

sftp USER@HOST

또한 -P를 사용하여 SFTP 서버가 사용 중인 포트(기본값은 22)를 지정할 수 있습니다. 플래그:

sftp USER@HOST -P <PORT>

로그인하면 SFTP 셸이 표시됩니다.

help를 입력하여 설명서를 보십시오. .

Linux에서 SFTP 서버를 설정하는 방법

파일 다운로드

파일을 다운로드하려면:

get /path/to/file/on/server
가져오기

예:

get /bin/ls

이것은 현재 디렉토리(서버에 로그인하기 전에 로컬에 있었던 디렉토리)로 다운로드됩니다. 특정 로컬 디렉토리에 다운로드하려면:

get /path/to/file/on/server /path/to/local/folder

디렉토리를 복사하려면 -r을 추가해야 합니다. 재귀를 나타내는 매개변수를 명령에 적용합니다.

get -r /bin /home/username/Desktop/bin
Linux에서 SFTP 서버를 설정하는 방법

이 경우 "/home/username/Desktop/bin"과 같이 로컬로 생성하려는 새 디렉터리의 이름을 추가하는 것을 잊지 마십시오. get -r /bin /home/username/Desktop을 사용하는 경우 , 파일은 바탕 화면에 직접 복사됩니다. t는 디렉토리 자체가 아니라 복사된 파일입니다.

파일 업로드

파일이나 디렉토리를 업로드할 때도 동일한 원칙을 따릅니다. 유일한 예외는 경로가 반대라는 것입니다. 즉, 먼저 로컬 파일/디렉토리를 지정한 다음 원격 경로를 지정해야 합니다.

시작하려면 put을 사용하여 서버에 파일을 업로드하십시오. 명령:

put /path/to/local/content /path/to/remote/location

디렉토리를 업로드할 때(재귀적) 이전 섹션과 동일한 규칙이 적용된다는 점을 기억하십시오. 실제로 복사되는 것은 디렉토리 자체가 아니라 디렉토리의 파일입니다. 해당 파일을 복사할 디렉토리의 새 이름을 지정하십시오.

put -r /home/username/Desktop/bin bin

이렇게 하면 원격 측에 "bin"이라는 새 디렉토리가 생성됩니다.

전송 재개 및 공백이 포함된 경로 사용

중단된 대용량 파일을 전송할 때 이전 명령을 reput으로 교체하여 재개할 수 있습니다. 및 reget . 소스와 대상이 정확히 일치하도록 마지막으로 사용한 것과 동일한 경로를 사용하는지 확인하십시오.

reget /path/to/file/on/server /path/to/local/file
reput /path/to/local/file /path/to/file/on/server

디렉토리 전송을 재개하려면 -r을 추가하기만 하면 됩니다. 매개변수:

reput -r /home/username/Desktop/bin bin

파일 경로에 공백이 포함된 경우 따옴표로 묶습니다.

put "/home/username/My Documents/Files"

기타 용도

ls를 사용하여 파일과 디렉토리를 나열할 수 있습니다. 명령:

ls -l

파일의 권한도 chmod를 사용하여 변경할 수 있습니다. 명령:

chmod <PERMISSION> <FILE>

또한 mkdir 명령을 사용하여 새 디렉터리를 만들 수 있습니다.

mkdir <DIRECTORY_NAME>

자주 묻는 질문(FAQ)

1. SFTP 클라이언트를 설치해야 합니까?

대부분의 Linux 시스템에는 기본적으로 터미널 기반 SFTP 클라이언트가 설치되어 있기 때문에 대부분의 경우 그렇지 않습니다.

2. 공개 키 인증을 사용할 수 있습니까?

예, 인증 방법으로 비밀번호 대신 공개 키 인증을 사용할 수 있습니다. 설정은 매우 간단하며 서버에 추가 보안을 제공합니다.

3. SSH 서버를 동시에 호스팅할 수 있습니까?

네. 그러나 SFTP 서버가 SSH 서버와 동일한 포트를 사용하고 있지 않은지 확인해야 합니다.