몇몇 친구를 위해 SSH 폴더를 만들었습니다. SSH를 통해 로그인할 사용자를 생성했지만 해당 사용자가 연결되어 있습니다. ~
연결할 수 있는 폴더를 어떻게 설정합니까?
내 USB 드라이브를 가리키는 /usbdrv/라는 디렉터리가 있습니다.
추신: 상위 디렉토리에 들어갈 수 없습니다.
답변1
사용자의 홈 디렉터리를 설정하면 기본적으로 해당 디렉터리가 결정됩니다. 파일 시스템의 나머지 부분은 사용자에게 표시됩니다.
계정을 파일 전송으로 제한하고 특정 디렉토리 트리에만 액세스할 수 있도록 하려면 사용자를 "감옥"해야 합니다. 이것은OpenSSH 기본 지원friends
;예를 들어, 이 친구들(그리고 그들만)을 그룹에 넣는다면 :
Match Group friends
ForceCommand internal-sftp
ChrootDirectory %h
#AuthorizedKeysFile /etc/sshd/friends/%u.authorized_keys
ChrootDirectory
이러한 사용자를 홈 디렉터리로 제한합니다 . 모두 동일한 홈 디렉토리를 가지고 있다면 모두 동일한 SSH 키를 사용할 수 있지만 이는 아마도 원하는 것이 아닐 것입니다. AuthorizedKeysFile
이러한 사용자가 자신의 인증 키를 업로드할 수 없도록 하려면 이 줄의 주석 처리를 해제하세요.
인증 관점에서 이러한 사용자를 독립적으로 처리하고, 자신의 키를 조작할 수 없도록 하고, 동일한 디렉터리 트리에 대한 모든 액세스 권한을 부여하려는 경우 특정 디렉터리를 설정할 수 있습니다.
Match Group friends
ForceCommand internal-sftp
ChrootDirectory /pub
이러한 사용자가 파일 시스템의 여러 부분에 액세스할 수 있도록 하려면 바인드 마운트를 사용하여 결합된 보기를 생성할 수 있습니다.
ForceCommand internal-sftp
이러한 사용자를 SFTP 액세스로만 제한하십시오(예: Filezilla 사용 또는 SSHFS 사용). 다른 방법(예: rsync)을 허용하려면 다음이 필요합니다.더 고급 구성, 예를 들어 다음을 사용하여RSSH(읽다chroot가이드).
답변2
특별히 사용자를 만들지 않는 한아니요홈 디렉토리, 표준 디렉토리는 에 생성됩니다 /home/username
. 이 디렉토리는 ~
현재 쉘 또는 SSH 사용자의 해당 위치에 대한 링크일 뿐입니다./home/username
예를 들어 cd ~
루트 또는 지정된 사용자로 실행되는 경우 이 명령은 사용자를 다른 위치로 보냅니다.
사용자를 지정할 수 있습니다.사용자의 홈 디렉토리를 생성하거나 다른 홈 디렉토리로 이동합니다.. 사용자의 현재 홈 디렉토리를 변경하려면 루트로 다음 명령을 실행하십시오.
usermod -m -d /path/to/new/home/dir username
새 디렉터리 구조에 대한 올바른 소유권과 권한이 있는지 확인하세요.
당신은 또한 선택할 수 있습니다기본 SSH 디렉토리 변경. 하지만 IMHO가 더 안전해 보이기 때문에 홈 디렉토리를 이동하고 싶을 수도 있습니다.