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 Match
bloque condicional para desarmar el ForceCommand
momento 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 ForceCommand
como predeterminados, mantener los valores predeterminados algo relajados y luego crear un entorno un poco más complicado.Match
bloquear con unpatrón negadopara que se aplique a todos ( *
),exceptolos miembros deserver_admins
y 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-only
que no son también miembros deserver_admins
Match group !server_admins,server_ftp-only
ForceCommand internal-sftp
...