Linux'ta openSSH SFTP sunucusunu nasıl kurabilirim?


10

Sftp-sunucusunu bir dizini paylaşacak şekilde yapılandırmak istiyorum, ancak nasıl değiştirileceğini bilmiyorum /etc/ssh/sshd_config.

Gereksinimlerim:

1) Oturum açma sertifikaları değil, sadece şifreyi kullanmalıdır (örn. Yetkilendirme şifre yöntemini kullanır)

2) Kullanıcı ile giriş yapmak istiyorum: ftp, şifre: foo ve paylaşım dizini / home / ftp.

3) Zaman zaman sunucudan bir dosya indirmesi gereken bir uygulamam var, tam çalışan bir istemciyle oturum açmam gerekmiyor.

Şimdiye kadar / etc / ssh / sshd_config dosyasına şu satırları ekledim:

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

Diğer her şey yorumlanır.

/home/ftp şu anda boş bir dizindir.

Access, kök kimlik bilgilerini kullanarak bir dosyayı indirmeye çalışırsam çalışır, ancak ftp kimlik bilgilerini kullanırsam çalışmaz. Bir giriş kabuğu ayarlamam gerekir mi? / Home / ftp dosyasını bir şekilde doldurmam gerekir mi?

EDIT: Bu benim sshd günlüğüm:

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

* İstemci burada kilitleniyor (zaman aşımı gerçekleşene kadar) *

Yine, "root" olarak giriş yaparsam dosyanın doğru indirildiğini lütfen unutmayın. Yapılandırma dosyasının son üç satırını (yani Matchsatır ve aşağıdaki 2) yorumlarsam doğru şekilde indirilir .


Eşleme seçeneklerinden yalnızca birini belirtmeyi denediniz mi? Gerçek bir SFTP istemcisi kullandığınızda ne olur? Yine sshde Windows'ta normal bir SSH istemcisi veya PuTTY kullanarak bağlanabiliyor musunuz? Hangi OpenSSH sürümünü kullanıyorsunuz?
Daniel Beck

Yanıtlar:


7

Emin olmak gerek /home/ftpaittir rootve grubun o ve diğerleri, örneğin yazma izniniz yok chmod 0755. ftpDosya eklemek için alt dizinler eklemeniz gerekir .


internal-sftpAlt sisteme de ihtiyacınız var , aksi takdirde aşağıdaki alanlarda uygun bir chrootortam sağlamanız gerekir /home/ftp:

Subsystem sftp internal-sftp

Şifre olmayan tüm giriş türlerine izin vermemek için

ChallengeResponseAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication no

Bunlar varsayılan olarak etkindir.


Alt Sistem satırımı sizinkiyle değiştirmek (ve dizin iznini ayarlamak) hata dizemin kaybolmasına neden olur, ancak istemci programım "askıda kalıyor" ve ihtiyacım olan dosyayı indirmiyor (kök kimlik bilgilerini kullanarak indirebilirim). Sshd çıktısını daha ayrıntılı yapmanın bir yolu var mı?
Emiliano

Sırayla yalnızca tek bir yapılandırma öğesi eklemeyi deneyin ve seçeneklerden hangisinin hatalı olduğunu belirlemek için bağlanıp bağlanamayacağınızı veya seçeneklerin bir kombinasyonu olup olmadığını test edin. Bazı çıktılar almalısın /var/log/secure, en azından ben bunu sistemime aldım.
Daniel Beck

LogLevel yönergesini kullanarak giriş seviyemi yükselttim. Dize okuyabilirim /var/log/messages. Şunlara sahibim: Failed none for ftp [...]arkasından Accepted password for ftp [...]ve User child is on pid 7658. Müşteri takılıyor ve zaman aşımına
uğruyor

@happy_emi Bu bilgiyi sorunuza eklemeyi düşünün.
Daniel Beck

Dizin izinleriyle ilgili bir sorun olduğu anlaşılıyor. sshd_configsadece iyiydi.
Emiliano
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.