Menyiapkan FTP di Amazon Cloud Server [ditutup]

257

Saya mencoba mengatur FTP di Amazon Cloud Server, tetapi tidak berhasil. Saya mencari di internet dan tidak ada langkah konkret bagaimana melakukannya.

Saya menemukan perintah untuk dijalankan:

$ 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

Tetapi saya tidak tahu harus menulis di mana.

SharkTheDark
sumber
10
Pertanyaan ini harus dimigrasikan ke serverfault.com.
Jérôme Verstrynge

Jawaban:

570

Jaminto melakukan pekerjaan yang baik untuk menjawab pertanyaan itu, tetapi saya baru-baru ini melalui proses sendiri dan ingin memperluas jawaban Jaminto.

Saya berasumsi bahwa Anda telah membuat instance EC2 dan telah mengaitkan Alamat IP Elastis dengannya.


Langkah # 1: Instal vsftpd

SSH ke server EC2 Anda. Tipe:

> sudo yum install vsftpd

Ini harus menginstal vsftpd.

Langkah # 2: Buka port FTP pada instance EC2 Anda

Selanjutnya, Anda harus membuka port FTP di server EC2 Anda. Masuk ke Konsol Manajemen AWS EC2 dan pilih Grup Keamanan dari pohon navigasi di sebelah kiri. Pilih grup keamanan yang ditugaskan untuk instance EC2 Anda. Kemudian pilih tab Masuk, lalu klik Edit:

masukkan deskripsi gambar di sini

Tambahkan dua Aturan TCP Kustom dengan rentang port 20-21 dan 1024-1048. Untuk Sumber, Anda dapat memilih 'Di Mana Saja'. Jika Anda memutuskan untuk mengatur Sumber ke alamat IP Anda sendiri, ketahuilah bahwa alamat IP Anda mungkin berubah jika sedang ditugaskan melalui DHCP.

masukkan deskripsi gambar di sini



Langkah # 3: Buat pembaruan untuk file vsftpd.conf

Edit file conf vsftpd Anda dengan mengetik:

> sudo vi /etc/vsftpd/vsftpd.conf

Nonaktifkan FTP anonim dengan mengubah baris ini:

anonymous_enable=YES

untuk

anonymous_enable=NO

Kemudian tambahkan baris berikut ke bagian bawah file vsftpd.conf:

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

File vsftpd.conf Anda akan terlihat seperti berikut - kecuali pastikan untuk mengganti pasv_address dengan alamat IP Anda yang menghadap publik:

masukkan deskripsi gambar di sini

Untuk menyimpan perubahan, tekan escape, lalu ketik :wq, lalu tekan enter.



Langkah # 4: Mulai ulang vsftpd

Mulai ulang vsftpd dengan mengetik:

> sudo /etc/init.d/vsftpd restart

Anda akan melihat pesan yang terlihat seperti:

masukkan deskripsi gambar di sini


Jika ini tidak berhasil, coba:

> sudo /sbin/service vsftpd restart



Langkah # 5: Buat pengguna FTP

Jika Anda mengintip di / etc / vsftpd / user_list, Anda akan melihat yang berikut:

# 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

Ini pada dasarnya mengatakan, "Jangan izinkan pengguna ini mengakses FTP." vsftpd akan memungkinkan akses FTP ke pengguna yang tidak ada dalam daftar ini.

Jadi, untuk membuat akun FTP baru, Anda mungkin perlu membuat pengguna baru di server Anda. (Atau, jika Anda sudah memiliki akun pengguna yang tidak terdaftar di / etc / vsftpd / user_list, Anda dapat melompat ke langkah berikutnya.)

Membuat pengguna baru pada instance EC2 cukup sederhana. Misalnya, untuk membuat 'bret' pengguna, ketik:

> sudo adduser bret
> sudo passwd bret

Ini akan terlihat seperti apa:

masukkan deskripsi gambar di sini



Langkah # 6: Membatasi pengguna ke direktori home mereka

Pada titik ini, pengguna FTP Anda tidak terbatas pada direktori home mereka. Itu tidak terlalu aman, tetapi kita dapat memperbaikinya dengan mudah.

Edit file conf vsftpd Anda lagi dengan mengetik:

> sudo vi /etc/vsftpd/vsftpd.conf

Tidak berkomentar di luar garis:

chroot_local_user=YES

Seharusnya terlihat seperti ini setelah Anda selesai:

masukkan deskripsi gambar di sini

Mulai ulang server vsftpd lagi seperti ini:

> sudo /etc/init.d/vsftpd restart

Semua selesai!


Lampiran A: Bertahan dari reboot

vsftpd tidak secara otomatis memulai ketika server Anda melakukan booting. Jika Anda seperti saya, itu berarti bahwa setelah me-reboot instance EC2 Anda, Anda akan merasakan momen teror ketika FTP tampaknya rusak - tetapi pada kenyataannya, itu tidak berjalan !. Berikut cara mudah untuk memperbaikinya:

> sudo chkconfig --level 345 vsftpd on

Atau, jika Anda menggunakan redhat, cara lain untuk mengelola layanan Anda adalah dengan menggunakan antarmuka pengguna grafis yang bagus ini untuk mengontrol layanan mana yang harus dimulai secara otomatis:

>  sudo ntsysv

masukkan deskripsi gambar di sini

Sekarang vsftpd akan secara otomatis memulai ketika server Anda melakukan boot up.


Lampiran B: Mengubah direktori home FTP pengguna

* CATATAN: Iman Sedighi telah memposting solusi yang lebih elegan untuk membatasi akses pengguna ke direktori tertentu. Silakan lihat solusi luar biasa yang diposting sebagai jawaban *

Anda mungkin ingin membuat pengguna dan membatasi akses FTP mereka ke folder tertentu, seperti / var / www. Untuk melakukan ini, Anda harus mengubah direktori home default pengguna:

> sudo usermod -d /var/www/ username

Dalam contoh khusus ini, biasanya memberikan izin pengguna ke grup 'www', yang sering dikaitkan dengan folder / var / www:

> sudo usermod -a -G www username
clone45
sumber
3
Dalam step 3setelah menambahkan baris dalam file, bagaimana saya bisa menyimpannya?
Sumit Bijvani
2
ok semua selesai, sekarang bagaimana saya bisa terhubung ke ftp?
Sumit Bijvani
7
Hai Sumit. Vi adalah editor rumit pertty. Untuk menyimpan pekerjaan Anda, ketik escape, lalu ": wq" (tanpa tanda kutip), lalu tekan enter. Sedangkan untuk FTP, itu sulit dijawab karena akan didasarkan pada klien FTP Anda. Jika saya punya waktu, saya akan mencoba menambahkan beberapa instruksi pada jawaban saya untuk mengatur beberapa klien FTP yang populer. Secara pribadi, saya menggunakan Aptana Studio. Di Aptana, Anda membuat situs SFTP dan menyediakan Aptana dengan file otentikasi kunci publik yang Anda dapatkan ketika Anda membuat instance EC2 Anda. Jika Anda menggunakan filezilla, coba gunakan pageant.exe. Bersulang!
clone45
6
Ini luar biasa. Sangat jelas. Terima kasih banyak.
AC Patrice
11
Sebenarnya, mungkin dia bisa memberikan kredit kepada saya. Dia menuliskan jawaban saya pada 13 Januari.
clone45
27

Untuk mengaktifkan ftp pasif pada server EC2, Anda perlu mengonfigurasikan port yang harus digunakan server ftp Anda untuk koneksi inbound, lalu buka daftar port yang tersedia untuk koneksi data klien ftp.

Saya tidak begitu mengenal linux, tetapi perintah yang Anda posting adalah langkah-langkah untuk menginstal server ftp, mengkonfigurasi aturan firewall EC2 (melalui AWS API), kemudian mengkonfigurasi server ftp untuk menggunakan port yang Anda izinkan pada firewall EC2 .

Jadi langkah ini menginstal klien ftp (VSFTP)

> yum install vsftpd

Langkah-langkah ini mengkonfigurasi klien ftp

> 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

tetapi dua langkah lainnya lebih mudah dilakukan melalui konsol amazon di bawah kelompok Keamanan EC2. Di sana Anda perlu mengkonfigurasi grup keamanan yang ditugaskan ke server Anda untuk memungkinkan koneksi pada port 20,21, dan 1024-1048

jaminto
sumber
Saya tahu apa arti kalimat itu, tapi saya tidak tahu di mana harus mengetiknya ... Itulah masalahnya ...
SharkTheDark
1
pada baris perintah pada server tempat Anda menginstal server ftp?
jaminto
2
Hubungkan ke server Anda melalui SSH: blog.taggesell.de/index.php?/archives/…
jaminto
Jika Anda masih mendapatkan kesalahan (500 OOPS: vsftpd: menolak untuk menjalankan dengan root yang dapat ditulis di dalam chroot ()), ini memperbaiki masalah bagi saya: benscobie.com/...
kaore
Saya terkejut bahwa FTP anonim AKTIF secara default!
jeffkee
16

Terima kasih @ clone45 untuk solusi yang bagus. Tapi saya punya satu masalah penting dengan Lampiran b dari solusinya. Segera setelah saya mengubah direktori home ke var / www / html maka saya tidak dapat terhubung ke server melalui ssh dan sftp karena selalu menunjukkan kesalahan berikut

permission denied (public key)

atau di FileZilla saya menerima kesalahan ini:

No supported authentication methods available (server: public key)

Tapi saya bisa mengakses server melalui koneksi FTP normal.

Jika Anda mengalami kesalahan yang sama maka batalkan saja appendix b dari solusi @ clone45 dengan menetapkan direktori home default untuk pengguna:

sudo usermod -d /home/username/ username

Tetapi ketika Anda mengatur direktori home default pengguna maka pengguna memiliki akses ke banyak folder lain di luar / var / www / http. Jadi untuk mengamankan server Anda maka ikuti langkah-langkah ini:

1- Buat grup sftponly Buat grup untuk semua pengguna yang ingin Anda batasi hanya akses ftp dan sftp ke var / www / html. untuk membuat grup:

sudo groupadd sftponly

2- Memenjara chroot Untuk membatasi akses grup ini ke server melalui sftp Anda harus memenjarakan chroot untuk tidak membiarkan pengguna grup mengakses folder apa pun kecuali folder html di dalam direktori home. untuk melakukan ini buka /etc/ssh/sshd.config di vim dengan sudo. Di akhir file, silakan komentari baris ini:

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

Dan kemudian tambahkan baris ini di bawah ini:

Subsystem sftp internal-sftp

Jadi kami mengganti subsistem dengan internal-sftp. Kemudian tambahkan baris berikut di bawahnya:

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

Setelah menambahkan baris ini saya menyimpan perubahan saya dan memulai kembali layanan ssh dengan:

sudo service sshd restart

3 - Tambahkan pengguna ke grup sftponly Setiap pengguna yang Anda ingin membatasi akses mereka harus menjadi anggota grup sftponly. Oleh karena itu kami bergabung dengan sftponly dengan: sudo usermod -G sftponly username

4 - Batasi akses pengguna ke hanya var / www / html Untuk membatasi akses pengguna ke folder hanya var / www / html kita perlu membuat direktori di direktori home (dengan nama 'html') dari pengguna itu dan kemudian mount / var / www ke / home / nama pengguna / html sebagai berikut:

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

5- Tetapkan akses tulis Jika pengguna perlu akses tulis ke / var / www / html, maka Anda harus memenjarakan pengguna di / var / www yang harus memiliki root: kepemilikan root dan izin 755. Anda kemudian perlu memberikan / var / Kepemilikan www / html root: sftponly dan izin 775 dengan menambahkan baris berikut:

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- Blok akses shell Jika Anda ingin membatasi akses untuk tidak mengakses shell untuk membuatnya lebih aman maka cukup ubah shell default ke bin / false sebagai berikut:

sudo usermod -s /bin/false username
Iman Sedighi
sumber
pada Anda sudo mount --bind /var/www /home/username/htmlsaya diberitahu tidak ada folder www. Saya menganggap ini dilakukan dari root (di mana folder / home)?
elliotrock
1
sudo chown root:www /var/www/htmlmenyatakan chown: grup tidak valid: 'root: www'
elliotrock
2
Bagian 6 harus lebih baik dibaca sudo usermod -s /sbin/nologin usernamedari pembatasan shell modul pam vsftpd (dan tampaknya bekerja lebih baik dalam kasus saya). Dan bagian 4 mountperlu dilakukan pada setiap reboot, jadi ide yang bagus untuk meletakkannya di rc.local.
phy25
11

Artikel Hebat ... bekerja sangat mudah di Amazon Linux AMI.

Dua perintah lebih berguna:

Untuk mengubah folder unggahan FTP default

Langkah 1:

edit /etc/vsftpd/vsftpd.conf

Langkah 2: Buat entri baru di bagian bawah halaman:

local_root=/var/www/html

Untuk menerapkan baca, tulis, hapus izin ke file di bawah folder sehingga Anda dapat mengelola menggunakan perangkat FTP

find /var/www/html -type d -exec chmod 777 {} \;
Ravi Shanker
sumber
11
yang chmods setiap file dan folder ke 777, yang tidak aman untuk situs web
sergiogx
BAIK. Jadi perubahan apa yang Anda sarankan untuk ini?
Ravi Shanker
3
Anda harus menetapkan izin yang diperlukan, jangan hanya membuka semua izin untuk semuanya atau Anda meminta masalah. Misalnya menggunakan chmod -R ug + rw / var / www / html akan memberikan izin baca dan tulis untuk pengguna dan grup ke semua file tanpa memberikan izin eksekusi yang tidak dibutuhkan dan izin untuk yang lain. Kemudian atur pengguna dan grup sesuai sehingga Anda tidak perlu memodifikasi lainnya. Itu adalah jika pengguna ftp Anda dapat membaca dan menulis semua file dan server web Anda dapat membaca Anda diatur. Letakkan kedua pengguna di grup yang sama dan tambahkan rw ke pengguna dan r ke grup.
AaronM
Anda harus menerapkan 775 ke / var / www / html. selebihnya sub folder dan file bisa mendapatkan izin sesuai kebutuhan. 777 sangat tidak aman.
Iman Sedighi
6

Jika Anda mengaktifkan ufw, ingat tambahkan ftp:

> sudo ufw allow ftp

Butuh waktu 2 hari untuk menyadari bahwa saya mengaktifkan ufw.

chbong
sumber
atau iptables, atau ... ya saya selalu lupa juga!
jsh
6

Tidak akan apa-apa sampai Anda menambahkan pengguna Anda ke grup www dengan perintah berikut:

sudo usermod -a -G www <USER>

Ini menyelesaikan masalah izin.

Tetapkan jalur default dengan menambahkan ini:

local_root=/var/www/html
pengguna1802434
sumber
4

Jangan lupa untuk memperbarui firewall iptables Anda jika ada yang memungkinkan rentang 20-21 dan 1024-1048.

Lakukan ini dari / etc / sysconfig / iptables

Menambahkan baris seperti ini:

-A INPUT -m state --state BARU -m tcp -p tcp --dport 20:21 -j MENERIMA

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024: 1048 -j MENERIMA

Dan restart iptables dengan perintah:

sudo service iptables restart

Kevin Meek
sumber
4

Saya telah menyederhanakan langkah-langkah clone45:

Buka porta seperti yang dia sebutkan

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
Willem Bressers
sumber
2

Saya mengikuti jawaban clone45 sampai akhir. Artikel yang bagus! Karena saya memerlukan akses FTP untuk menginstal plug-in ke salah satu situs wordpress saya, saya mengubah direktori home ke / var / www / mysitename. Lalu saya terus menambahkan pengguna ftp saya ke grup apache (atau www) seperti ini:

sudo usermod -a -G apache myftpuser

Setelah ini, saya masih melihat kesalahan ini pada halaman instalasi plugin WP: "Tidak dapat menemukan direktori Konten WordPress (wp-content)". Mencari dan menemukan solusi ini pada sesi tanya jawab wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content dan menambahkan yang berikut ke akhir wp- config.php:

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

Setelah ini plugin WP saya berhasil diinstal.

CodeBrew
sumber
0

mungkin layak disebut selain jawaban clone45 :

Memperbaiki Izin Penulisan untuk Pengguna FTP yang Chroot di vsftpd

Versi vsftpd yang datang dengan Ubuntu 12.04 Precise tidak mengizinkan pengguna lokal chroot untuk menulis secara default. Secara default Anda akan memiliki ini di /etc/vsftpd.conf :

chroot_local_user=YES
write_enable=YES

Untuk memungkinkan pengguna lokal menulis, Anda perlu menambahkan parameter berikut:

allow_writeable_chroot=YES

Catatan: Masalah dengan izin menulis mungkin muncul sebagai kesalahan FileZilla berikut :

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

Referensi:
Memperbaiki Izin Menulis untuk Pengguna FTP yang Chroot di vsftpd
VSFTPd berhenti bekerja setelah pembaruan

Hartmut
sumber
0

Jika Anda salah 530 kata sandi

1 langkah lagi dibutuhkan

dalam file / etc / shells

Tambahkan baris berikut

/ bin / false

Varun Bhatia
sumber
-2

FileZila adalah alat FTP yang baik untuk melakukan setup dengan Amazon Cloud.

  1. Unduh klien FileZila dari https://filezilla-project.org/
  2. Klik pada File -> Site Manager ->
  3. Situs Baru
  4. Berikan alamat IP Nama Host dari lokasi cloud amazon Anda (Port jika ada)
  5. Protokol - SFTP (Dapat berubah berdasarkan kebutuhan Anda)
  6. Jenis Login - Normal (Jadi sistem tidak akan meminta kata sandi setiap kali)
  7. Berikan nama pengguna dan kata sandi.
  8. Menghubung.

Anda perlu melakukan langkah ini hanya 1 kali, nanti akan mengunggah konten ke alamat IP yang sama dan situs yang sama.

Pratima
sumber