در گذشته FTP (File Transfer Protocol) یکی از روشهای رایج برای انتقال فایل بین دو سیستم بود، اما این پروتکل اطلاعات را رمزنگاری نمیکند و به همین دلیل امروزه از نظر امنیتی منسوخ محسوب میشود و بیشتر در سیستمهای قدیمی دیده میشود.
در مقابل، SFTP (Secure File Transfer Protocol) یک پروتکل انتقال فایل امن است که روی SSH ساخته شده و تمام دادهها را هنگام انتقال رمزنگاری میکند. به همین دلیل، در اکثر سناریوها جایگزین امن و استاندارد FTP محسوب میشود.
در این راهنما یاد میگیرید چگونه از SFTP از طریق خط فرمان برای اتصال به سرور، مدیریت فایلها و انتقال امن دادهها استفاده کنید.
نکات کلیدی
-
SFTP بر پایه SSH کار میکند و تمام دادهها را رمزنگاری میکند
-
برای اتصال میتوانید از رمز عبور یا کلید SSH استفاده کنید
-
شروع اتصال با دستور
sftp user@hostانجام میشود -
از دستورات مشابه لینوکس مثل
ls،cdوpwdپشتیبانی میکند -
برای انتقال فایل از
getوputاستفاده میشود -
امکان تغییر سطح دسترسی، مالک فایل و ساخت پوشه وجود دارد
-
عملکرد صحیح SFTP وابسته به فعال بودن سرویس SSH است
اتصال به سرور با SFTP
چون SFTP از SSH استفاده میکند، اگر بتوانید با SSH وصل شوید، SFTP هم کار خواهد کرد.
تست اتصال SSH
ssh user@server_ipاگر وصل شدید، خارج شوید:
exitشروع جلسه SFTP
sftp user@server_ipاتصال به پورت غیر 22
sftp -oPort=2222 user@server_ipدریافت راهنما داخل SFTP
بعد از اتصال، برای دیدن لیست دستورات:
helpیا
?جابجایی بین پوشهها
نمایش مسیر فعلی در سرور
pwdلیست فایلهای پوشه فعلی
lsنمایش جزئیات بیشتر
ls -laورود به پوشه
cd folderNameدستورات مربوط به سیستم لوکال
در SFTP اگر قبل دستور حرف l بگذارید، روی سیستم خودتان اجرا میشود.
| دستور | کاربرد |
|---|---|
lpwd | مسیر فعلی در سیستم لوکال |
lls | لیست فایلهای لوکال |
lcd folder | تغییر پوشه لوکال |
دانلود فایل از سرور
get file.txtدانلود با نام جدید:
get file.txt newname.txtدانلود پوشه به صورت بازگشتی:
get -r folderNameحفظ سطح دسترسی فایلها:
get -P file.txtآپلود فایل به سرور
put localfile.txtآپلود پوشه:
put -r folderNameبررسی فضای دیسک سرور
df -hاجرای دستورات لوکال از داخل SFTP
ورود به شل لوکال:
!بازگشت به SFTP:
exitاجرای مستقیم دستور لوکال:
!chmod 644 file.txtتغییر سطح دسترسی و مالک فایل
تغییر مالک (با UID)
chown 1001 file.txtتغییر گروه (با GID)
chgrp 1001 file.txtتغییر سطح دسترسی
chmod 755 file.txtساخت و حذف پوشه
| دستور | کاربرد |
|---|---|
mkdir folder | ساخت پوشه روی سرور |
lmkdir folder | ساخت پوشه در لوکال |
rm file | حذف فایل |
rmdir folder | حذف پوشه |
بستن اتصال SFTP
byeیا
exitنصب و فعالسازی SFTP در لینوکس
Ubuntu / Debian
sudo apt update
sudo apt install openssh-server
sudo systemctl restart sshCentOS / RHEL
sudo dnf install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshdخطاهای رایج و راهحل
❌ Permission Denied
کاربر دسترسی نوشتن ندارد
راهحل:
sudo chown user:group /path
sudo chmod 755 /path❌ Connection Refused / Timed Out
SSH اجرا نمیشود یا مشکل شبکه است
sudo systemctl status sshd
ping server_ip❌ Host Key Verification Failed
کلید سرور تغییر کرده
nano ~/.ssh/known_hostsخط مربوط به سرور را حذف کنید و دوباره وصل شوید.
❌ SSH Key Authentication Error
سطح دسترسی فایلها اشتباه است
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysسوالات متداول
SFTP چیست؟
پروتکل امن انتقال فایل مبتنی بر SSH.
پورت پیشفرض؟
22
تفاوت SFTP با FTP؟
SFTP رمزنگاری دارد، FTP ندارد.
چطور فایل آپلود کنم؟
با دستور:
put file.txtجمعبندی
SFTP یک روش امن، قابل اعتماد و استاندارد برای انتقال فایل بین سرور و سیستم شماست. اگر قبلاً از FTP یا SCP استفاده میکردید، SFTP ترکیبی از امنیت بالا و امکانات مدیریتی بیشتر را در اختیار شما میگذارد.
استفاده صحیح از SFTP باعث میشود انتقال فایلها در محیطهای سروری کاملاً امن و قابل کنترل انجام شود.
