آموزش کامل اتصال FTP به سرور و هاست
این راهنما همهٔ جنبههای لازم برای اتصال، انتقال، ایمنسازی و عیبیابی اتصال به سرورهای FTP/FTPS/SFTP را بهصورت گامبهگام، همراه مثالها، تنظیمات متداول سرور و کلاینت، نکات امنیتی و دستورات پرکاربرد پوشش میدهد.
آمادهسازی: اطلاعات و پیشنیازها
قبل از تلاش برای اتصال به سرور، اطلاعات و موارد زیر را آماده کنید:
– آدرس سرور (Host): دامنه یا آدرس IP (مثلاً example.com یا 192.0.2.1).
– پورت: پیشفرض FTP = 21، FTPS (implicit) = 990، SFTP = 22؛ ممکن است ارائهدهنده پورت دیگری تعیین کند.
– نام کاربری و رمز عبور: از میزبان یا ادمین دریافت میشود.
– نوع اتصال مورد نیاز: FTP، FTPS (Explicit/Implicit) یا SFTP.
– (اختیاری) کلید خصوصی SSH برای SFTP (PEM/ppk).
– کلاینت دلخواه: FileZilla, WinSCP, Cyberduck, lftp, command-line ftp/sftp, PuTTY/PSCP/PSFTP.
– سطح دسترسی مورد انتظار: پوشهٔ home، public_html، یا روت (معمولاً دسترسی روت به FTP امن نیست).
– اتصال شبکه: فایروال یا NAT ممکن است پورتها را مسدود کند؛ دسترسی اینترنتی به پورتهای مورد نیاز لازم است.
تفاوت پروتکلها و انتخاب مناسب
– FTP (Plain FTP): متن ساده — نام کاربری، رمز عبور و محتوا رمزگذاری نمیشود. مناسب شبکهٔ داخلی یا محیطهای کنترلشده. نه برای انتقال دادههای حساس.
– FTPS (FTP over SSL/TLS): همان FTP با لایهٔ امن TLS/SSL. دو حالت: Explicit (پورت 21; TLS ارتقا مییابد) و Implicit (معمولاً پورت 990). مناسب میزبانی وب و زمانی که سرور از گواهی TLS پشتیبانی میکند.
– SFTP (SSH File Transfer Protocol): انتقال فایل روی کانال SSH؛ از نظر امنیتی قویتر و رایجتر در سیستمهای لینوکس/SSH. پورت پیشفرض 22.
کدام را انتخاب کنیم؟ بهطور کلی: اگر سرور SSH دارد و شما میتوانید SFTP انتخاب کنید، SFTP را برگزینید. اگر میزبان فقط FTP ارائه میدهد، از FTPS اگر ممکن است استفاده کنید.
مفاهیم پایه: حالتهای فعال و منفعل در FTP
– Active Mode (حالت فعال): کلاینت به سرور متصل میشود ولی سرور از پورت 20 به کلاینت کانکشن دیتا برقرار میکند — مشکلساز با فایروال/NAT.
– Passive Mode (حالت منفعل): سرور پورت داده را باز میآورد و کلاینت به آن متصل میشود — اغلب مناسبتر با فایروال.
گرچه در FTPS/ SFTP این موضوع متفاوت است (SFTP فقط از یک کانال واحد استفاده میکند)، در FTP کلاسیک معمولاً Passive mode استفاده شود.
اتصال با کلاینت گرافیکی: FileZilla (توضیح کامل)
FileZilla یک کلاینت رایگان و محبوب است. مراحل اتصال و تنظیمات:
دانلود و نصب
– فایل نصب را از سایت رسمی دانلود و نصب کنید. نسخهٔ Client را انتخاب کنید (نه Server).

ساخت سایت جدید (Site Manager)
- FileZilla را باز کنید.
- منوی File → Site Manager → New Site. نامی انتخاب کنید.
- فیلدها را پر کنید:
– Host: example.com یا IP
– Port: 21 یا 22 یا پورتی که ارائهدهنده گفته
– Protocol: انتخاب کنید:
– FTP — File Transfer Protocol (برای FTP/FTPS)
– SFTP — SSH File Transfer Protocol
– Encryption (برای FTP):
– Use explicit FTP over TLS if available (توصیهشده برای FTPS explicit)
– Require explicit FTP over TLS (برای اطمینان).
– Use implicit FTP over TLS (برای FTPS implicit روی پورت 990)
– Logon Type:
– Anonymous (اگر اجازه داده شده)
– Normal — وارد کردن username و password
– Ask for password — امنتر برای ذخیره نکردن رمز
– Key file (برای SFTP با کلید خصوصی)

- پس از پر کردن اطلاعات، Save و سپس
- در اولین اتصال FTPS/SFTP ممکن است پیغام قبول کلید/گواهی ظاهر شود — جزئیات را بررسی و Accept/Always trust را بر اساس سیاست امنیتی انتخاب کنید.
حافظهٔ رمز عبور و امنیت
– از ذخیرهٔ رمز در کلاینت روی کامپیوتر عمومی خودداری کنید.
– استفاده از passphrase برای کلید خصوصی SSH توصیه میشود.
انتقال فایل
– پنجرهٔ سمت چپ: فایلهای محلی؛ سمت راست: فایلهای سرور.
– Drag & Drop برای انتقال.
– نوار وضعیت نشانگر صف انتقال و تاریخچهٔ خطاها است.
اتصال با WinSCP (Windows)
WinSCP برای ویندوز رابط گرافیکی و همچنین اسکریپتنویسی دارد.
مراحل
- نصب
- در پنجرهٔ Login:
– File protocol: SFTP یا FTP (یا FTPS).
– Host name، Port number، User name، Password را وارد کنید.
– Advanced → Authentication برای تعیین private key (برای SFTP) یا TLS settings.
- Login → Accept certificate/host key در اولین اتصال.
- رابط: دو پنل (Commander) یا شکل Explorer؛ انتقال با کشیدن و رها کردن.




اسکریپتنویسی و خط فرمان
– WinSCP امکان اجرای اسکریپت اتوماتیک و استفاده در Task Scheduler را دارد. مثال اسکریپت:
open sftp://user@example.com/ -privatekey="C:\path\key.ppk" put C:\local\file.txt /remote/path/ exit
اتصال از خط فرمان: ftp، sftp، lftp، scp
خط فرمان برای اتوماسیون و سرورهای بدون GUI ضروری است.
FTP پایه (کلاینت ftp در لینوکس)
– اتصال:
ftp example.com
سپس نام کاربری و رمز را وارد کنید.
– دستورات مفید:
- ls — فهرست فایلها - cd remote_dir — تغییر دایرکتوری سرور - lcd local_dir — تغییر دایرکتوری محلی - get filename — دانلود فایل - put filename — آپلود فایل - mget/mput — چند فایل - ascii / binary — حالت انتقال - bye/quit — خروج
– نکته: این ftp معمولاً غیررمزی است؛ از آن در اینترنت عمومی استفاده نکنید.
SFTP (کلاینت sftp در لینوکس/مک)
– اتصال:
sftp user@example.com
– دستورات:
- ls, lls — لیست در سرور و محلی - cd, lcd — تغییر دایرکتوری - get file — دانلود - put file — آپلود - mkdir, rmdir, rm — مدیریت فایل/پوشه - exit — خروج
– SFTP از SSH استفاده میکند، امن و معمولاً بهترین گزینه.
SCP (کپی امن تکدستور)
– مثال:
scp localfile user@example.com:/remote/path/
– مناسب برای انتقال تکی یا در اسکریپتها؛ فرمت شناختهشده و ساده.
lftp (پیشرفته، پشتیبانی از FTP/FTPS/SFTP و صفبندی)
– lftp برای اسکریپتها و ذیل کردن چندین دستور مناسب است:
lftp -u user,password -e "mirror -R localdir remotedir; quit" ftp://example.com
استفاده از کلید SSH برای SFTP (احراز هویت بدون رمز)
استفاده از کلید عمومی-خصوصی امنتر از رمز عبور است و امکان ورود بدون رمز را فراهم میکند.
تولید کلید (در لینوکس/مک)
– دستور:
ssh-keygen -t ed25519 -C “your_email@example.com”
یا برای RSA: ssh-keygen -t rsa -b 4096
– فایل private (مثلاً ~/.ssh/id_ed25519) و public (~/.ssh/id_ed25519.pub) ساخته میشود.
– برای افزایش امنیت از passphrase استفاده کنید.
نصب کلید عمومی در سرور
– اگر دسترسی SSH دارید:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
– اگر فقط FTP panel دارید، بسیاری از کنترلپنلها (cPanel، Plesk) امکان بارگذاری کلید عمومی را دارند.
استفاده در کلاینتها
– FileZilla: Site Manager → Logon Type: Key file → مسیر فایل (معمولاً فایل private). ممکن است لازم باشد کلید را به فرمت PPK با PuTTYgen تبدیل کنید برای استفاده در PuTTY/WinSCP.
– WinSCP: Advanced → Authentication → Private key file.
– ssh-agent / Pageant: برای مدیریت passphrase و بارگذاری کلید.
تنظیمات سرور: پیکربندی پایهای برای مدیران سیستم
در این بخش مثالهایی از تنظیم FTP/SFTP server در لینوکس آورده شده است.
راهاندازی OpenSSH (برای SFTP)
– معمولاً OpenSSH server نصب است:
sudo apt install openssh-server
– تنظیمات SFTP در /etc/ssh/sshd_config:
– اطمینان از AllowUsers یا AllowGroups در صورت نیاز.
– برای چاهزدن (chroot) کاربران SFTP:
Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory /var/www/%u ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
– پس از تغییرات:
sudo systemctl restart sshd
راهاندازی vsftpd (برای FTPS/FTP)
– نصب:
sudo apt install vsftpd
– مثال تنظیمات کلیدی در /etc/vsftpd.conf:
- anonymous_enable=NO - local_enable=YES - write_enable=YES - chroot_local_user=YES - ssl_enable=YES - rsa_cert_file=/etc/ssl/certs/vsftpd.pem - rsa_private_key_file=/etc/ssl/private/vsftpd.key
– تولید گواهی خودامضا (برای تست):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.pem
– سپس سرویس را ریاستارت کنید:
sudo systemctl restart vsftpd
مجوزها و مالکیت فایلها (مهم)
– برای chroot و امنیت، دایرکتوری chroot باید مالک root و مجوز 755 داشته باشد؛ زیرپوشهها میتوانند توسط کاربر باشند.
– مثال:
sudo chown root:root /home/ftpuser sudo chmod 755 /home/ftpuser mkdir /home/ftpuser/uploads sudo chown ftpuser:ftpuser /home/ftpuser/uploads
ساختار دایرکتوری، مجوزها و مالکیت
– سلسلهمراتب معمول:
- /home/username — محل پیشفرض کاربران - /var/www/html یا public_html — محل فایلهای وب
– مجوزها:
– chmod 755 برای دایرکتوریهایی که نیاز به اجرای لیست دارند.
– chmod 644 برای فایلهای عمومی.
– chmod 700 یا 600 برای فایلهایی که باید خصوصی بمانند.
– مالیکت (owner:group): chown user:group file
– نکتهٔ امنیتی: هرگاه ممکن است از دسترسی نوشتن عمومی (others write) خودداری کنید (مثلاً chmod 777).
نکات امنیتی و بهترین شیوهها
– ترجیح: SFTP یا FTPS بهجای FTP ساده.
– از کلیدهای SSH با passphrase استفاده کنید. از ssh-agent برای مدیریت passphrase استفاده کنید.
– گواهی معتبر TLS در FTPS: از گواهیهای صادرشده توسط CA معتبر استفاده کنید (Let’s Encrypt را بررسی کنید اگر سرور HTTP/S دارید؛ FTPS معمولاً نیاز به CA متفاوت دارد).
– محدودیت دسترسی: کاربران را به دایرکتوری مورد نیاز chroot کنید تا دسترسی به کل سیستم محدود شود.
– محدود کردن کاربران: AllowUsers یا AllowGroups در SSH/FTP.
– مانیتورینگ و لاگ: لاگها را بهطور منظم نظارت کنید (auth.log, vsftpd.log).
– فایروال: پورتهای غیرضروری را ببندید؛ برای FTP passive باید بازه پورتهای پاسیو را مشخص و باز کنید.
– استفاده از انتقال امن برای اسکریپتها (scp/rsync-over-ssh) وقتی لازم است.
– محافظت در برابر brute-force: fail2ban یا مشابه برای مسدود کردن تلاشهای متوالی.
– حذف یا غیرفعال کردن دسترسی anonymous مگر ضرورت داشته باشد.
– بررسی و نصب آپدیتهای امنیتی منظم برای SSH/FTP server.
عیبیابی عمومی و رفع خطاها
در این بخش خطاهای رایج و راهحلها آورده شده است.
خطای اتصال: Connection refused یا timed out
– بررسی کنید سرویس فعال است (systemctl status sshd/vsftpd).
– پورت و آدرس درست است؟ از telnet example.com 21 یا 22 استفاده کنید.
– فایروال محلی یا میزبان (ufw, iptables، یا فایروال شبکه) پورت را مسدود نکرده باشد.
– NAT یا روتر در مسیر هست؟ پورت فورواردینگ انجام شود.
خطای TLS/SSL: certificate verify failed یا TLS negotiation failed
– گواهی منقضی یا self-signed است — اگر در محیط امن و کنترلشده هستید Accept کنید یا گواهی معتبر نصب کنید.
– برای FTPS implicit/explicit پورت/تنظیمات Encryption را بررسی کنید.
خطای passive/active data connection timeout
– در حالت FTP کلاسیک، اگر از حالت Active استفاده میکنید و کلاینت پشت NAT است ممکن است Data connection برقرار نشود — به Passive تغییر دهید.
– در حالت Passive، مطمئن شوید رنج پورتهای پاسیو در سرور مشخص و در فایروال باز شده است.
permission denied یا cannot create directory
– بررسی مالکیت و مجوز پوشهٔ مقصد: chmod/chown مناسب را اعمال کنید.
– در chroot اگر دایرکتوری ریشه مالیکت root نداشته باشد، SFTP ممکن است خطا دهد.
authentication errors (permission denied)
– نام کاربری و رمز درستاند؟ از ورود SSH دستی برای تست استفاده کنید.
– اگر از کلید استفاده میکنید، اطمینان از مجوزهای درست فایلها: private key نباید جهانی خواندنی باشد (chmod 600).
– برای SSH، authorized_keys صحیح و دارای newline در انتها باشد.
خطای 530 Login incorrect (برای FTP)
– اعتبارنامه اشتباه است یا حساب غیرفعال/مسدود شده. بررسی کنید از پنل هاست یا ادمین وضعیت حساب.
سرعت پایین یا قطع مکرر
– اتصال شبکه ضعیف یا قطعی ISP.
– محدودیت پهنای باند در سرور یا throttling.
– برای فایلهای بزرگ از rsync-over-ssh یا resume support در کلاینتها استفاده کنید.
سناریوها و مثالهای عملی
موارد کاربردی و دستورات نمونه.
مثال A: آپلود سایت به public_html با FileZilla (SFTP)
- Site Manager → Host: example.com → Protocol: SFTP → Logon Type: Normal → Username/Password → Port: 22 → Connect.
- در سمت راست به /home/username/public_html بروید.
- فایلهای محلی را کشیده و در پوشهٔ سمت راست رها کنید.
- پس از آپلود، مجوز فایلها را روی 644 و پوشهها 755 تنظیم کنید (در FileZilla راستکلیک → File permissions).
مثال B: انتقال پوشهٔ محلی به سرور با lftp (ریکرسیو)
lftp -u user,password ftp://example.com -e "mirror -R /local/path /remote/path; quit"
مثال C: دانلود بکاپ از سرور با scp
scp user@example.com:/var/backups/backup.tar.gz ~/backups/
مثال D: نصب کلید SSH و اتصال بدون رمز
– تولید کلید:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_site -C "site key"
– کپی کلید به سرور:
ssh-copy-id -i ~/.ssh/id_ed25519_site.pub user@example.com
– اتصال:
sftp -i ~/.ssh/id_ed25519_site user@example.com
مثال E: پیکرهبندی Passive FTP در vsftpd
– در /etc/vsftpd.conf اضافه کنید:
pasv_enable=YES pasv_min_port=30000 pasv_max_port=30100 pasv_address=YOUR_PUBLIC_IP
– باز کردن پورتها در فایروال (مثال ufw):
sudo ufw allow 21/tcp sudo ufw allow 30000:30100/tcp
اتوماسیون و اسکریپتها
برای پشتیبانگیری منظم یا انتقال فایل زمانبندی شده میتوانید از cron، rsync یا اسکریپتهای sftp استفاده کنید.
نمونه کرون برای انتقال با scp
– اسکریپت bash /usr/local/bin/upload_backup.sh:
!/bin/bash scp /path/to/backup.tar.gz user@example.com:/remote/backups/
– کرون:
0 2 * * * /usr/local/bin/upload_backup.sh
استفاده از rsync over ssh (ذخیرهٔ پهنای باند و resume)
rsync -avz -e "ssh -i ~/.ssh/id_rsa" /local/dir/ user@example.com:/remote/dir/
دستورات و منابع پرکاربرد (مرجع سریع)
- ssh-keygen, ssh-copy-id, ssh, sftp, scp, rsync, ftp, lftp, curlftpfs (مونت FTP)، vsftpd, proftpd، FileZilla, WinSCP. - باز کردن پورت جهت تست: telnet example.com 22 یا nc -vz example.com 22 - بررسی سرویسها: systemctl status sshd vsftpd - لاگها: /var/log/auth.log، /var/log/vsftpd.log یا لاگهای مربوط به سرویس
چکلیست قبل از اتصال برای کاربر نهایی
– آیا آدرس، پورت، نام کاربری و رمز عبور درست است؟
– از SFTP/FTPS به جای FTP استفاده میکنید؟
– آیا فایروال محلی/شبکه پورت مورد نیاز را باز کرده است؟
– آیا از حالت Passive برای FTP استفاده کردهاید (در صورت نیاز)؟
– آیا اگر از کلید SSH استفاده میکنید، کلید بارگذاری و مجوزها درستاند؟
– آیا دایرکتوری مقصد دارای مجوز کافی است؟
نکات تکمیلی و توصیههای عملی
– برای انتقال فایلهای بزرگ از resume (ادامه آپلود/دانلود) پشتیبانی استفاده کنید؛ FileZilla این امکان را دارد.
– برای توسعه وب، پس از آپلود فایلهای PHP/HTML، بررسی کنید کش مرورگر سرور یا CDN پاک شود تا تغییرات نمایان شود.
– برای امنیت اضافی، محدودیت IP را در سرور اعمال کنید تا فقط آدرسهای مشخص اجازهٔ اتصال داشته باشند.
– اگر میزبان شما cPanel یا Plesk دارد، محیط فایلها و کلیدها را معمولاً از طریق پنل مدیریت نیز میتوانید کنترل کنید (FTP Accounts, SSH Access).
– برای میزبانی تجاری از SFTP/FTPS با CA معتبر استفاده کنید و ذخیرهٔ رمز در کلاینت عموماً توصیه نمیشود.
جمعبندی کوتاه (عملی)
– بهترین گزینهٔ امن برای انتقال فایل: SFTP (SSH).
– اگر SFTP در دسترس نیست، FTPS با TLS گزینهٔ بعدی است.
– برای FTP کلاسیک از Passive mode استفاده کنید و هرگز اطلاعات حساس را بدون رمزگذاری منتقل نکنید.
– همیشه مجوزها، لاگها و بهروزرسانیهای امنیتی را نسبت به سرور و سرویسگیرنده بررسی کنید.





قوانین ارسال دیدگاه
لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.