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.