SSH'yi etkinleştirmek ve SFTP'yi hem genel olarak hem de kullanıcı / grup başına devre dışı bırakmak mümkündür.
Kişisel olarak buna ihtiyacım var çünkü SSH üzerindeki bazı git depolarına erişim vermek istiyorum ve gerekmeyen sistemleri devre dışı bırakmayı seviyorum. Bu durumda SFTP gerekli değildir.
Küresel
Tüm kullanıcılar için SFTP'yi birkaç şekilde devre dışı bırakabilirsiniz.
Eksik alt sistem
SSH tarafından kullanılan SFTP arka plan programı Subsystem
anahtar kelime ile yapılandırılabilir . Gönderen sshd_config(5)
manuel:
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.
Son satır, "sftp" için herhangi bir alt sistemi tanımlamamanın yeterli olduğunu göstermektedir.
Sahte bir yalan
Ayrıca SSH tarafından kullanılan SFTP arka planını kullanılamaz bir şeye ayarlayarak SFTP'yi devre dışı bırakabilirsiniz. Örneğin, "sftp" alt sistemini şu şekilde yapılandırın /bin/false
:
Subsystem sftp /bin/false
Bir şey SFTP aracılığıyla giriş yapmaya çalıştığında, SSH arka plan programı "sftp arka planını" oluşturmaya çalışırdı /bin/false
. /bin/false
Program tek bir şey yapar ve bu bir hata kodu döndürmektir. SFTP bağlantısı girişimi etkin bir şekilde reddedildi.
Kullanıcı / grup başına
Ayrıca, kullanıcı, grup veya diğer birkaç kriter için SFTP'yi devre dışı bırakmak da mümkündür.
Kullanıcınızın normal bir kabuk istemi almasını istiyorsanız bu işe yaramaz. Kabuk erişiminiz varsa, çoğu şeyi aşağılayacağınız için anlamlı değildir.
Yalnızca belirli bir programa erişim vermek istiyorsanız çalışır.
Eşleştirme
Bir kullanıcı grubuyla 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şiyor
Match User stephen,maria
"stephen" ve "maria" kullanıcıları ile eşleşir
Match Group wheel,adams,simpsons
"tekerlek", "adams", "simpsons" grupları ile eşleşir
Daha fazla bilgi istiyorsanız, sshd_config(5)
kılavuzda yükler var .
Zorla komut
Normalde, SSH ile bağlandığınızda kullanıcının oturum açma kabuğunu alırsınız, ancak SSH belirli bir komutu zorlamak için yapılandırılabilir. Komut, SFTP de dahil olmak üzere herhangi bir SSH bağlantısı için zorlanır ve bu nedenle istediğiniz komutu zorlama seçeneğiniz olabilir.
Zorla komutu, ForceCommand
anahtar kelimeyle 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 sınırlı komutu zorlayabilirsiniz ForceCommand <your command>
. Örneğin:
Match User kim
ForceCommand echo 'successful login man, congrats'
Örnek
Git erişimi vermek istediğim durumda, sadece kullanıcının erişebilmesi için ihtiyacım var git-shell
. Bu, bazı güvenlik seçenekleriyle birlikte git kullanıcılarım için SFTP'yi 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