Fatal: não foi possível inicializar o SFTP: não foi possível conectar

1

Estou executando o OpenSSH no Cygwin, que estou tentando usar apenas como servidor SFTP. Eu instalei primeiro com apenas as configurações padrão (servidor externo SFTP sftp-server ) e funcionou. Consegui executar o PSFTP do PuTTY e "abrir localhost" e procurar meus arquivos.

No entanto, por segurança, eu queria:

  • Permitir apenas acesso SFTP (não SSH)
  • Permitir somente login (não outros usuários)
  • Permitir apenas que eu navegue no meu diretório pessoal
  • Permitir somente acesso somente leitura

Para conseguir isso, coloquei o seguinte no final de /etc/sshd_config :

Subsystem   sftp    internal-sftp

Match User myusername
        ChrootDirectory /home/myusername
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp -d / -R

Match User !myusername
        ForceCommand echo 'successful login man, congrats'

(A última parte é de esta resposta , que essencialmente impede o login do usuário correspondente.)

Observe que também adicionei -d / à linha de comando internal-sftp , pois ele me disse que o padrão é o diretório inicial, então pensei em tentar carregar /home/myusername por padrão, o que seria mapeado para /home/myusername/home/myusername no sistema real (um caminho que não existe).

No entanto, ao tentar fazer o login, eu agora recebo o seguinte erro:

psftp> open localhost
login as: myusername
myusername@localhost's password:
Fatal: unable to initialise SFTP: could not connect
psftp>

Curiosamente, estou no servidor, mas não no SFTP:

psftp> open localhost
login as: myusername
myusername@localhost's password:
Fatal: unable to initialise SFTP: could not connect
psftp> open localhost
psftp: already connected
psftp> pwd
Remote directory is (null)
psftp>

O que estou fazendo de errado ou como posso obter registros para uma solução de problemas adicional?

    
por Kidburla 12.05.2018 / 00:38

1 resposta

0

Do manual do sshd:

ChrootDirectory
Specifies the pathname of a directory to chroot(2) to after 
authentication. All components of the pathname must be root-owned 
directories that are not writable by any other user or group. After the 
chroot, sshd(8) changes the working directory to the user's home directory.

O mais provável é que o seu diretório home não seja de propriedade do root e o sshd esteja se recusando a fazer o chroot para um diretório que não seja root, já que não é seguro. Criar / home / chroot, chown-lo para root e mover o seu diretório home sob isso.

Para depurar facilmente esses problemas e evitar o bloqueio, recomendo executar uma instância separada do sshd em uma porta diferente, no modo sem separação e com a depuração ativada:

 /usr/sbin/sshd -D -d -p 2222 
    
por 14.05.2018 / 08:42