Bagaimana saya bisa mengatur server SFTP openSSH di Linux?

10

Saya ingin mengonfigurasi sftp-server untuk berbagi direktori tetapi saya tidak tahu cara memodifikasi /etc/ssh/sshd_config.

Persyaratan saya adalah:

1) Login tidak boleh menggunakan sertifikat, hanya kata sandi (yaitu otorisasi menggunakan metode kata sandi)

2) Saya ingin login dengan pengguna: ftp, kata sandi: foo dan bagikan direktori / home / ftp.

3) Saya memiliki aplikasi yang dari waktu ke waktu perlu mengunduh file dari server, saya tidak perlu masuk dengan klien yang beroperasi penuh.

Sejauh ini saya menambahkan baris berikut ke / etc / ssh / sshd_config:

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

Semua yang lain dikomentari.

/home/ftp adalah direktori kosong saat ini.

Akses berfungsi jika saya mencoba mengunduh file menggunakan kredensial root tetapi tidak berfungsi jika saya menggunakan kredensial ftp. Apakah saya perlu mengatur shell login? Apakah saya perlu mengisi / home / ftp?

EDIT: Ini adalah log sshd saya:

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

* Klien hang di sini (sampai waktu habis) *

Harap perhatikan, sekali lagi, bahwa jika saya masuk sebagai "root" file akan diunduh dengan benar. Itu juga mengunduh dengan benar jika saya mengomentari tiga baris terakhir dari file konfigurasi (yaitu Matchbaris dan 2 berikut).

Emiliano
sumber
Sudahkah Anda mencoba menentukan satu saja dari opsi Pencocokan ? Apa yang terjadi ketika Anda menggunakan klien SFTP nyata? Bisakah Anda tetap terhubung menggunakan klien SSH normal, misalnya ssh, atau Putty pada Windows? Versi OpenSSH apa yang Anda gunakan?
Daniel Beck

Jawaban:

7

Anda perlu memastikan /home/ftpdimiliki oleh rootdan bahwa grup dan orang lain tidak memiliki izin menulis, misalnya chmod 0755. Anda perlu menambahkan sub-direktori untuk ftpmenambahkan file.


Anda juga memerlukan internal-sftpsubsistem, jika tidak, Anda perlu menyediakan chrootlingkungan yang tepat di /home/ftp:

Subsystem sftp internal-sftp

Untuk melarang semua jenis login selain kata sandi, masukkan

ChallengeResponseAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication no

Ini diaktifkan secara default.

Daniel Beck
sumber
Mengganti baris Subsistem saya dengan milik Anda (dan mengatur izin direktori) membuat string kesalahan saya menghilang, namun program klien saya "hang" dan tidak mengunduh file yang saya butuhkan (saya bisa mengunduhnya menggunakan kredensial root). Apakah ada cara untuk membuat keluaran sshd lebih verbose?
Emiliano
Coba hanya tambahkan satu item konfigurasi pada gilirannya dan uji apakah Anda dapat terhubung untuk menentukan opsi mana yang salah, atau apakah itu mungkin kombinasi opsi. Anda harus memiliki beberapa keluaran /var/log/secure, setidaknya di situlah saya mendapatkannya di sistem saya.
Daniel Beck
Saya telah menaikkan level login saya menggunakan arahan LogLevel. Saya bisa membaca string /var/log/messages. Saya memiliki yang berikut ini: Failed none for ftp [...]diikuti oleh Accepted password for ftp [...]dan User child is on pid 7658. Klien hang dan kemudian keluar
Emiliano
@happy_emi Pertimbangkan untuk menambahkan informasi itu ke pertanyaan Anda.
Daniel Beck
Sepertinya itu masalah izin direktori. sshd_configbaik-baik saja.
Emiliano