Có thể kích hoạt SFTP trên toàn cầu và chỉ vô hiệu hóa SFTP cho một số người dùng.
Điều này không hoạt động nếu bạn muốn người dùng của mình nhận được một dấu nhắc shell thông thường. Cũng không có nghĩa gì, vì bạn có thể phá vỡ hầu hết mọi thứ nếu bạn có quyền truy cập shell.
Nó sẽ chỉ hoạt động nếu bạn chỉ muốn cấp quyền truy cập vào một chương trình cụ thể.
Cá nhân tôi cần điều này bởi vì tôi muốn cấp quyền truy cập vào một số kho git qua SSH và tôi muốn vô hiệu hóa các hệ thống không cần thiết. Trong trường hợp đó SFTP là không cần thiết.
Phù hợp
Để khớp với nhóm người dùng, bạn có thể định cấu hình SSH với Match
từ khóa. Từ sshd_config(5)
hướng dẫn:
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).
...
Một vài ví dụ:
Match User eva
phù hợp với người dùng "eva"
Match User stephen,maria
phù hợp với người dùng "stephen" và "maria"
Match Group wheel,adams,simpsons
phù hợp với các nhóm "bánh xe", "adams", "simpsons"
Nếu bạn muốn biết thêm thông tin, có tải trong sshd_config(5)
hướng dẫn.
Lệnh cưỡng bức
Thông thường, bạn nhận được vỏ đăng nhập của người dùng khi bạn kết nối qua SSH, nhưng SSH có thể được cấu hình để buộc một lệnh nhất định. Lệnh bị buộc đối với mọi kết nối SSH, bao gồm SFTP, và do đó bạn có thể có tùy chọn để buộc lệnh bạn muốn.
Lệnh bắt buộc có thể được cấu hình với ForceCommand
từ khóa. Từ
sshd_config(5)
hướng dẫn:
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”.
Vì vậy, bạn có thể buộc lệnh bị ràng buộc mà bạn muốn sử dụng ForceCommand <your command>
. Ví dụ:
Match User kim
ForceCommand echo 'successful login man, congrats'
Thí dụ
Trong trường hợp tôi muốn cấp quyền truy cập git, tôi chỉ cần người dùng có quyền truy cập git-shell
. Đây là phần vô hiệu hóa SFTP cho người dùng git của tôi, cùng với một số tùy chọn bảo mật:
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
để truy cập ra ngoài. Điều này giả định rằng bạn sẽ được thử nghiệm bởi một đội đỏ. Nếu tất cả mọi người truy cập vào hệ thống của bạn luôn tuân thủ các quy tắc và không bao giờ có ý định xấu, thì cách tiếp cận của tôi sẽ rất nặng nề và quá phức tạp.