Tentando ChrootDirectory um usuário SFTP em seu diretório inicial

Tentando ChrootDirectory um usuário SFTP em seu diretório inicial

Eu segui alguns exemplos de como fazer isso, todos eles acabam modificando sshd_configpara

Subsystem sftp internal-sftp

Match User chubbyninja
    ChrootDirectory %h
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

Quando faço isso, sshd -tpara ter certeza de que não há erros,service sshd restart

depois de reiniciado, tento fazer SFTP (com filezilla), mas continuo recebendo

Response:   fzSftp started
Command:    open "[email protected]" 22
Command:    Pass: ********************
Error:  Network error: Software caused connection abort
Error:  Could not connect to server

Se eu reverter a configuração ao seu estado original, posso usar o SFTP corretamente, mas posso navegar em qualquer diretório. Onde preciso de usuários apenas em seu diretório inicial

Minha configuração padrão contém esta linha:

Subsystem sftp /usr/lib/openssh/sftp-server

Que é o que eu sousubstituindocom os detalhes acima.

Eu só tenho acesso a esta máquina por ssh, embora tenha acesso root.

ATUALIZAR Depois de seguir o conselho de sam_pan_mariusz parece que vai mais longe, mas agora entendo

Response:   fzSftp started
Command:    open "[email protected]" 22
Error:  Network error: Connection refused
Error:  Could not connect to server

ATUALIZAÇÃO 2

Também segui o conselho de Froggiz e mudei minha configuração para esta:

Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE 
Match Group chubbyninja
     ChrootDirectory /home/chubbyninja
     ForceCommand internal-sftp -u 0007
     AllowTcpForwarding no
     GatewayPorts no
     X11Forwarding no

mas eu consigo o originalAbortamento da conexão com caixa de software

Eu monitoro /var/syslog, mas nada aparece para indicar por que há esse erro

ATUALIZAÇÃO 3 - Adicionado sshd_config

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes



Match Group chubbyninja
        ChrootDirectory /home/chubbyninja
        AllowTCPForwarding no
        X11Forwarding no
        GatewayPorts no
        ForceCommand internal-sftp -u 0007

Responder1

é assim que eu configuro meu sftp para um usuário específico

1] crie um usuário

 adduser {USER}

2]editar /etc/ssh/sshd_config

 PasswordAuthentication yes 

 Subsystem sftp
 internal-sftp -u 0007 -f AUTH -l VERBOSE 
 Match Group {USER}
     ChrootDirectory {FOLDER}
     ForceCommand internal-sftp -u 0007
     AllowTcpForwarding no
     GatewayPorts no
     X11Forwarding no

3] definir direitos para o usuário

 chmod -R 777 {FOLDER}

4] reinicie o ssh

service ssh restart

substitua {USER} pelo seu usuário e {FOLDER} pela sua pasta e deve funcionar! ;)

você pode colocar sua configuração ssh completa?

Responder2

Eu realmente não entendo a parte de "substituição" da pergunta, mas... ao fazer chroot no SSH,Forçar Comandodeve referir-se ao nome do subsistema interno. No seu caso, a linha inteira deve ser: ForceCommand sftp.

Se você quiser usar o caminho executável emChroot, você terá que preparar o diretório chroot adequado (contendo bibliotecas às quais o executável está vinculado, configurações, etc.).

Linhas relevantes da minha configuração de trabalho:

Subsystem sftp /usr/lib/openssh/sftp-server

Match User testuser1
    ChrootDirectory /one/dir/path/
    ForceCommand internal-sftp

informação relacionada