SSH를 활성화하고 전체 및 사용자 / 그룹별로 SFTP를 비활성화 할 수 있습니다.
SSH를 통해 일부 자식 리포지토리에 액세스하고 싶기 때문에 개인적으로 필요하며 필요하지 않은 시스템을 비활성화하고 싶습니다. 이 경우 SFTP가 필요하지 않습니다.
전 세계적으로
몇 가지 방법으로 모든 사용자에 대해 SFTP를 비활성화 할 수 있습니다.
누락 된 서브 시스템
SSH에서 사용하는 SFTP 데몬은 Subsystem
키워드를 통해 구성 할 수 있습니다 . 로부터 sshd_config(5)
수동 :
Subsystem
Configures an external subsystem (e.g. file transfer daemon).
Arguments should be a subsystem name and a command (with optional
arguments) to execute upon subsystem request.
The command sftp-server(8) implements the “sftp” file transfer
subsystem.
Alternately the name “internal-sftp” implements an in-process
“sftp” server. This may simplify configurations using
ChrootDirectory to force a different filesystem root on clients.
By default no subsystems are defined.
마지막 줄은 "sftp"에 대한 서브 시스템을 정의 할 수 없을 것임을 제안합니다.
거짓 거짓말
SSH에서 사용하는 SFTP 데몬을 사용할 수없는 것으로 설정하여 SFTP를 비활성화 할 수도 있습니다. 예를 들어, "sftp"서브 시스템을 /bin/false
다음 과 같이 구성하십시오 .
Subsystem sftp /bin/false
SFTP를 통해 로그인을 시도하면 SSH 데몬이 "sftp 데몬"을 생성하려고 시도합니다 /bin/false
. /bin/false
프로그램은 하나의 일을, 그 오류 코드를 반환하는 것입니다. SFTP 연결 시도가 효과적으로 거부되었습니다.
사용자 / 그룹당
사용자, 그룹 또는 몇 가지 다른 기준별로 SFTP를 비활성화 할 수도 있습니다.
사용자에게 일반 쉘 프롬프트를 표시하려는 경우에는 작동하지 않습니다. 쉘 액세스 권한이 있으면 대부분의 항목을 우회 할 수 있으므로 의미가 없습니다.
특정 프로그램에 대한 액세스 권한 만 부여하려는 경우에만 작동합니다.
어울리는
사용자 세트와 일치시키기 위해 Match
키워드를 사용하여 SSH를 구성 할 수 있습니다 . 로부터 sshd_config(5)
수동 :
Match
...
The arguments to Match are one or more criteria-pattern pairs or the
single token All which matches all criteria. The available criteria
are User, Group, Host, LocalAddress, LocalPort, and Address. The
match patterns may consist of single entries or comma-separated
lists and may use the wildcard and negation operators described in
the PATTERNS section of ssh_config(5).
...
몇 가지 예 :
Match User eva
"eva"사용자와 일치
Match User stephen,maria
"stephen"및 "maria"사용자와 일치
Match Group wheel,adams,simpsons
"바퀴", "아담", "심슨"그룹과 일치
자세한 정보가 필요하면 sshd_config(5)
매뉴얼에 로드가 있습니다.
강제 명령
일반적으로 SSH를 통해 연결하면 사용자의 로그인 쉘이 표시되지만 특정 명령을 강제 실행하도록 SSH를 구성 할 수 있습니다. SFTP를 포함한 모든 SSH 연결에 대해 명령이 강제 실행되므로 원하는 명령을 강제 실행하는 옵션이있을 수 있습니다.
ForceCommand
키워드 로 강제 명령을 구성 할 수 있습니다 . 로부터
sshd_config(5)
수동 :
ForceCommand
Forces the execution of the command specified by ForceCommand,
ignoring any command supplied by the client and ~/.ssh/rc if
present. The command is invoked by using the user's login shell
with the -c option. This applies to shell, command, or subsystem
execution. It is most useful inside a Match block. The command
originally supplied by the client is available in the
SSH_ORIGINAL_COMMAND environment variable. Specifying a command of
“internal-sftp” will force the use of an in-process sftp server that
requires no support files when used with ChrootDirectory. The
default is “none”.
따라서 사용하려는 제한 명령을 강제로 실행할 수 있습니다 ForceCommand <your command>
. 예를 들면 다음과 같습니다.
Match User kim
ForceCommand echo 'successful login man, congrats'
예
git 액세스 권한을 부여하려는 경우 사용자에게만 액세스 권한이 필요합니다 git-shell
. 다음은 일부 보안 옵션과 함께 내 git 사용자에 대해 SFTP를 비활성화하는 섹션입니다.
Match Group git
# have to do this instead of setting the login shell to `git-shell`,
# to disable SFTP
ForceCommand /usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"
# disable stuff we don't need
AllowAgentForwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
PermitOpen none
PermitTunnel no
PermitTTY no
X11Forwarding no