如何允许一些 SFTP 用户也进行 SSH 访问?

如何允许一些 SFTP 用户也进行 SSH 访问?

我正在为一个团队部署一个 SFTP 服务器,但其中一些用户也需要 SSH 访问权限来管理服务器。

PAM 与我们的 AD 是 sssd。因此我无法为他们创建单独的本地用户以用于 SSH,或创建单独的 AD 帐户仅用于 SSH 访问。

目前,我有这个:

Match group server_ftp-only
ChrootDirectory /shared
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

如果我删除 ForceCommand internal-sftp,将允许用户同时使用 SFTP 和 SSH,但我不希望所有用户都使用 SFTP,只希望几个用户使用。

我尝试添加这个:

Match group server_admins
AllowUsers *

但它不起作用。看来原始 Match 组覆盖了第二个 Match 组。

一种可能的解决方案是将 SSH 用户从 server_ftp-only 安全组中删除并放入 server_admins 组,然后创建一个 Match 组 server_admins 而不使用 ForceCommand internal-sftp,但 server_ftp-only 组由团队组填充(Team-A > server_ftp-only)。我真的无法创建其他组并将这些用户与他们的团队组分开。

答案1

您的问题部分在于,据我所知,没有办法使用条件Match块来取消设置 ForceCommand为全局默认值或由另一个 Match 条件设置的 when。

那么你做不到

# /etc/ssh/sshd_config
    # global config ...

    # Enable the internal SFTP server and restrict all users to only SFTP
 
    Subsystem sftp internal-sftp
    ForceCommand internal-sftp
    ChrootDirectory /shared
    
    # ... 
    
    # Override and remove the ForceCommand sftp-only restriction 
    # for users in the server_admins group 
    
    Match group server_admins
        ChrootDirectory none   <=== this does exist
        ForceCommand    none   <=== this does NOT exist

您可以通过实施不同的策略来解决这个问题:不要将其设置ForceCommand为默认值,保持默认值稍微宽松一些,然后创建一个稍微复杂一些的Match否定模式使其适用于所有人(*),除了成员server_admins然后你可以覆盖默认值并添加限制:

# /etc/ssh/sshd_config
# ... 
# your current global config
#
# Enable the internal sftp server but do not set the ForceCommand 

Subsystem sftp internal-sftp

# ... 

# Everybody except members of the server_admins group are restricted to SFTP

Match group !server_admins,* 
    ForceCommand internal-sftp
    ChrootDirectory /shared
    X11Forwarding no
    AllowTcpForwarding no

和类似匹配的成员server_ftp-only不是server_admins

Match group !server_admins,server_ftp-only 
    ForceCommand internal-sftp
    ...

相关内容