C# Mengunggah file ke FTP jarak jauh dilarang oleh firewall Windows

Saya menggunakan perpustakaan C# FtpClient untuk mengunggah file. Koneksi dibuat setelah saya menyetel port khusus 3072, karena saya menyetel client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;

Tapi saat aku akan melewatinya

client.GetFilePermissions("/Test.txt");
client.UploadFile(@"C:\Users\Desktop\Test.txt", "/Test.txt");

itu akan selalu menunjukkan pengecualian

Tidak dapat membaca data dari koneksi transport: Upaya telah dilakukan untuk mengakses soket dengan cara yang dilarang oleh izin aksesnya.

Jika saya mematikan Windows Firewall, file berhasil diunggah.

Saya ingin tahu kebijakan apa yang harus saya tetapkan pada firewall Windows agar saya dapat menyentuh file jarak jauh dan mengunggahnya.

Pengaturan firewall saya saat ini:

  • (Masuk)
    Port lokal 3072,80,20,21,1023
    Port jarak jauh 3072,80,20,21,1023

  • (Keluar)
    Port lokal 3072,80,20,21,1023
    Port jarak jauh 3072,80,20,21,1023

Kode lengkap saya

FtpClient client = new FtpClient();
client.Host = "xx.xx.xx.xx";
client.Credentials = new NetworkCredential(UserName, Password);
client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;

client.Connect();
if (client.IsConnected)
{
    Console.WriteLine("Connected");
    client.DataConnectionEncryption = true;
    var resutl = client.GetFilePermissions("/Test.txt");
    client.UploadFile(@"C:\Users\Desktop\Test.txt", "/Test.txt");
}
else
{
    Console.WriteLine("No Connetion");
}

person Kun-Yao Wang    schedule 22.06.2017    source sumber
comment
Mungkin ada beberapa informasi yang relevan di sini: serverfault.com/questions/401304/ - coba juga ajukan pertanyaan di situs itu karena tampaknya lebih relevan daripada SO.   -  person PaulF    schedule 22.06.2017
comment
Jika Anda yakin ini hanya masalah firewall, pertanyaan Anda di luar topik di Stack Overflow, pindahkan ke Pengguna Super. - Dan Anda harus menunjukkan kepada kami beberapa file log. Dan lebih banyak lagi kode Anda! Atau setidaknya beri tahu kami apakah Anda menggunakan mode pasif atau aktif.   -  person Martin Prikryl    schedule 23.06.2017
comment
@MartinPrikryl Terima kasih telah mengingatkan. sekarang saya menambahkan kode saya. Saya tidak punya log lain selain pesan pengecualian. bisakah saya mengatur kode FTP saya menjadi pasif atau aktif?   -  person Kun-Yao Wang    schedule 23.06.2017
comment
Koneksi dibuat setelah saya menyetel port khusus 3072, karena saya menyetel client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12; - Kalimat itu tidak masuk akal bagi saya - Apa hubungannya dengan SslProtocols.Tls12 ke port 3072?   -  person Martin Prikryl    schedule 23.06.2017
comment
Saya menetapkan 3072 karena saya melihat jawabannya di pertanyaan ini stackoverflow.com/questions/28286086/   -  person Kun-Yao Wang    schedule 23.06.2017
comment
Tidak ada kabar tentang 3072 sebagai nomor port. Ini adalah nilai numerik Tls12 elemen dari SecurityProtocolType enumerasi!   -  person Martin Prikryl    schedule 23.06.2017


Jawaban (3)


Jika Anda memang memblokir semua port keluar/masuk, kecuali yang terdaftar, FTP akan sulit berfungsi.

Protokol FTP menggunakan rentang port koneksi transfer terpisah, baik keluar (mode pasif yang disarankan) atau masuk (mode aktif).

Untuk mengatur mode pasif, Anda harus mencari tahu rentang port apa yang digunakan server FTP, dan mengaktifkannya di firewall.

Untuk detailnya, lihat artikel saya di penyiapan jaringan untuk protokol FTP.

person Martin Prikryl    schedule 23.06.2017
comment
mereka menggunakan server FTP pasif, sekarang saya membuka port lokal inbound 1024~65535 dan port remote outbound 21 dan 20, tetapi masih tidak berfungsi - person Kun-Yao Wang; 06.07.2017
comment
Mode pasif hanya menggunakan koneksi keluar. Membuka port lokal masuk 1024~65535 tidak masuk akal. - person Martin Prikryl; 07.07.2017
comment
Saya tidak mengerti komentar Anda. - person Martin Prikryl; 13.07.2017
comment
Saya mengetahui jika saya mematikan Jaringan Pribadi hanya di firewall Windows, dan mengaktifkan kebijakan FTP di Inbound dan Outbound, itu berhasil. - person Kun-Yao Wang; 13.07.2017

  • Buka prompt perintah Administrator. Klik Mulai, klik Semua Program, klik Aksesori, klik kanan Command Prompt, lalu klik Jalankan sebagai Administrator.

  • Jalankan perintah berikut:

1.netsh advfirewall firewall tambahkan nama aturan=”Layanan FTP” action=izinkan layanan=protokol ftpsvc=TCP dir=in

2.netsh advfirewall menyetel penonaktifan StatefulFTP global

https://technet.microsoft.com/en-us/library/dd421710(v=WS.10).aspx

person Kun-Yao Wang    schedule 17.07.2017
comment
Itu tidak dapat membantu dengan koneksi terenkripsi TLS/SSL. Firewall tidak dapat memeriksa koneksi terenkripsi. + Jawaban Anda harus bekerja sendiri, meskipun tautannya rusak. Jadi harap sertakan perintah tersebut ke dalam jawaban Anda. - person Martin Prikryl; 17.07.2017
comment
Tapi bukan itu yang dimaksud dengan pertanyaan Anda. Jawaban Anda setidaknya harus menyebutkan bahwa Anda menyerah pada keamanan. Jawabannya salah tanpa informasi itu. - person Martin Prikryl; 21.07.2017

Apakah ini server FTP pasif? Jika demikian, Anda mungkin perlu membuka rentang port seperti yang dijelaskan di sini:

https://technet.microsoft.com/en-us/library/083f7757-ad9f-421a-9cde-7a053f3de9a6

person Manuel Fernández Santo Tomás    schedule 22.06.2017
comment
Saya tidak dapat mengatur FTP jarak jauh, saya hanya berpikir mungkin ada kebijakan yang diatur di firewall saya untuk memblokirnya - person Kun-Yao Wang; 22.06.2017
comment
Saya bertanya kepada mereka, mereka menggunakan server FTP pasif, sekarang saya membuka port lokal inbound 1024~65535 dan port remote outbound 21 dan 20, tetapi masih tidak berfungsi - person Kun-Yao Wang; 06.07.2017