Como permitir o acesso SSH de alguns usuários do SFTP também?

Como permitir o acesso SSH de alguns usuários do SFTP também?

Estou implantando um servidor SFTP para uma equipe, mas alguns desses usuários também precisam de acesso SSH para administrar o servidor.

PAM é sssd com nosso AD. Portanto, não posso criar usuários locais separados para eles usarem no SSH ou criar contas AD separadas apenas para acesso SSH.

Atualmente, tenho isso:

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

Se eu remover o ForceCommand internal-sftp, isso permitirá aos usuários SFTP e SSH, mas não quero que todos os usuários usem SFTP, apenas alguns usuários.

Eu tentei adicionar isto:

Match group server_admins
AllowUsers *

Mas não funciona. Parece que o grupo Match original substitui este segundo grupo Match.

Uma solução possível seria remover os usuários SSH do grupo de segurança server_ftp-only e entrar no grupo server_admins e, em seguida, criar um grupo Match server_admins sem ForceCommand internal-sftp, mas o grupo server_ftp-only é preenchido por grupos de equipe (Equipe-A> server_ftp somente). Realmente não consigo criar grupos adicionais e separar esses usuários de seus grupos de equipe.

Responder1

Seu problema é, em parte, que não há, até onde eu sei, nenhuma maneira de usar um Matchbloco condicional para desativar ForceCommandquando ele é definido como padrão global ou definido por outro Match condicional.

Então vocênão posso fazer:

# /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

Você resolve isso implementando uma estratégia diferente: não defina ForceCommandcomo padrão, mantenha os padrões um pouco relaxados e então crie um pouco mais complicadoMatchbloco com umpadrão negadopara que se aplique a todos ( *),excetoos membros deserver_adminse aí você substitui os padrões e adiciona restrições:

# /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

E semelhante para combinar com os membros deserver_ftp-onlyque também não são membrosserver_admins

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

informação relacionada