رفع خطای Failed to retrieve directory listing هنگام اتصال به FTP

رفع خطای Failed to retrieve directory listing هنگام اتصال به FTP

یکی از مشکلات اساسی کاربران هنگام اتصال به حساب FTP سایت خود، این است که با وجود اینکه مطمئن هستند که نام کاربری و رمز عبور آنها صحیح است، اما قادر به اتصال صحیح به حساب FTP نیستند و خطای عدم نمایش فهرست محتویات مسیر ریشه را دریافت می کنند که این خطا با عنوان Failed to retrieve directory listing شناخته می‌شود.

چه از WinSCP استفاده کنید و چه از FileZilla، به هر حال اگر یک جای کار اتصال مشکل داشته باشد، با یک خطا عملیات اتصال شما لغو خواهد شد. پس بهتر است اطلاعات خودتان را افزایش دهید که اگر مشکل از سمت شما باشد،‌ آن را رفع کنید. یا اگر مشکل از سمت ارائه دهندهٔ سرویس‌تان است، برای برطرف کردن، آن را اعلام کنید. پس ابتدا به خطای معتبر نبودن SSL برای اتصال اشاره می‌کنیم که دلیل مرسومی است.

خطای معتبر نبودن SSL

این خطا ربطی به موضوع این آموزش ندارد. اما بد نیست ابتدا خطای اتصال امن به FTP را برای شما باز کنیم که بتوانید آن را رفع نمایید، که از این بابت مشکلی نداشته باشید. گاهی اوقات به دلیل اینکه در نسخه‌های قدیمی سرویس‌های FTP مثل pure-ftpd از SNI پشتیبانی نمی‌شود، گواهینامهٔ SSL ای که روی دامنهٔ هاست شما نصب است، برای اتصال به حساب FTP نمی‌توان از آن استفاده کرد. به همین دلیل هنگام اتصال، یک پنجره مشاهده می‌کنید که به شما می‌گوید که اتصال امن نیست. معمولاً در مواقعی که در File Zilla حالت اتصال را روی Use explicit FTP over TLS if available تنظیم می‌کنید این خطا را مشاهده می‌کنید که باید حالت اتصال را به Only use plain FTP (insecure) تغییر دهید که خطا برطرف شود که البته این کار اصلاً امن نیست.

خطای معتبر نبودن SSL در Filezilla

اما راه‌حل اصلی رفع این مشکل، در درجهٔ اول به روز رسانی نرم افزار pure-ftpd به نسخهٔ ۱٫۰٫۴۹ و بالاتر است. که اگر این کار برای شما امکان پذیر نبود (به دلایل مختلف از قبیل عدم دسترسی ریشه به سرور)، می‌توانید به جای نام میزبان ftp.example.com از هاست نیم (hsotname) اصلی سرور استفاده کنید که گواهینامهٔ معتبر SSL روی آن از قبل نصب شده است. برای به دست آوردن هاست نیم اصلی سرور، هم می‌توانید از داخل کنترل پنل هاست خود، مثلا سی‌پنل یا دایرکت ادمین اقدام کنید. هم در ایمیل فعال سازی سرویس قطعاً‌ نام hostname هاست‌تان را ذکر کرده. یا اگر در نهایت نتوانستید هاست نیم سرور را پیدا کنید،‌ می‌توانید از طریق تیکت با پشتیبان در تماس باشید.

باز نبودن پورت‌های مورد نیاز سرویس FTP

دلیل اصلی خطای مورد بحث ما در این آموزش، باز نبودن پورت‌های مورد نیاز برای حالت passive mode در FTP روی شبکهٔ سرور است. اگر شما مطمئن بودید که تمامی اطلاعاتی که وارد کردید صحیح است، و مشکل خطای SSL هم رفع شده است، مشکل اینجاست. ابتدا موضوع خطایی که دریافت می‌کنیم را در زیر مشاهده کنید:

...
Command:	PROT P
Response:	۲۰۰ Data protection level set to "private"
Status:	Logged in
Status:	Retrieving directory listing...
Command:	PWD
Response:	۲۵۷ "/" is your current location
Command:	TYPE I
Response:	۲۰۰ TYPE is now 8-bit binary
Command:	PASV
Response:	۲۲۷ Entering Passive Mode (185,218,3,93,227,247)
Command:	MLSD
Error:	Connection timed out after 20 seconds of inactivity
Error:	Failed to retrieve directory listing

به طور معمول، پروتکل FTP از دو تا پورت برای اتصال استفاده می‌کند. پورت اول پورت دستورات است که دستورات مربوط به سرویس FTP را رد بدل می‌کند که معمولاً عدد آن ۲۱ است. یک پورت هم برای انتقال خود داده‌ها و اطلاعات است که عدد آن ۲۰ است. این ساختار برای حالت active mode اتصال FTP است. اگر اتصال شما به سرور active mode باشد، زمانی که دو تا پورت ۲۰ و ۲۱ روی فایروال یا دیوارآتش سرور شما باز باشد، نباید مشکلی از بابت اتصال به FTP داشته باشید. برای اینکه این موضوع را بررسی کنید‌، اگر خودتان دسترسی ریشه به سرورتان را دارید،‌ پیکربندی سرویس FTP را بررسی کنید. اما اگر یک هاست معمولی خریداری کردید، این موضوع را با پشتیبان هاست خود در میان بگذارید.

اما یک حالت دیگر برای اتصال به FTP وجود دارد که به آن passive mode گفته می‌شود. در این حالت برای انتقال دستورات FTP که از همان پورت ۲۱ استفاده می‌شود که معمولاً باز است. اما برای انتقال داده‌های فایل‌ها از یک پورت تصادفی بین اعداد ۴۹۱۵۲ و ۶۵۵۳۴ استفاده می‌شود که البته این کاملاً بستگی به تنظیمات سرویس FTP سرور دارد. اگر این پورت‌ها که چیزی حدود ۱۶,۳۸۲ عدد پورت است، روی سرور بسته باشند، کاربر خطای Failed to retrieve directory listing را دریافت می‌کند.

پس در این حالت هم اگر مدیریت کل سرور دست خود شماست (دسترسی root دارید)، می‌بایستی این موضوع را روی فایروال سرور خود بررسی کنید که این پورت‌ها باز باشند. اما اگر یک کاربر معمولی روی سرور وب باشید، باید با پشتیبان هاست خود تماس بگیرید که مشکل را بررسی کنند. می‌توانید پیوند این مقاله را هم به آنها بدهید تا راهنمای خوبی برای آنها باشد.

در نظر داشته باشید که گاهی اوقات ممکن است که دسترسی ریشه به سرور داشته باشید و پورت‌های مورد نظر passive mode را هم روی سرور از طریق فایروال باز کرده باشید. اما مشکل حل نشود! باید بدانید که ممکن است در سطوح بالاتر، در شبکهٔ اصلی دیتاسنتر یا فروشندهٔ سرور اختصاصی یا مجازی پورت‌ها بسته باشند که در این شرایط حتماً باید با پشتیبان سرور خود تماس بگیرید و درخواست باز کردن پورت‌ها را نمایید.

ژوئن 4, 2022 Webnolog بدون دیدگاه

0 دیدگاه

دیدگاه تان را ارسال کنید.

ایمیل شما منتشر نخواهد شد!