Meu servidor ssh está funcionando perfeitamente há 4 anos, então eu só quero adicionar um usuário + chroot ele em uma pasta específica.
> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart
Quando eu faço isso, eupodeconecte-se ssh
e minha sftp
conexão funciona. O problema é que quero fazer chroot para uma pasta específica.
> vim /etc/ssh/sshd_config
Adicione no final do arquivo:
Match user thomas
ChrootDirectory /home/%u
Quando eu apenas adiciono isso, isso não deve mudar nada, certo? A configuração deve ser a mesma e ainda devo conseguir me conectar ou usar o sftp... então reinicio com service ssh restart
e não consigo mais me conectar com o sftp.
Apenas no caso de:
root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t 3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
[-f config_file] [-g login_grace_time] [-h host_key_file]
[-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#
O que estou fazendo de errado?
Responder1
O sshd_config
manual afirma que
Deve
ChrootDirectory
conter os arquivos e diretórios necessários para suportar a sessão do usuário. Para uma sessão interativa , isso requer pelo menos um shell, normalmentesh(1)
, e nós básicos , como/dev
,,,,,null(4)
e dispositivos . Para sessões de transferência de arquivos usando SFTP, nenhuma configuração adicional do ambiente é necessária se o servidor sftp em processo for usado, embora sessões que usam log possam exigir dentro do diretório chroot em alguns sistemas operacionais (veja para detalhes).zero(4)
stdin(4)
stdout(4)
stderr(4)
tty(4)
/dev/log
sftp-server(8)
Você deve criar o dev
diretório e copiar o /dev/MAKEDEV
script lá. Usando o script, crie os arquivos de dispositivo necessários.
Para usuários interativos, você também precisa instalar os binários necessários e bibliotecas associadas no chroot.
A referência ao "servidor sftp em processo" significa ForceCommand internal-sftp
que deve ser usada em seu Match
bloco.
Nota: o trecho é do OpenSSH 7.5, pois não tenho acesso a nenhuma implementação SSH mais antiga.