답변:
모두 sftp-server
와 internal-sftp
OpenSSH를의 일부입니다. sftp-server
독립형 바이너리입니다. internal-sftp
는 다른 프로세스 (일반적으로 ) 를 실행하는 대신 sshd
SFTP 서버 코드 내장을 사용 하도록 지시하는 구성 키워드 일뿐 입니다.sshd
sftp-server
보기의 기능적인 관점에서, sftp-server
그리고 것은 internal-sftp
거의 동일하다. 그것들은 동일한 소스 코드로 만들어졌습니다.
주요 장점은 지시문internal-sftp
과 함께 사용될 때 지원 파일이 필요 없다는 것 입니다.ChrootDirectory
sshd_config(5)
맨 페이지 에서 인용 :
에 대한 Subsystem
지침 :
이 명령
sftp-server
은 SFTP 파일 전송 서브 시스템을 구현합니다.또는 이름
internal-sftp
이 처리중인 SFTP 서버를 구현합니다. 이렇게ChrootDirectory
하면 클라이언트에서 다른 파일 시스템 루트를 강제로 사용하여 구성을 단순화 할 수 있습니다.
에 대한 ForceCommand
지침 :
명령을 지정
internal-sftp
하면와 함께 사용될 때 지원 파일이 필요없는 프로세스 내 SFTP 서버를 강제로 사용합니다ChrootDirectory
.
에 대한 ChrootDirectory
지침 :
는
ChrootDirectory
사용자의 세션을 지원하는 데 필요한 파일과 디렉토리를 포함해야합니다. 대화 형 세션이 적어도 일반적으로 쉘, 필요sh
, 기본/dev
과 같은 노드를null
,zero
,stdin
,stdout
,stderr
, 및tty
장치. SFTP를 사용하는 파일 전송 세션의 경우 프로세스 내 sftp-server를 사용하는 경우 환경을 추가로 구성 할 필요가 없지만 로깅을 사용하는 세션/dev/log
은 일부 운영 체제의 chroot 디렉토리 내부에 필요할 수 있습니다 (sftp-server
자세한 내용 참조).
다른 internal-sftp
하위 프로세스를 실행할 필요가 없으므로 성능 의 또 다른 장점이 있습니다.
는 internal-sftp
독립보다 (? 2008 년의 OpenSSH 4.9p1) 훨씬 나중에 추가 된 sftp-server
바이너리,하지만 지금 기본값입니다.
sftp-server
새로운 설치 에 사용할 이유가 없다고 생각 합니다.
기능이 동일하고 위의 장점을 갖기 때문에 sshd
자동으로 사용할 수있는 것처럼 보일 수 있습니다 . 그러나 차이점이있는 경우가 있습니다.internal-sftp
sftp-server
internal-sftp
몇 가지 예 :
관리자는 로그인 셸 구성을 사용하여 특정 사용자가 로그인하지 못하도록 할 수 있습니다. internal-sftp
로그인 셸이 더 이상 관여하지 않기 때문에 로그인으로 전환 하면 제한이 무시됩니다.
사용 sftp-server
바이너리 당신은 같은 몇 가지 해킹을 사용할 수 있습니다 (독립 과정 인) 에서 SFTP를 실행sudo
.
SSH-1의 경우 (아직도 사용중인 경우) Subsystem
지시문이 전혀 관련되지 않습니다. SSH-1을 사용하는 SFTP 클라이언트는 서버에게 서버가 어떤 바이너리를 실행해야하는지 명시 적으로 알려줍니다. 따라서 레거시 SSH-1 SFTP 클라이언트의 sftp-server
이름은 하드 코딩되었습니다.
OpenSSH와 함께 사용할 수있는 대체 SFTP 구현이 있습니다.
Authorized_key를 외부 sftp-server에 잠글 수 있습니다.
command = "/ usr / libexec / openssh / sftp-server"ssh-rsa AAAA… == user@host.com
그렇게하면 사용자는 sftp를 사용할 수 있지만 scp 또는 ssh는 할 수 없습니다.
$ sftp 호스트 : / etc / group / tmp 호스트에 연결하는 중 ... / etc / group을 / tmp / group으로 가져 오는 중 / etc / group 100 % 870 0.9KB / s 00:00
다른 작업을 시도하면 중단됩니다.
$ scp 호스트 : / etc / group / tmp 신호 2에 의해 사망. $ ssh 호스트 가동 시간 신호 2에 의해 사망.
아아, sshd_config를 수정하지 않으면 키를 chroot에 고정하는 쉬운 방법이 없습니다. 시스템 관리자의 개입없이 사용자가 할 수있는 것은 정말 멋진 일입니다.
sshfs host:/home/user/.ssh ~/hackme
나중에 마음이 바뀌면 모든 설정을 다시 열어 액세스 권한을 열어 편집 할 수 있다는 것 입니다.
ForceCommand internal-sftp
같은 달성한다