Come posso configurare il server SFTP openSSH su Linux?


10

Voglio configurare sftp-server per condividere una directory ma non so come modificarlo /etc/ssh/sshd_config.

I miei requisiti sono:

1) L'accesso non deve utilizzare certificati, ma solo password (ovvero l'autorizzazione utilizza il metodo password)

2) Voglio accedere con l'utente: ftp, password: pippo e condividi directory / home / ftp.

3) Ho un'applicazione che di volta in volta ha bisogno di scaricare un file dal server, non ho bisogno di accedere con un client operativo completo.

Finora ho aggiunto le seguenti righe a / etc / ssh / sshd_config:

Protocol 2
Subsystem sftp /usr/libexec/sftp-server
Match User ftp
   ForceCommand internal-sftp
   ChrootDirectory /home/ftp

Tutto il resto è commentato.

/home/ftp è una directory vuota al momento.

Access funziona se provo a scaricare un file usando le credenziali di root ma non funziona se utilizzo le credenziali ftp. Devo impostare una shell di accesso? Devo popolare / home / ftp in qualche modo?

EDIT: Questo è il mio registro sshd:

subsystem request for sftp
debug1: subsystem: exec() internal-sftp
debug1: Forced command (config) 'internal-sftp '
debug2: fd 3 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug2: fd 8 setting O_NONBLOCK
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 17613
debug1: session_exit_message: session 0 channel 0 pid 17613
debug2: channel 0: request exit-status confirm 0
debug1: session_exit_message: release channel 0
debug2: channel 0: write failed
debug2: channel 0: close_write
debug2: channel 0: send eow
debug2: channel 0: output open -> closed
debug2: channel 0: read<=0 rfd 9 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: send close
debug2: notify_done: reading
debug3: channel 0: will not send data after close
debug3: channel 0: will not send data after close
User child is on pid 17611
debug3: mm_request_receive entering

* Il client si blocca qui (fino a quando si verifica un timeout) *

Si noti, ancora una volta, che se accedo come "root" il file viene scaricato correttamente. Si scarica anche correttamente se commento le ultime tre righe del file di configurazione (ovvero la Matchriga e le seguenti 2).


Hai provato a specificare solo una delle opzioni di abbinamento ? Cosa succede quando si utilizza un vero client SFTP? Riesci ancora a connetterti utilizzando un normale client SSH, ad esempio ssho PuTTY su Windows? Quale versione di OpenSSH stai usando?
— Daniel Beck

Risposte:


7

Devi assicurarti di /home/ftpappartenere a rootquel gruppo e ad altri che non dispongono di autorizzazioni di scrittura, ad es chmod 0755. Devi aggiungere sottodirectory per ftpaggiungere i file.


È inoltre necessario il internal-sftpsottosistema, altrimenti è necessario fornire un chrootambiente adeguato in /home/ftp:

Subsystem sftp internal-sftp

Per non consentire tutti i tipi di accesso senza password, immettere

ChallengeResponseAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication no

Questi sono attivati ​​per impostazione predefinita.


Sostituendo la mia linea del sottosistema con la tua (e impostando i permessi della directory), la mia stringa di errore scompare, tuttavia i miei programmi client si "bloccano" e non scaricano il file di cui ho bisogno (posso scaricarlo usando le credenziali di root). C'è un modo per rendere l'output di sshd più dettagliato?
— Emiliano,

Prova ad aggiungere solo un singolo elemento di configurazione a sua volta e verifica se puoi connetterti per determinare quale delle opzioni è difettosa o se è forse una combinazione di opzioni. Dovresti avere un po 'di output /var/log/secure, almeno è lì che lo ottengo sul mio sistema.
— Daniel Beck

Ho aumentato il mio livello di accesso utilizzando la direttiva LogLevel. Riesco a leggere la stringa /var/log/messages. Ho il seguente: Failed none for ftp [...]seguito da Accepted password for ftp [...]e User child is on pid 7658. Il client si blocca e quindi va in timeout
— Emiliano,

@happy_emi Valuta la possibilità di aggiungere tali informazioni alla tua domanda.
— Daniel Beck

Sembra che si sia verificato un problema con le autorizzazioni della directory. sshd_configandava bene.
— Emiliano,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.