Estou tentando restringir um usuário de túnel SSH .
# sudo cat /home/user/.ssh/config
Banner none
ChrootDirectory /home/%u
PasswordAuthentication no
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
No entanto, nenhum destes parece ter qualquer efeito.
Quando eu adiciono /home/user/.ssh/authorized_keys
, no-pty,no-agent-forwarding,no-X11-forwarding,command="/bin/false"
funciona, mas gostaria de incluir também essas diretivas na configuração permanente.
É possível restringir um usuário dessa maneira sem atualizar /etc/ssh/sshd_config
?
ATUALIZAÇÃO Conheço Match User
e Match Group
; o ponto é ter isso em uma configuração específica do usuário .
Em relação
/home/user/.ssh/config
a , isso é puramente para o próprio cliente ssh, usado na máquina que inicia a conexão ssh. Portanto, não é útil aqui.A pergunta foi atualizada dizendo que você descontou a possibilidade de adicionar
Match User
ouMatch Group
entradas em/etc/ssh/sshd_config
, porque deseja uma configuração específica do usuário.Se você quiser que determinados usuários sejam colocados em seu diretório inicial, poderá aproveitar a associação ao grupo, como esta, especificamente usando
Match Group
eChrootDirectory %h
.Algo como
ForceCommand
funciona para limitar o que o usuário pode fazer. Isso não funciona bem em um arquivo de configuração colocado no diretório inicial do usuário, pois quase certamente ele seria capaz de alterar a configuração, ou pelo menos torná-la inacessível (por exemplo,mv ~/.ssh ~/.ssh_disabled
).Claro,
.ssh/config
também é a configuração para o cliente SSH , ou seja, modifica o que acontece quando você faz uma conexão SSH fora daquele sistema. A restrição de um usuário deve necessariamente acontecer no servidor, esshd_config
é o único local ondeForceCommand
está documentado a existência. Além disso, como você disse,Include
só existe para a configuração do cliente, então suas opções são a) colocar oForceCommand
nosshd_config
da máquina com umMatch
comando adequado, ou b) não colocar oForceCommand
em qualquer lugar.Claro, você pode juntar a configuração do servidor SSH a partir de arquivos distintos com algum sistema externo, o mais simples dos quais seria algo como
cat /etc/ssh/sshd_config.d/*.conf > /etc/ssh/sshd_config
.A primeira coisa que vem à mente: use a
Include
diretiva .No entanto, ele só funciona dentro do
/etc/ssh/ssh_config
(ssh como cliente) e quando chamado/etc/ssh/sshd_config
(ssh como servidor), lança um erro " Opção de configuração ruim: incluir " - aparentemente, foi implementado apenas para o lado do clienteO problema é: as diretivas que preciso (como
ForceCommand
) são para o lado do servidor, portanto, ignoradas quando adicionadas aossh_config
.