¿Cómo permitir que algunos usuarios de SFTP también accedan a SSH?

¿Cómo permitir que algunos usuarios de SFTP también accedan a SSH?

Estoy implementando un servidor SFTP para un equipo, pero algunos de esos usuarios también necesitan acceso SSH para administrar el servidor.

PAM está sssd con nuestro AD. Por lo tanto, no puedo crear usuarios locales separados para que los usen para SSH, o crear cuentas AD separadas solo para acceso SSH.

Actualmente tengo esto:

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

Si elimino ForceCommand internal-sftp, eso permitirá a los usuarios usar SFTP y SSH, pero no quiero que todos los usuarios usen SFTP, solo un par de usuarios.

Intenté agregar esto:

Match group server_admins
AllowUsers *

Pero no funciona. Parece que el grupo Match original anula este segundo grupo Match.

Una posible solución sería eliminar a los usuarios SSH del grupo de seguridad server_ftp-only y del grupo server_admins, luego crear un grupo Match server_admins sin ForceCommand internal-sftp, pero el grupo server_ftp-only está poblado por grupos de equipos (Equipo-A > server_ftp-solo). Realmente no puedo crear grupos adicionales y separar a estos usuarios de sus grupos de equipo.

Respuesta1

Su problema es en parte que, hasta donde yo sé, no hay forma de usar un Matchbloque condicional para desarmar el ForceCommandmomento en que está configurado como valor predeterminado global o establecido por otro condicional de coincidencia.

Vos tambienno puedo hacer:

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

Esto se resuelve implementando una estrategia diferente: no establecer los valores predeterminados ForceCommandcomo predeterminados, mantener los valores predeterminados algo relajados y luego crear un entorno un poco más complicado.Matchbloquear con unpatrón negadopara que se aplique a todos ( *),exceptolos miembros deserver_adminsy allí anulas los valores predeterminados y agregas restricciones:

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

Y similar para coincidir con los miembros deserver_ftp-onlyque no son también miembros deserver_admins

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

información relacionada