조건에 따라 각 사용자의 SSH 액세스를 제한합니다.

조건에 따라 각 사용자의 SSH 액세스를 제한합니다.

사용자가 SSH를 사용하여 SFTP를 통해서만 연결하도록 제한하고 동일한 사용자가 보안 쉘 터미널에 로그인하는 것을 허용하지 않는 방법이 있습니까? 나는 단지 사용자가 SFTP 클라이언트를 통해 연결할 수 있기를 원합니다. 그게 전부입니다.

답변1

응 좀 봐봐Ubuntu SFTP 계정 전용 작업 방법:

  1. 1단계 - 제한된 계정을 위한 그룹 만들기

    이 예에서는 "sftponly"라는 새 그룹을 만듭니다. 이 작업을 수행하려면 addgroup 명령을 사용하는 것이 가장 좋습니다. 새 그룹에 사용되지 않은 GID(그룹 식별자)를 할당하는 역할을 담당하기 때문입니다.

    sudo addgroup sftponly
    
  2. 2단계 - 사용자 계정 만들기

    예를 들어, 사용자 이름이 "bob"인 사용자 계정을 만들고, 홈 디렉터리를 "/home/bob"으로 설정하고, 비밀번호 "pass"를 제공합니다.

    여기서는 할당되지 않은 UID를 사용자 계정에 할당하는 useradd 명령을 사용합니다.

    사용자 계정 만들기:

    sudo useradd -d /home/bob -s /usr/lib/sftp-server -M -N -g sftponly bob
    

    암호를 설정하세요:

    sudo passwd bob 
    
  3. 3단계 - 사용자 홈 디렉터리 설정

    좋아요, Bob을 위한 집을 만들고 파일을 보관할 장소를 제공합시다. 다음 명령을 다른 줄에 하나씩 입력하십시오.

      sudo mkdir -p /home/bob/uploads /home/bob/.ssh 
      sudo chown bob:sftponly /home/bob/uploads /home/bob/.ssh 
      sudo chmod 700 /home/bob/.ssh
    

    첫 번째 줄은 '/home/bob', /home/bob/uploads' 및 '/home/bob/.ssh' 디렉터리를 생성합니다.

    두 번째 줄은 /home/bob 디렉터리의 소유자와 그룹을 루트로 설정합니다. 사용자 홈 디렉토리의 루트가 루트 사용자에게 속하지 않는 경우 SSH 서버가 불만을 표시하고 제한된 사용자 로그인을 거부하기 때문에 이는 중요한 단계입니다.

    세 번째 줄은 제한된 사용자가 이러한 디렉터리를 사용할 수 있도록 "/home/bob/uploads" 및 "/home/bob/.ssh"의 소유자와 그룹을 설정합니다. 이 예에서 "uploads" 하위 디렉터리는 파일을 저장하는 데 사용되고 ".ssh" 하위 디렉터리는 사용자의 공개 키를 저장하는 데 사용됩니다.

    이 가이드의 모든 단계를 완료한 후에는 사용자 이름과 비밀번호를 사용하여 계정에 로그인할 수 있지만 인증에는 더 안전한 공개 키 방법을 사용하는 것이 좋습니다.

    사용하려는 개인 키와 공개 키가 이미 있는 경우 사용자 홈 디렉터리의 .ssh라는 하위 디렉터리에 공개 키 복사본을 업로드하기만 하면 됩니다.

    공개 키 파일 이름이 "bob.pub"라고 가정하면 다음 명령을 실행하여 bob 사용자 계정에 대한 공개 키 인증을 설정합니다.

    cd /home/bob/.ssh cat bob.pub >> authorized_keys 
    chmod 700 authorized_keys 
    chown bob:sftponly authorized_keys 
    rm -r bob.pub
    
  4. 4단계 - /etc/shells에 항목 추가

    즐겨 사용하는 텍스트 편집기에서 루트로 /etc/shells 파일을 열고 맨 아래에 다음 줄을 추가합니다.

    /usr/lib/sftp-server
    
  5. 5단계 - SSH 서버 구성 파일 수정

    변경 작업을 시작하려면 루트로 SSH 서버 구성 파일을 엽니다. Ubuntu 시스템에서 이 파일은 일반적으로 /etc/ssh/sshd_config입니다. 다른 배포판에서는 다를 수 있으므로 미리 확인하세요.

    해당 줄을 찾아 Subsystem sftp /usr/lib/openssh/sftp-server다음과 같이 변경하세요.

    Subsystem sftp internal-sftp
    

    이제 파일 맨 아래에 다음 줄을 추가합니다.

    Match group sftponly
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    

    이 줄은 Match group sftponlySSH 서버에게 그 아래의 구성 옵션을 sftponly시스템 그룹의 모든 구성원에게 적용하도록 지시합니다.

    이 줄은 ChrootDirectory %hSSH 서버에 사용자를 자신의 홈 디렉터리로만 제한하도록 지시합니다(여기에서는 지정된 홈 디렉터리가 사용됨 %h).

    X11Forwarding no및 라인은 AllowTcpForwarding no각각 사용자가 서버의 그래픽 응용 프로그램에 액세스하고 시스템을 통해 다른 시스템에 연결하는 것을 방지합니다.

    ForceCommand internal-sftp줄은 사용자가 자신의 명령을 실행하는 것을 방지하고 사용자가 로그인할 때 "internal-sftp" 명령을 실행하여 SSH 서버의 SFTP 서버 구성 요소를 사용하도록 합니다.

  6. 6단계 - SSH 서버 다시 시작

    Ubuntu/Debian 사용자는 다음 명령을 실행하여 SSH 서버를 다시 시작할 수 있습니다.

    sudo /etc/init.d/ssh restart 
    

그게 다야. 설정한 사용자 이름과 비밀번호 또는 개인 키(2단계에서 설정한 경우)를 사용하여 "sftp" 명령을 사용하여 로그인할 수 있어야 합니다. 여기에 설명된 설정을 사용하면 1~3단계를 반복하여 새 계정을 설정할 수 있습니다.

관련 정보