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 Match
bloco condicional para desativar ForceCommand
quando 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 ForceCommand
como padrão, mantenha os padrões um pouco relaxados e então crie um pouco mais complicadoMatch
bloco com umpadrão negadopara que se aplique a todos ( *
),excetoos membros deserver_admins
e 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-only
que também não são membrosserver_admins
Match group !server_admins,server_ftp-only
ForceCommand internal-sftp
...