رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش استفاده از SFTP برای انتقال امن فایل‌ها به سرور راه دور

آموزش استفاده از SFTP برای انتقال امن فایل‌ها به سرور راه دور

SFTP پروتکلی امن برای انتقال فایل‌هاست که مبتنی بر SSH کار می‌کند و جایگزین امن FTP محسوب می‌شود. با SFTP می‌توان فایل‌ها را آپلود، دانلود، مدیریت و مجوزهای آن‌ها را از طریق خط فرمان کنترل کرد. این آموزش نشان می‌دهد چگونه با SFTP به سرور متصل شوید، فایل‌ها را جابجا کنید و از ویژگی‌های امنیتی و خودکارسازی آن بهره ببرید.

مقدمه

در گذشته، FTP یا File Transfer Protocol یکی از رایج‌ترین روش‌ها برای انتقال فایل بین دو سیستم راه دور بود. اما این پروتکل به دلیل نداشتن رمزنگاری و ضعف‌های امنیتی، از سال ۲۰۲۲ به بعد توسط اغلب نرم‌افزارهای مدرن کنار گذاشته شده و امروز تنها در سیستم‌های قدیمی یا شبکه‌های کاملاً محدود استفاده می‌شود.

SFTP که مخفف Secure File Transfer Protocol است، پروتکلی مستقل اما مبتنی بر SSH محسوب می‌شود که امکان اجرای دستورات انتقال فایل را روی یک اتصال امن فراهم می‌کند. در اکثر سناریوهایی که قبلاً از FTP استفاده می‌شد، SFTP می‌تواند بدون دردسر جایگزین آن شود.

در تقریباً تمام شرایط، SFTP به دلیل امنیت بالاتر و استفاده از زیرساخت SSH، انتخاب بهتری نسبت به FTP است. FTP ذاتاً ناامن است و فقط در شرایط خاص یا شبکه‌های مورد اعتماد پیشنهاد می‌شود.

اگرچه SFTP در بسیاری از ابزارهای گرافیکی نیز وجود دارد، در این آموزش تمرکز ما بر استفاده از SFTP از طریق خط فرمان خواهد بود.


اتصال به سرور با SFTP

SFTP به‌صورت پیش‌فرض از SSH برای احراز هویت و ایجاد اتصال امن استفاده می‌کند. به همین دلیل، تمام روش‌های احراز هویت SSH از جمله رمز عبور و کلید SSH در SFTP نیز قابل استفاده هستند.

هرچند ورود با رمز عبور امکان‌پذیر است، اما دیدگاه به‌شدت توصیه می‌کند از کلیدهای SSH استفاده کنید. این روش هم امنیت بالاتری دارد و هم در بلندمدت باعث صرفه‌جویی در زمان می‌شود.

اگر بتوانید از طریق SSH به سرور متصل شوید، عملاً تمام پیش‌نیازهای استفاده از SFTP را دارید. برای تست اتصال SSH از دستور زیر استفاده کنید:

ssh user@server_ip
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در صورت موفق بودن اتصال، با دستور زیر خارج شوید:

exit
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

حالا می‌توانید جلسه SFTP را آغاز کنید:

sftp user@server_ip
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در صورتی که SSH روی پورتی غیر از ۲۲ اجرا می‌شود:

sftp -oPort=custom_port user@server_ip
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دریافت راهنما در محیط SFTP

مهم‌ترین دستور در SFTP، دستور راهنما است. با اجرای یکی از دستورات زیر، لیست کامل دستورات قابل استفاده نمایش داده می‌شود:

help
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

یا

?
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

جابجایی در دایرکتوری‌ها

برای مشاهده مسیر فعلی در سرور راه دور:

pwd
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای نمایش فایل‌ها و پوشه‌ها:

ls
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای نمایش اطلاعات کامل فایل‌ها:

ls -la
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای تغییر مسیر:

cd directory_name
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

کار با فایل‌های محلی

در SFTP می‌توانید با افزودن حرف l به ابتدای دستورات، روی سیستم محلی کار کنید.

نمایش مسیر فعلی سیستم محلی:

lpwd
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

نمایش فایل‌های محلی:

lls
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تغییر مسیر محلی:

lcd Desktop
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دانلود فایل از سرور

برای دانلود یک فایل از سرور:

get remoteFile
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دانلود فایل با نام متفاوت:

get remoteFile localFile
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دانلود یک پوشه به‌صورت بازگشتی:

get -r directory
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

حفظ مجوزها و زمان دسترسی:

get -Pr directory
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

آپلود فایل به سرور

برای ارسال فایل به سرور:

put localFile
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ارسال پوشه کامل:

put -r localDirectory
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

بررسی فضای دیسک

برای بررسی فضای دیسک روی سرور:

df -h
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای اجرای دستورات محلی در محیط SFTP:

!
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

و سپس:

df -h
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای بازگشت به محیط SFTP:

exit
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مدیریت ساده فایل‌ها

تغییر مالک فایل (با UID):

chown uid file
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تغییر گروه فایل:

chgrp gid file
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تغییر سطح دسترسی:

chmod 777 file
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تنظیم umask محلی:

lumask 022
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ایجاد پوشه:

2 خط
mkdir remote_dir
lmkdir local_dir
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

حذف فایل یا پوشه:

2 خط
rm file
rmdir dir
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

استفاده از SFTP در توزیع‌های مختلف لینوکس

Ubuntu / Debian

3 خط
sudo apt update
sudo apt install openssh-server
sudo systemctl restart ssh
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

CentOS / RHEL

3 خط
sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

Fedora

2 خط
sudo dnf install openssh-server
sudo systemctl restart sshd
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

راه‌اندازی یک سرور SFTP ساده

  1. نصب سرویس SSH

  2. فعال بودن Subsystem مربوط به SFTP در فایل sshd_config

  3. ری‌استارت سرویس SSH

  4. ساخت کاربر محدود برای SFTP


خطاهای رایج و رفع آن‌ها

Permission Denied

علت: نداشتن دسترسی نوشتن در مسیر مقصد

راه‌حل:

  • بررسی مجوزها با ls -ld

  • تغییر مالکیت با chown

  • اصلاح دسترسی با chmod

Connection Refused یا Timed Out

علت: مشکل شبکه یا غیرفعال بودن SSH

راه‌حل:

  • بررسی وضعیت سرویس SSH

  • بررسی IP و پورت

  • تست اتصال با ping و telnet

Host Key Verification Failed

راه‌حل:

  • حذف کلید قدیمی از فایل known_hosts

  • اتصال مجدد به سرور


سوالات متداول

SFTP چیست؟

SFTP پروتکلی امن برای انتقال و مدیریت فایل‌ها است که بر پایه SSH کار می‌کند.

پورت پیش‌فرض SFTP چیست؟

پورت ۲۲

تفاوت SFTP با FTP چیست؟

SFTP رمزنگاری شده است اما FTP داده‌ها را به‌صورت ساده ارسال می‌کند.

آیا می‌توان SFTP را خودکار کرد؟

بله، با اسکریپت‌ها یا ابزارهایی مانند lftp، Bash یا Python.


تهیه و بازنویسی اختصاصی توسط دیدگاه