
Existem algumas questões semelhantes, mas não iguais. Não quero alterar a pasta padrão. então eu quero definir a PASTA ROOT para conexão ssh. Quero dizer, a única pasta à qual o cliente tem acesso é a que eu configurei. Quero definir um caminho que meu cliente só tenha acesso a ele e não possa usar o cd ..
.
Eles não podem acessar as pastas superiores porque não têm acesso e permissão.
Editar: a coisa mais importante que quero fazer é ter um servidor local com alguns outros dispositivos para escrever nele, mas nem todos os arquivos acessam. Se houver uma maneira melhor que o ssh, desculpe pela minha pergunta ruim.
Obrigado
Responder1
Você precisa definir ChrootDirectory
a configuração do sshd para o referido usuário, ou para algum grupo, ou para todos os usuários, mas isso é nojento.
Você cria um novo arquivo, digamos, /etc/ssh/sshd_config.d/chroot_some_users.conf
e coloca o seguinte:
Match User myuser
ChrootDirectory %h
Se você deseja ter isso para vários usuários, use Match Group groupname
e adicione todos os usuários necessários a esse grupo.
Nas distribuições Linux modernas, existe Include /etc/ssh/sshd_config.d/*.conf
o arquivo /etc/ssh/sshd_config
. Em distribuições mais antigas, você mesmo pode precisar adicionar esta linha; basta anexá-lo no final. Depois de fazer tudo, verifique com sshd -t
, e se não reportar nenhum erro, é seguro recarregar a configuração com systemctl reload sshd.service
.
O usuário myuser
acabará vendo seu diretório inicial como a raiz do sistema de arquivos via SSH. Observe que eles não poderão fazer login via SSH, porque esse chroot impedirá que eles vejam o binário do shell e as bibliotecas necessárias, a menos que você os disponibilize em seu diretório inicial. Mas eles ainda poderão usar SFTP para transferir arquivos e encaminhar portas TCP.
Leia man sshd_config
(completamente!) E man sshd
para muitos detalhes importantes e úteis.