Amazon Cloud Server'da FTP kurulumu [kapalı]


257

Amazon Cloud Server'da FTP kurmaya çalışıyorum, ancak şanssız. İnternette arama yapıyorum ve bunun nasıl yapılacağı konusunda somut adımlar yok.

Bu komutları çalıştırmak için buldum:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

Ama onları nereye yazacağımı bilmiyorum.


10
Bu soru serverfault.com'a taşınmalıdır.
Jérôme Verstrynge

Yanıtlar:


570

Jaminto, soruyu cevaplamak için harika bir iş çıkardı, ancak son zamanlarda süreci kendim geçirdim ve Jaminto'nun cevabını genişletmek istedim.

Zaten bir EC2 örneği oluşturduğunuzu ve bir Elastik IP Adresini ilişkilendirdiğinizi varsayıyorum.


Adım # 1: vsftpd'yi yükleyin

EC2 sunucunuza SSH. Tür:

> sudo yum install vsftpd

Bu vsftpd'yi yüklemelidir.

Adım # 2: EC2 yönetim ortamınızdaki FTP bağlantı noktalarını açın

Ardından, EC2 sunucunuzdaki FTP bağlantı noktalarını açmanız gerekir. AWS EC2 Yönetim Konsolu'nda oturum açın ve soldaki gezinti ağacından Güvenlik Grupları'nı seçin. EC2 yönetim ortamınıza atanan güvenlik grubunu seçin. Ardından Gelen sekmesini seçin, ardından Düzenle'yi tıklayın:

resim açıklamasını buraya girin

Bağlantı noktası aralıkları 20-21 ve 1024-1048 olan iki Özel TCP Kuralı ekleyin. Kaynak için, 'Her Yerde' seçeneğini belirleyebilirsiniz. Kaynağı kendi IP adresinize ayarlamaya karar verirseniz, IP adresinizin DHCP üzerinden atanmışsa değişebileceğini unutmayın.

resim açıklamasını buraya girin



Adım # 3: vsftpd.conf dosyasında güncellemeler yapın

Vsftpd conf dosyanızı yazarak düzenleyin:

> sudo vi /etc/vsftpd/vsftpd.conf

Bu satırı değiştirerek anonim FTP'yi devre dışı bırakın:

anonymous_enable=YES

için

anonymous_enable=NO

Sonra vsftpd.conf dosyasının altına aşağıdaki satırları ekleyin:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

Vsftpd.conf dosyanız aşağıdaki gibi görünmelidir - pasv_address yerine herkese açık IP adresinizi koyun:

resim açıklamasını buraya girin

Değişiklikleri kaydetmek için escape tuşuna basın, sonra yazın :wqve enter tuşuna basın .



Adım # 4: VSFTPD'yi Yeniden Başlatın

Vsftpd yazarak yeniden başlatın:

> sudo /etc/init.d/vsftpd restart

Şuna benzeyen bir mesaj görmelisiniz:

resim açıklamasını buraya girin


Bu işe yaramazsa şunu deneyin:

> sudo /sbin/service vsftpd restart



5. Adım: Bir FTP kullanıcısı oluşturun

/ Etc / vsftpd / user_list'e göz atarsanız aşağıdakileri görürsünüz:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Bu temelde "Bu kullanıcıların FTP erişimine izin verme" diyor. vsftpd, bu listede olmayan herhangi bir kullanıcıya FTP erişimine izin verir.

Bu nedenle, yeni bir FTP hesabı oluşturmak için sunucunuzda yeni bir kullanıcı oluşturmanız gerekebilir. (Veya, / etc / vsftpd / user_list'te listelenmemiş bir kullanıcı hesabınız varsa, bir sonraki adıma atlayabilirsiniz.)

Bir EC2 örneğinde yeni bir kullanıcı oluşturmak oldukça basittir. Örneğin, 'bret' kullanıcısını oluşturmak için şunu yazın:

> sudo adduser bret
> sudo passwd bret

İşte böyle görünecek:

resim açıklamasını buraya girin



6. Adım: Kullanıcıları ana dizinleriyle sınırlama

Bu noktada, FTP kullanıcılarınız ana dizinleri ile sınırlı değildir. Bu çok güvenli değil, ancak kolayca düzeltebiliriz.

Vsftpd conf dosyanızı tekrar yazarak düzenleyin:

> sudo vi /etc/vsftpd/vsftpd.conf

Çizginin yorumunu kaldırın:

chroot_local_user=YES

İşiniz bittiğinde şöyle görünmelidir:

resim açıklamasını buraya girin

Vsftpd sunucusunu şu şekilde yeniden başlatın:

> sudo /etc/init.d/vsftpd restart

Hepsi tamam!


Ek A: Yeniden başlatmayı atlatmak

vsftpd sunucunuz önyüklendiğinde otomatik olarak başlamaz. Benim gibiyseniz, bu, EC2 örneğinizi yeniden başlattıktan sonra, FTP bozuk gibi göründüğünde bir terör anı hissedeceğiniz anlamına gelir - ancak gerçekte, sadece çalışmıyor !. İşte bunu düzeltmenin kullanışlı bir yolu:

> sudo chkconfig --level 345 vsftpd on

Alternatif olarak, redhat kullanıyorsanız, hizmetlerinizi yönetmenin başka bir yolu, hangi hizmetlerin otomatik olarak başlaması gerektiğini kontrol etmek için bu şık grafik kullanıcı arayüzünü kullanmaktır:

>  sudo ntsysv

resim açıklamasını buraya girin

Artık sunucunuz açıldığında vsftpd otomatik olarak başlayacaktır.


Ek B: Kullanıcının FTP giriş dizinini değiştirme

* NOT: Iman Sedighi, kullanıcıların belirli bir dizine erişimini kısıtlamak için daha zarif bir çözüm yayınlamıştır. Lütfen cevap olarak gönderilen mükemmel çözümüne bakın *

Bir kullanıcı oluşturmak ve FTP erişimini / var / www gibi belirli bir klasöre kısıtlamak isteyebilirsiniz. Bunu yapmak için kullanıcının varsayılan giriş dizinini değiştirmeniz gerekir:

> sudo usermod -d /var/www/ username

Bu özel örnekte, kullanıcıya genellikle / var / www klasörüyle ilişkili olan 'www' grubuna izin vermek tipiktir:

> sudo usermod -a -G www username

3
In step 3nasıl kaydedebilirsiniz, dosyadaki satırları ekledikten sonra?
Sumit Bijvani

2
tamam hepsi bitti, şimdi ftp'ye nasıl bağlanabilirim?
Sumit Bijvani

7
Merhaba Sumit. Vi pertty zor bir editör. Çalışmanızı kaydetmek için escape yazın, sonra ": wq" (tırnak işaretleri olmadan) ve enter tuşuna basın. FTP'ye gelince, bunu yanıtlamak zordur çünkü FTP istemcinize dayanacaktır. Zamanım varsa, bazı popüler FTP istemcilerini ayarlamak için cevabıma bazı talimatlar eklemeye çalışacağım. Şahsen Aptana Studio kullanıyorum. Aptana'da bir SFTP sitesi oluşturursunuz ve Aptana'ya EC2 örneğinizi oluştururken aldığınız genel anahtar kimlik doğrulama dosyasını sağlarsınız. Filezilla kullanıyorsanız pageant.exe'yi kullanmayı deneyin. Şerefe!
klon45

6
Bu mükemmel. Çok açık. Çok teşekkür ederim.
AC Patrice

11
Aslında, belki bana kredi verebilirdi. Cevabımı 13 Ocak'ta
reddetti

27

Bir EC2 sunucusunda pasif ftp'yi etkinleştirmek için, ftp sunucunuzun gelen bağlantılar için kullanması gereken bağlantı noktalarını yapılandırmanız ve ardından ftp istemcisi veri bağlantıları için kullanılabilir bağlantı noktalarının bir listesini açmanız gerekir.

Linux'a aşina değilim, ancak yayınladığınız komutlar ftp sunucusunu yükleme, ec2 güvenlik duvarı kurallarını (AWS API'si aracılığıyla) yapılandırma, ardından ftp sunucusunu ec2 güvenlik duvarında izin verdiğiniz bağlantı noktalarını kullanacak şekilde yapılandırma adımlarıdır. .

Bu adım ftp istemcisini (VSFTP) yükler

> yum install vsftpd

Bu adımlar ftp istemcisini yapılandırır

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

ancak diğer iki adım EC2 Güvenlik grupları altındaki amazon konsolu üzerinden daha kolaydır. Burada, sunucunuza atanan güvenlik grubunu 20,21 ve 1024-1048 bağlantı noktalarındaki bağlantılara izin verecek şekilde yapılandırmanız gerekir.


Bu satırların ne anlama geldiğini biliyorum, ama onları nereye
yazacağımı bilmiyorum

1
ftp sunucusunu yüklediğiniz sunucudaki komut satırında?
jaminto

2
SSH ile sunucunuza bağlanın: blog.taggesell.de/index.php?/archives/…
jaminto

Hala bir hata alıyorsanız (500 OOPS: vsftpd: chroot () içinde yazılabilir kökle çalıştırmayı reddetmek), bu benim için sorunu düzeltti: benscobie.com/…
kaore

Anonim FTP'nin varsayılan olarak AÇIK olması şok oldum!
jeffkee

16

Güzel çözüm için @ clone45 teşekkürler. Ancak çözümünün Ek b ile ilgili önemli bir sorunum vardı. Giriş dizinini var / www / html olarak değiştirdikten hemen sonra ssh ve sftp aracılığıyla sunucuya bağlanamadım çünkü her zaman aşağıdaki hataları gösteriyor

permission denied (public key)

veya FileZilla'da bu hatayı aldım:

No supported authentication methods available (server: public key)

Ancak sunucuya normal FTP bağlantısı üzerinden erişebildim.

Aynı hatayla karşılaştıysanız, kullanıcı için varsayılan giriş dizinini ayarlayarak @ clone45 çözümünün ek b'sini geri alın:

sudo usermod -d /home/username/ username

Ancak kullanıcının varsayılan giriş dizinini ayarladığınızda, kullanıcı / var / www / http dışındaki birçok klasöre erişebilir. Sunucunuzun güvenliğini sağlamak için şu adımları izleyin:

1- Sftponly grubu yap Sadece ftp ve sftp erişimini var / www / html ile sınırlamak istediğiniz tüm kullanıcılar için bir grup oluşturun. grubu yapmak için:

sudo groupadd sftponly

2- Krokiyi hapse atmak Bu grubun sunucuya sftp yoluyla erişimini kısıtlamak için, grubun kullanıcılarının ana dizininin içindeki html klasörünün dışındaki herhangi bir klasöre erişmesine izin vermemek için krotayı hapse atmanız gerekir. bunu yapmak için vudo'da /etc/ssh/sshd.config dosyasını sudo ile açın. Dosyanın sonunda lütfen bu satıra yorum yapın:

Subsystem sftp /usr/libexec/openssh/sftp-server

Ve sonra bu satırı şuna ekleyin:

Subsystem sftp internal-sftp

Bu yüzden alt sistemi internal-sftp ile değiştirdik. Ardından altına aşağıdaki satırları ekleyin:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

Bu satırı ekledikten sonra değişiklikleri kaydettim ve ssh servisini şu şekilde yeniden başlattım:

sudo service sshd restart

3- Kullanıcıyı sftponly grubuna ekleme Erişimlerini kısıtlamak istediğiniz herhangi bir kullanıcı sftponly grubunun üyesi olmalıdır. Bu nedenle sftponly'a katılıyoruz: sudo usermod -G sftponly kullanıcı adı

4- Kullanıcı erişimini sadece var / www / html ile sınırla Kullanıcı erişimini sadece var / www / html klasörüne kısıtlamak için o kullanıcının giriş dizininde ('html' adıyla) bir dizin oluşturmanız ve ardından / var / www için / home / kullanıcı adı / html aşağıdaki gibi:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- Yazma erişimini ayarlama Kullanıcının / var / www / html dosyasına yazma erişimine ihtiyacı varsa, kullanıcıyı root: root sahipliği ve 755 izinlerine sahip olması gereken / var / www adresine hapsetmelisiniz. Daha sonra / var / www / html root'un sahipliği: sftponly ve 775 izinleri aşağıdaki satırları ekleyerek:

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6- Kabuk erişimini engelle Kabuğu daha güvenli hale getirmek için kabuğa erişimi kısıtlamamak istiyorsanız, varsayılan kabuğu bin / false olarak aşağıdaki gibi değiştirin:

sudo usermod -s /bin/false username

senin sudo mount --bind /var/www /home/username/htmlwww klasör yok söylendi. Bu kök (/ home klasörü nerede) yapılır varsayalım?
elliotrock

1
sudo chown root:www /var/www/htmlchown devletler: geçersiz grup: 'root: www'
elliotrock

2
Bölüm 6 sudo usermod -s /sbin/nologin usernamevsftpd pam modülünün varsayılan kabuk kısıtlamaları (ve benim durumumda daha iyi çalışıyor gibi görünüyor) bacause olmalıdır . Ve bölüm mount4'lerin her yeniden başlatmada yapılması gerekiyor, bu yüzden onu rc.local içine yerleştirmek iyi bir fikirdir.
phy25

11

Büyük Makale ... Amazon Linux AMI'de esinti gibi çalıştı.

İki yararlı komut daha:

Varsayılan FTP yükleme klasörünü değiştirmek için

Aşama 1:

edit /etc/vsftpd/vsftpd.conf

2. Adım: Sayfanın altında yeni bir giriş oluşturun:

local_root=/var/www/html

FTP cihazı kullanarak yönetebilmeniz için klasör altındaki dosyalara okuma, yazma, silme izni uygulamak

find /var/www/html -type d -exec chmod 777 {} \;

11
her dosya ve klasörü bir web sitesi için güvenli olmayan
777'ye chmods

TAMAM. Peki bu konuda ne gibi bir değişiklik öneriyorsunuz?
Ravi Shanker

3
Gerekli izinleri atamalısınız, sadece tüm izinleri her şeye açık bir şekilde açmayın ya da sorun istiyorsunuz. Örneğin, chmod -R ug + rw / var / www / html kullanılması, diğer dosyalara gereksiz yürütme izinleri ve izinleri vermeden tüm dosyalara kullanıcı ve grup için okuma ve yazma izinleri verir. Ardından kullanıcıları ve grupları, diğerlerini değiştirmenize gerek kalmayacak şekilde ayarlayın. Yani ftp kullanıcınız tüm dosyaları okuyabilir ve yazabilir ve web sunucunuz ayarlanmış okuyabilir. Her iki kullanıcıyı aynı gruba koyun ve kullanıcıya rw ve gruba rw ekleyin.
AaronM

/ Var / www / html dosyasına 775 uygulamanız gerekir. geri kalan alt klasörler ve dosyalar ihtiyaca göre izin alabilir. 777 çok güvensiz.
Iman Sedighi

6

Ufw etkinleştirilmişse, ftp eklemeyi unutmayın:

> sudo ufw allow ftp

Ufw'yi etkinleştirdiğimi fark etmem 2 günümü aldı.


veya iptables, ya da ... evet ben de unuturum!
jsh

6

Aşağıdaki komutlar ile kullanıcınızı www grubuna ekleyene kadar sorun olmaz:

sudo usermod -a -G www <USER>

Bu izin sorununu çözer.

Bunu ekleyerek varsayılan yolu ayarlayın:

local_root=/var/www/html

4

20-21 ve 1024-1048 aralıklarına izin verecek bir tane varsa iptables güvenlik duvarınızı güncellemeyi unutmayın.

Bunu / etc / sysconfig / iptables adresinden yapın

Bunun gibi satırlar ekleme:

-A GİRİŞ -m durumu - durum YENİ -m tcp -p tcp --port 20:21 -j KABUL

-A GİRİŞ -m durumu - durum YENİ -m tcp -p tcp - nokta 1024: 1048 -j KABUL

Ve iptables komutuyla yeniden başlatın:

sudo service iptables yeniden başlatma


4

Clone45 adımlarını basitleştirdim:

Bahsettiği gibi limanları aç

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

2

Klon45'in cevabını sonuna kadar takip ettim. Harika bir makale! Wordpress sitelerimden birine eklentileri yüklemek için FTP erişimine ihtiyacım olduğundan, ana dizini / var / www / mysitename olarak değiştirdim. Sonra ftp kullanıcısını apache (veya www) grubuna şu şekilde eklemeye devam ettim:

sudo usermod -a -G apache myftpuser

Bundan sonra hala WP eklenti yükleme sayfasında bu hatayı gördüm: "WordPress İçerik dizini (wp-content) bulunamadı". Bu çözümü bir wp.org Soru-Cevap oturumunda aradı ve buldu: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content ve wp- config.php:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

Bundan sonra WP eklentim başarıyla kuruldu.


0

klon45'in cevabına ek olarak bahsetmeye değer olabilir :

Vsftpd'de Chrooted FTP Kullanıcıları için Yazma İzinlerini Düzeltme

Ubuntu 12.04 Precise ile gelen vsftpd sürümü, köklü yerel kullanıcıların varsayılan olarak yazmalarına izin vermez. Varsayılan olarak bunu /etc/vsftpd.conf dizininde bulabilirsiniz :

chroot_local_user=YES
write_enable=YES

Yerel kullanıcıların yazmasına izin vermek için aşağıdaki parametreyi eklemeniz gerekir:

allow_writeable_chroot=YES

Not: Yazma izinleriyle ilgili sorunlar aşağıdaki FileZilla hataları olarak görünebilir :

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

Referanslar:
vsftpd VSFTPd'deki Chrooted FTP Kullanıcıları için Yazma İzinlerini Düzeltme, güncellemeden
sonra çalışmayı durdurdu


0

530 şifresini yanlış alıyorsanız

1 adım daha gerekiyor

dosya / etc / kabuklarında

Aşağıdaki satırı ekleyin

/ Bin / yanlış


-2

FileZila, Amazon Cloud ile kurmak için iyi bir FTP aracıdır.

  1. FileZila istemcisini indirin adresinden
  2. Dosya -> Site Yöneticisi ->
  3. Yeni site
  4. Amazon bulut konumunuzun Ana Bilgisayar Adı IP adresini girin (varsa bağlantı noktası)
  5. Protokol - SFTP (İhtiyacınıza göre değişebilir)
  6. Giriş Türü - Normal (Sistem her seferinde şifre istemeyecektir)
  7. Kullanıcı adı ve şifre girin.
  8. Bağlan.

Bu adımı yalnızca 1 kez yapmanız gerekir, daha sonra aynı IP adresine ve aynı siteye içerik yükler.

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.