SFTP'yi global olarak etkinleştirmek ve SFTP'yi yalnızca bazı kullanıcılar için devre dışı bırakmak mümkündür.
Kullanıcınızın düzenli bir kabuk istemi almasını istiyorsanız bu çalışmaz. Kabuk erişiminiz varsa çoğu şeyi atlatabileceğiniz için de mantıklı değil.
Yalnızca belirli bir programa erişim vermek istiyorsanız çalışır.
Şahsen buna ihtiyacım var çünkü SSH üzerinden bazı git depolarına erişim vermek istiyorum ve gerekli olmayan sistemleri devre dışı bırakmak istiyorum. Bu durumda SFTP'ye gerek yoktur.
Eşleştirme
Bir grup kullanıcıyı eşleştirmek için SSH'yi Match
anahtar kelimeyle yapılandırabilirsiniz . Gönderen sshd_config(5)
manuel:
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).
...
Birkaç örnek:
Match User eva
"eva" kullanıcısıyla eşleşir
Match User stephen,maria
"stephen" ve "maria" kullanıcılarıyla eşleşir
Match Group wheel,adams,simpsons
"wheel", "adams", "simpsons" gruplarıyla eşleşir
Daha fazla bilgi istiyorsanız, sshd_config(5)
kılavuzda yükler vardır .
Zorla komut
Normalde, SSH aracılığıyla bağlandığınızda kullanıcının oturum açma kabuğunu alırsınız, ancak SSH belirli bir komutu zorlayacak şekilde yapılandırılabilir. Komut, SFTP dahil olmak üzere herhangi bir SSH bağlantısı için zorlanır ve bu nedenle istediğiniz komutu zorlama seçeneğiniz olabilir.
Zorlama komutu ForceCommand
anahtar sözcükle yapılandırılabilir . Gönderen
sshd_config(5)
manuel:
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”.
Böylece kullanmak istediğiniz kısıtlanmış komutu zorlayabilirsiniz ForceCommand <your command>
. Örneğin:
Match User kim
ForceCommand echo 'successful login man, congrats'
Misal
Git erişim izni vermek istediğim durumda, sadece kullanıcının erişimine ihtiyacım var git-shell
. Bu, git kullanıcılarım için SFTP'yi ve bazı güvenlik seçeneklerini devre dışı bırakan bölümdür:
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
owner
giden erişim modülü . Bu, kırmızı takım tarafından kalem testi yapılacağını varsayar. Sisteminize erişen herkes her zaman kurallara uyuyor ve asla kötü niyetli olmuyorsa, yaklaşımım ağır ve aşırı karmaşık olurdu.