Ubuntu 18.04에서 쉘 액세스없이 SSH 파일 전송 프로토콜 (SFTP)을 구성하는 방법

소개

SFTP (SSH File Transfer Protocol)는 SSH (Secure Shell) 기능의 전체 인증 및 보안을 활용하는 안전하고 강력한 파일 전송 프로토콜입니다. 레거시 FTP 및 FTP / S 프로토콜에 대한 최상의 대안 중 하나이지만 고급 기능을 제공하지만 구성하기 쉽고 안정적이며 안전합니다..


SFTP는 암호화 및 암호화 해시 기능을 사용하여 데이터의 무결성을 보호합니다. 또한 MITM (Man-in-the-Middle) 공격 및 암호 스니핑으로부터 보호 할 수있는 기능은 최고입니다..

많은 이점을 제공하지만이 프로토콜은 SSH 액세스가 활성화 된 서버에서 추가 구성이 제공되지 않습니다. SSH 서버는 기본적으로 시스템 계정을 가진 사용자에게 터미널 셸 액세스 및 파일 전송 액세스를 허용하기 때문에 이는 큰 장애입니다..

그러나 경우에 따라 SSH 액세스를 제한하면서 일부 사용자 파일 전송 액세스를 제공하는 것이 항상 중요합니다. 이 안내서는 단일 디렉토리에 대한 SFTP 액세스를 금지하고 사용자별로 SSH 액세스를 제한하는 SSH 데몬을 구성하는 방법을 보여줍니다..

준비된? 가자!

전제 조건

이 프로세스가 원활하게 실행 되려면 다음이 필요합니다.

  • 우분투 18.04 VPS 또는 전용 서버
  • sudo 권한이있는 사용자 (비 루트)
  • 방화벽 사용

1 단계-사용자 구성

튜토리얼의 첫 번째 단계는 파일 전송 권한을 부여하려는 새 사용자를 만드는 것입니다. 우리의 경우에는 hostadvicefiles 사용자 이름으로; 다른 사용자 이름을 사용하십시오. 아래 명령을 실행하여 사용자를 작성하십시오.

$ sudo adduser hostadvicefiles

위 명령을 실행하면이 계정에 대한 새 비밀번호를 입력하라는 메시지가 표시됩니다. 또한 사용자에 관한 추가 정보를 제공하라는 메시지가 표시됩니다. 사용자 이름 정보를 제공 할 필요는 없습니다. 선택 사항입니다. 사용자 이름 세부 정보를 제공하지 않으려면 간단히 시작하다.

이제 새로운 사용자를 만들었습니다. 이제 파일 전송 디렉토리를 작성하고 권한을 구성 할 수 있습니다..

2 단계-파일 전송 디렉토리 작성

모든 디렉토리에 대한 SFTP 파일 액세스를 성공적으로 제한하려면 디렉토리는 SSH 서버에 대한 모든 권한 요구 사항을 준수해야합니다. 특히, 파일 시스템 구조에서 이러한 디렉토리와 그 위의 다른 폴더는 루트에 속해야하며 루트 만 쓸 수 있어야합니다. 또한 홈 디렉토리가 루트가 아닌 사용자에게 속하기 때문에 홈 디렉토리에 대한 액세스를 제한 할 수 없다는 점도 주목할 가치가 있습니다..

소유권 문제를 피하기 위해 새 디렉토리를 만듭니다. / var / sftp / uploads 중앙 업로드 디렉토리로 사용하십시오. 그만큼 / var / sftp 는 루트에 속하며 사용자는이 파일을 편집 할 권한이 없습니다. 1 단계에서 만든 사용자 (hostadvicefiles)는 하위 디렉토리를 소유합니다 / var / sftp / uploads, 파일을이 폴더로 이동할 수있는 권한이 있습니다.

먼저 아래 명령을 실행하여 새 디렉토리를 만드십시오.

$ sudo mkdir -p / var / sftp / uploads

그런 다음 아래 명령을 실행하여 루트를 / var / sftp 소유자:

$ sudo chown root : 루트 / var / sftp

이제 루트 쓰기 권한을 / var / sftp에 부여하고 다른 사용자 만 실행 및 쓰기를 허용해야합니다..

$ sudo chmod 755 / var / sftp

아래 명령을 실행하여 사용자 (hostadvicefiles)에게 / var / sftp / uploads에 소유권을 부여하십시오.

$ sudo chown sammyfiles : sammyfiles / var / sftp / uploads

그게 다야! 디렉토리의 구조가 설정되었으며 이제 다음 단계로 진행할 수 있습니다.

3 단계-SSH 서버 구성 수정

여기서는 파일 전송 액세스를 허용하고 사용자 (hostadvicefile)에 대한 터미널 액세스를 제한하도록 SSH (Secure Shell) 서버 구성 설정을 변경합니다..

먼저 아래 명령을 실행하여 SSH 서버의 구성 파일을여십시오.

$ sudo nano / etc / ssh / sshd_config

이 파일의 맨 아래에 다음 스 니펫을 추가하십시오.

MatchUserhostAdvicefiles
내부 명령 -Sftp
비밀번호 인증 예
ChrootDirectory / var / sftp
허가하다
AllowAgentForwardingno
AllowTcpForwardingno
X11Forwardingno

이 파일을 저장하고 종료하십시오.

위의 구성 스 니펫의 각 부분에 대한 설명은 다음과 같습니다.

  • 사용자 일치 : 이것은 SSH 서버가 hostadvicefiles에 엄격하게 명령을 구현하도록 지시합니다.
  • ForceCommand 내부 FTP:이 부분은 로그인 중에 쉘 액세스를 허용하지 않도록 SFTP 서버를 시작하도록 SSH에 명령합니다..
  • 비밀번호 인증 예: 사용자의 비밀번호 확인 프롬프트
  • ChrootDirectory / var / sftp / :  사용자가 디렉토리를 넘어서는 아무것도 액세스하지 못하도록하는 데 사용됩니다. / var / sftp
  • 마지막 세 부분은 순서대로 포트 전달, 터널링 및 X11 전달을 비활성화합니다..

위의 명령 세트는 다른 사용자에게도 복제 될 수 있습니다. 관심있는 사용자의 사용자 이름과 일치하도록 사용자 이름 만 변경하면됩니다..

이제 아래 명령을 실행하여 SSH 서버를 다시 시작하고 구성에 대한 모든 변경 사항을 구현할 수 있습니다.

$ sudo systemctl restart sshd

4 단계-구성 인증

이제 사용자에게 파일 만 이동할 수있는 권한이 있는지 확인해야합니다. 표준 쉘 액세스를 통해 호스트 어드바이스 파일로 서버에 로그인하십시오.

$ ssh hostadvicefiles @ localhost

원래 프롬프트로 돌아 가기 전에 아래 오류 메시지가 표시됩니다.

이 서비스는 sftp 연결 만 허용합니다.
로컬 호스트에 대한 연결이 닫혔습니다..

이는 사용자 (hostadvicefiles)가 SSH를 사용하여 쉘 서버에 로그인 할 수 없음을 나타냅니다. 다음으로 아래 명령을 실행하여 hostadvicefiles가 SFTP에 액세스 할 수 있는지 확인하십시오.

$ sftp hostadvicefiles @ localhost

모든 것이 정상이면 아래 메시지가 나타납니다.

localhost에 연결.
sftp>

SFTP 프롬프트에서 아래 명령을 실행하여 모든 디렉토리 내용을보십시오.

sftp> ls

그러면 2 단계에서 만든 업로드 디렉토리를 보여주는 출력이 제공됩니다..

업로드

바로 위의 다른 디렉토리로 변경하십시오.

sftp>CD ..

이 명령은 아무런 변화도주지 않습니다. 목록 명령으로 출력 된 모든 디렉토리 파일을 나열합니다. 이는 hostadvicefiles가 상위 디렉토리로 전환 될 수 없음을 의미합니다. 구성이 성공했음을 나타내며 SFTP 파일 전송 프로토콜을 통해 사용자 (hostadvicefiles) 만 서버에 로그인 할 수 있습니다..

결론

그게 다야! 우리는 사용자가 완전한 쉘 액세스없이 하나의 디렉토리에 액세스 할 수 있도록 SSH 파일 전송 프로토콜을 구성했습니다. 이 구성을 여러 사용자에게 복제하려는 경우 각 사용자에 대해 프로세스를 반복하십시오..

이 3 가지 Linux 호스팅 서비스를 확인하십시오.

FastComet

시작 가격 :
$ 2.95


신뢰할 수 있음
9.7


가격
9.5


사용자 친화적
9.7


지원하다
9.7


풍모
9.6

리뷰 읽기

FastComet 방문

주인공

시작 가격 :
$ 0.99


신뢰할 수 있음
9.3


가격
9.3


사용자 친화적
9.4


지원하다
9.4


풍모
9.2

리뷰 읽기

Hostinger 방문

ChemiCloud

시작 가격 :
$ 2.76


신뢰할 수 있음
10


가격
9.9


사용자 친화적
9.9


지원하다
10


풍모
9.9

리뷰 읽기

ChemiCloud 방문

관련 사용법 기사

  • Ubuntu 18.04 VPS 또는 전용 서버에 Ark 서버를 설치하는 방법
    전문가
  • Ubuntu 18.04 서버에서 Mosquitto MQTT를 설치하고 구성하는 방법?
    중급
  • Ubuntu 18.04 VPS 또는 전용 서버의 다른 디렉토리로 Apache 웹 루트를 변경하는 방법
    중급
  • 우분투 18.04에 phpIPAM을 설치하는 방법
    중급
  • Ubuntu 18.04 서버에서 바닐라 포럼을 설정하는 방법
    중급
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me