آموزش SFTP؛ انتقال امن فایل به سرور مجازی و بین دو سرور لینوکس
فایلهای سایت یا بکاپ دیتابیس روی سیستم شماست و باید به سرور مجازی برود؛ یا برعکس، باید فایلی را از سرور بردارید و روی سرور دیگری بگذارید. اگر برای این کار سراغ FTP بروید، نام کاربری، رمز عبور و محتوای فایل بهصورت متن ساده روی شبکه جابهجا میشود. SFTP که مخفف SSH File Transfer Protocol است، دقیقا همین کار را داخل تونل رمزنگاریشده SSH انجام میدهد و مهمترین نکتهاش این است که اگر بتوانید با SSH وارد سرور شوید، SFTP بدون هیچ نصب یا پیکربندی اضافهای هم کار میکند.
چرا SFTP و نه FTP
تقریبا در همه موقعیتها SFTP به خود FTP ارجحیت دارد. تفاوت ساختاری این دو در تعداد کانالها و رمزنگاری آنهاست:
- FTP دو کانال جدا باز میکند: کانال فرمان روی پورت ۲۱ و کانال داده روی یک بازه پورت. هیچکدام رمزنگاری نشدهاند؛ یعنی نام کاربری، رمز عبور و محتوای فایل روی مسیر شبکه خوانا هستند و علاوه بر آن باید یک بازه پورت را هم در فایروال باز نگه دارید.
- SFTP یک اتصال رمزنگاریشده روی همان پورت SSH (پیشفرض ۲۲) برقرار میکند. فرمان و داده هر دو داخل همان تونل SSH جابهجا میشوند: همان کاربر، همان کلید و همان پورتی که برای SSH باز کردهاید؛ پورت اضافهای لازم نیست.
SFTP بهطور پیشفرض از پروتکل SSH برای احراز هویت و برقراری ارتباط با همان روشهای تایید اعتبار امن SSH استفاده میکند و به همین دلیل امنیت بیشتری دارد. توجه کنید که SFTP با FTPS یکی نیست؛ FTPS همان ساختار دو کاناله FTP است که داخل TLS پیچیده شده و همچنان به بازه پورت داده نیاز دارد.
پیشنیاز: یک اتصال SSH سالم
اگر میتوانید از طریق SSH به سرور مجازی خود متصل شوید، تمام پیشنیازهای SFTP را در اختیار دارید. برای اینکه اتصال SSH خود را تست کنید از دستور زیر استفاده کنید:
ssh user@server_ip_or_hostname
اگر این دستور به درستی عمل میکند با تایپ کردن exit خارج شوید.
اگرچه ورود با رمز عبور SSH سادهتر به نظر میرسد، توصیه میکنیم کلیدهای SSH بسازید و کلید عمومی (public key) خود را روی سروری که به آن نیاز دارید منتقل کنید. این کار هم امنیت را بالا میبرد و هم اتصالهای بعدی را بدون وارد کردن رمز انجام میدهد:
ssh-keygen -t ed25519 ssh-copy-id user@server_ip_or_hostname
الگوریتم ed25519 گزینه توصیهشده امروز است؛ کلیدهای قدیمی rsa با طول ۱۰۲۴ بیت دیگر امن شمرده نمیشوند و اگر مجبور به استفاده از RSA هستید حداقل -b 4096 بدهید. برای سختتر کردن ورود به سرور، آموزش امنسازی SSH مراحل غیرفعال کردن ورود با رمز و تغییر پورت را توضیح داده است.
باز کردن یک نشست SFTP
حالا با همان مشخصاتی که برای SSH استفاده میکنید، یک نشست SFTP باز کنید:
sftp user@server_ip_or_hostname
اگر پورت SSH سرور را عوض کردهاید، شماره پورت را با سوییچ -P بدهید:
sftp -P 2222 user@server_ip_or_hostname
در آموزشهای قدیمیتر همین کار با -oPort= نوشته میشد که هنوز هم کار میکند، ولی شکل کوتاه و امروزیاش همان -P است:
sftp -oPort=2222 user@server_ip_or_hostname
دقت کنید که در sftp و scp سوییچ پورت حرف بزرگ -P است، در حالی که در خود ssh حرف کوچک -p به کار میرود. این تفاوت را جدی بگیرید: در خط فرمان sftp حرف کوچک -p اصلا معنای پورت ندارد و به معنی حفظ زمان و سطح دسترسی فایلهاست، بنابراین اگر اشتباهی -p بنویسید شماره پورت بهعنوان آدرس مقصد تفسیر میشود و اتصال شکست میخورد. اگر کلید خصوصی شما در مسیر پیشفرض نیست، آن را با -i معرفی کنید:
sftp -i ~/.ssh/id_ed25519 user@server_ip_or_hostname
همه چیزی که در ادامه میآید در محیط خط فرمان SFTP انجام میشود، اما اگر ترجیح میدهید با برنامه گرافیکی کار کنید، FileZilla و WinSCP هم SFTP را روی همان پورت ۲۲ پشتیبانی میکنند؛ فقط کافی است در فیلد پروتکل بهجای FTP گزینه SFTP را انتخاب کنید. اگر در فایلزیلا با پیام Failed to retrieve directory listing روبهرو شدید، رفع خطای Failed to retrieve directory listing حالت Passive و علتهای دیگر را بررسی کرده است.
دریافت کمک در SFTP
مفیدترین دستور برای یادگیری، دستور help است. اینگونه به خلاصهای از راهنماها و کمکهای SFTP دسترسی پیدا میکنید:
help
یا
?
اکنون لیستی از دستورات را به شما نمایش میدهد:
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
. . .
مهمترین این دستورات را در ادامه بررسی میکنیم.
مسیریابی با SFTP
ابتدا باید بدانید در کدام مسیر قرار دارید. برای دیدن مسیر فعلی روی سرور:
pwd
Remote working directory: /home/demouser
محتویات دایرکتوری فعلی را هم میتوانید ببینید:
ls Summary.txt info.html temp.txt testDirectory
توجه داشته باشید که دستورات درون SFTP مانند دستورات پوسته (shell) معمولی نیستند و به همه امکانات شل دسترسی ندارید، اما برخی از پرچمهای (flag) آشنا کار میکنند:
ls -la
drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .
برای رفتن به یک دایرکتوری دیگر روی سرور:
cd testDirectory
تا اینجا هر دستوری که زدید روی سرور اجرا شد. برای همان کارها روی سیستم خودتان، کافی است یک حرف l (مخفف Local) به ابتدای دستور اضافه کنید. هر دستور مسیریابی یک نسخه محلی دارد:
pwdمسیر فعلی روی سرور را نشان میدهد،lpwdمسیر فعلی روی سیستم شما را.lsفهرست فایلهای سرور را میدهد،llsفهرست فایلهای سیستم شما را.cdمسیر سرور را عوض میکند،lcdمسیر سیستم شما را.
lpwd
Local working directory: /Users/demouser
محتوای دایرکتوری سیستم خود را ببینید:
lls Desktop local.txt test.html Documents analysis.rtf zebra.html
و مسیر محلی را عوض کنید:
lcd Desktop
این تفکیک «محلی و ریموت» کلید کل کار است: فایل همیشه از مسیر pwd به مسیر lpwd (یا برعکس) منتقل میشود، پس پیش از هر انتقالی هر دو مسیر را چک کنید.
دانلود فایل از سرور مجازی به سیستم شخصی
با دستور get میتوانید فایلها را از سرور مجازی روی سیستم شخصی خود بیاورید:
get remoteFile
Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01
همانطور که میبینید، بهطور پیشفرض فرمان get فایل را با همان نام در مسیر محلی فعلی ذخیره میکند. اگر میخواهید نام دیگری داشته باشد، نام مقصد را هم بنویسید:
get remoteFile localFile
برای کپی کردن کل محتوای یک دایرکتوری، پرچم بازگشتی (recursive) را اضافه کنید:
get -r someDirectory
و اگر میخواهید زمان تغییر و سطح دسترسی فایلها هم مثل مبدا حفظ شود، پرچم preserve را کنار آن بگذارید:
get -pr someDirectory
در نسخههای امروزی OpenSSH هر دو شکل -p و -P برای حفظ دسترسیها و هر دو شکل -r و -R برای حالت بازگشتی پذیرفته میشوند؛ پس اگر در آموزشی get -Pr دیدید، همان کار را میکند.
اگر دانلود یک فایل بزرگ نصفهکاره قطع شد، با پرچم -a میتوانید ادامهاش را بگیرید. فقط توجه کنید که این پرچم فرض میکند فایل ناقص محلی واقعا بخشی از همان فایل ریموت است؛ اگر فایل روی سرور در این فاصله عوض شده باشد نتیجه خراب میشود:
get -a backup.tar.gz
آپلود فایل از سیستم شخصی به سرور مجازی
انتقال فایل به سرور لینوکس به همان سادگی با دستور put انجام میشود:
put localFile
Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00
تمام پرچمهایی که با get کار میکنند با put هم کار میکنند. بنابراین برای کپی کردن یک دایرکتوری از سیستم شخصی روی سرور:
put -r localDirectory
در بعضی نسخههای OpenSSH اجرای این دستور با خطای Couldn't canonicalise: No such file or directory متوقف میشود، چون دایرکتوری مقصد از قبل روی سرور وجود ندارد. راهحل ساده است: اول دایرکتوری را روی سرور بسازید (دستور mkdir داخل SFTP همیشه روی سرور اجرا میشود، نه روی سیستم شما) و بعد دستور را دوباره اجرا کنید:
mkdir localDirectory put -r localDirectory
بررسی فضای دیسک پیش از انتقال
پیش از فرستادن یک بکاپ چند گیگابایتی، بهتر است مطمئن شوید مقصد جا دارد. داخل همان نشست SFTP دستور df فضای دیسک سرور را نشان میدهد:
df -h
Size Used Avail (root) %Capacity 19.9GB 1016MB 17.9GB 18.9GB 4%
اگر فضا کم بود، مشاهده فضای استفاده شده در سرور راههای پیدا کردن دایرکتوریهای پرحجم را توضیح داده است.
برای دیدن فضای دیسک سیستم خودتان باید از علامت ! استفاده کنید. این علامت شما را موقتا به شل سیستم محلی میبرد:
! df -h Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home
با exit از این شل موقت به SFTP برمیگردید. میتوانید ! را بهجای شل کامل، فقط بهعنوان پیشوند یک دستور هم به کار ببرید:
!df -h
یک نکته که در آموزشهای قدیمی اغلب اشتباه نوشته شده: ! دستور را روی سیستم محلی شما اجرا میکند، نه روی سرور. اگر لازم دارید دستوری روی سرور اجرا شود، باید یک نشست SSH جداگانه باز کنید؛ SFTP عمدا اجازه اجرای دستور روی سرور را نمیدهد و همین یکی از دلایل امنتر بودن آن است.
تغییر مالکیت و مجوز فایلها با SFTP
SFTP اجازه میدهد بدون خروج از نشست، مالک و سطح دسترسی فایلهای روی سرور را عوض کنید. برای تغییر مالک:
chown userID file
توجه کنید که برخلاف دستور chown در شل لینوکس، نسخه SFTP آن نام کاربری را نمیپذیرد و باید شناسه عددی (UID) را بدهید. همین محدودیت برای تغییر گروه هم وجود دارد:
chgrp groupID file
ضمنا این دو دستور مثل معادلهای شل خود به سطح دسترسی نیاز دارند؛ یک کاربر عادی نمیتواند مالک فایل را به کاربر دیگری تغییر دهد و پاسخ Permission denied میگیرد.
سادهترین راه پیدا کردن این شناسهها، اجرای یک دستور در نشست SSH سرور است:
id -u username getent group groupname
اگر فقط SFTP در اختیار دارید، میتوانید فایلهای /etc/passwd و /etc/group را بگیرید و محلی بخوانید. توجه کنید که این کار یک فایل به نام passwd در مسیر محلی فعلی شما میسازد، پس اول با lcd به یک پوشه خالی بروید:
get /etc/passwd !less passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync ...
در فایل passwd ستون سوم همان UID است و در فایل group ستون سوم شناسه گروه (GID) را نگه میدارد:
get /etc/group !less group
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: . . .
فرمان chmod هم روی سرور مجازی لینوکس بدون مشکل کار میکند و برخلاف chown نیازی به شناسه عددی ندارد:
chmod 644 publicFile
Changing mode on /home/demouser/publicFile
در آموزشهای قدیمی برای «حل شدن مشکل دسترسی» زیاد پیشنهاد میشود chmod 777 بزنید. این کار روی یک سرور در دسترس اینترنت اشتباه است؛ ۷۷۷ یعنی هر کاربر و هر اسکریپتی روی سرور میتواند آن فایل را بازنویسی کند. مقدار درست برای فایلهای معمولی سایت 644 و برای دایرکتوریها 755 است.
دستوری برای تغییر مجوز فایلهای محلی داخل SFTP وجود ندارد، اما میتوانید umask محلی را تنظیم کنید تا فایلهای دانلودشده با دسترسی دلخواه ذخیره شوند:
lumask 022
Local umask: 022
با این تنظیم، فایلهای دانلودشده دسترسی ۶۴۴ میگیرند مگر آنکه از پرچم -p استفاده کرده باشید که دسترسیهای مبدا را عینا حفظ میکند.
ساخت دایرکتوری هم در هر دو سمت ممکن است: mkdir روی سرور و lmkdir روی سیستم محلی. بقیه دستورات مدیریت فایل مثل rm، rmdir، rename و ln فقط روی سرور کار میکنند. برای معادل محلی آنها باید از پیشوند ! کمک بگیرید:
!chmod 644 somefile
انتقال یک فایل بین دو سرور لینوکس
جابهجایی فایل بین دو سرور، مسئلهای است که هر مدیر سروری دیر یا زود با آن روبهرو میشود و خیلیها برای آن مسیر طولانی طی میکنند: اول فایل را از سرور مبدا روی سیستم خودشان دانلود میکنند و بعد همان را روی سرور مقصد آپلود میکنند. این کار هم دو برابر زمان میبرد و هم به پهنای باند اینترنت خانگی شما وابسته است. راه درست این است که فایل مستقیم از سرور به سرور برود؛ لینک بین دو دیتاسنتر تقریبا همیشه از اینترنت خانگی شما سریعتر است.
روش اول، دقیقا همان چیزی است که تا اینجا یاد گرفتید. با SSH وارد سرور مقصد شوید (در ویندوز با PuTTY یا کلاینت ssh داخلی ویندوز ۱۰ به بعد، در لینوکس و مک با دستور ssh) و از همانجا یک نشست SFTP به سرور مبدا باز کنید:
ssh user@destination_server_ip
sftp user@source_server_ip
اگر پورت SSH سرور مبدا عوض شده است، همان سوییچ پورت را بدهید:
sftp -P 2222 user@source_server_ip
حالا نکتهای که معمولا باعث سردرگمی میشود: در این سناریو «local» برای SFTP همان سرور مقصد است، نه کامپیوتر شما. پس با lcd مسیری را روی سرور مقصد انتخاب کنید که فایل باید آنجا بنشیند (این مسیر باید از قبل روی سرور مقصد وجود داشته باشد) و با cd در سرور مبدا به پوشهای بروید که فایل در آن قرار دارد:
lcd /home/USERNAME/domain.com cd /home/USERNAME/public_html ls get example.tar.gz
دستور ls فهرست فایلها و پوشههای سرور مبدا را نشان میدهد و get فایل انتخابی را مستقیم روی سرور مقصد میآورد.
در آموزشهای قدیمی برای همین کار پیشنهاد میشد اول با yum install ftp -y کلاینت FTP را نصب کنید و بعد با ftp ip به سرور مبدا وصل شوید. این روش دو ایراد دارد. اول اینکه نام کاربری، رمز عبور و کل محتوای فایل بدون رمزنگاری از بستر اینترنت عبور میکند. دوم اینکه معمولا لازم نیست چیزی نصب کنید؛ کلاینت sftp بخشی از بسته openssh-clients (در دبیان و اوبونتو openssh-client) است و روی تقریبا هر سرور لینوکسی از قبل نصب شده است. ضمنا اگر روی سرورهای امروزی به نصب بستهای نیاز داشتید، yum جای خود را به dnf داده است (AlmaLinux، Rocky Linux و CentOS از نسخه ۸ به بعد) و روی اوبونتو و دبیان از apt استفاده میشود.
نکته دیگر درباره کاربر root است: اتصال SFTP با کاربر root تنها زمانی برقرار میشود که در فایل /etc/ssh/sshd_config سرور مبدا گزینه PermitRootLogin اجازه بدهد. مقدار پیشفرض این گزینه در OpenSSH امروزی prohibit-password است؛ یعنی root فقط با کلید SSH میتواند وارد شود و نه با رمز عبور. اگر روی no تنظیم شده باشد، اتصال root به هیچ شکلی برقرار نمیشود و توصیه امنیتی هم همین است که خاموش بماند. بهتر است با یک کاربر عادی وارد شوید و اگر فایل مورد نظر دسترسی محدود دارد، پیش از انتقال با یک نشست SSH و sudo آن را به مسیری قابل خواندن کپی کنید و مالکیتش را به همان کاربر عادی بدهید.
scp و rsync؛ همان کار در یک خط
اگر نمیخواهید وارد محیط تعاملی SFTP شوید، همین انتقال را میتوان با یک دستور انجام داد. scp سادهترین گزینه است و روی سرور مقصد اجرا میشود:
scp user@source_server_ip:/home/user/example.tar.gz /home/user/
برای پورت غیر پیشفرض و برای کپی یک پوشه کامل:
scp -P 2222 -r user@source_server_ip:/var/www/site /var/www/
یک تغییر مهم را هم بدانید: از OpenSSH نسخه ۹٫۰ به بعد، دستور scp در پشت صحنه از پروتکل SFTP استفاده میکند نه از پروتکل قدیمی خودش. در عمل برای شما فرقی ندارد، اما اگر سرور مبدا خیلی قدیمی باشد و انتقال شکست بخورد، با سوییچ -O میتوانید scp را به پروتکل قدیمی برگردانید.
برای حجمهای بزرگ یا انتقالهایی که ممکن است نصفهکاره قطع شوند، rsync انتخاب بهتری است؛ چون فقط تفاوتها را میفرستد و اگر دوباره اجرایش کنید انتقال ناتمام را از همانجا ادامه میدهد:
rsync -avz --partial --progress user@source_server_ip:/var/www/site/ /var/www/site/
اگر پورت SSH عوض شده باشد، پورت را داخل سوییچ -e بدهید:
rsync -avz -e "ssh -p 2222" user@source_server_ip:/var/www/site/ /var/www/site/
پیش از اجرای واقعی، یک بار همان دستور را با سوییچ -n (حالت آزمایشی یا dry-run) بزنید تا ببینید rsync دقیقا قرار است چه فایلهایی را جابهجا کند، بدون آنکه چیزی روی مقصد نوشته شود:
rsync -avzn --progress user@source_server_ip:/var/www/site/ /var/www/site/
دو نکته درباره rsync: باید روی هر دو سرور نصب باشد (dnf install rsync یا apt install rsync)، و اسلش انتهای مسیر مبدا معنا دارد؛ site/ یعنی «محتویات پوشه» و site بدون اسلش یعنی «خود پوشه» که داخل مقصد ساخته میشود.
ساخت کاربری که فقط SFTP دارد
یکی از کاربردهای مهم SFTP این است که به یک نفر — مثلا طراح سایت یا مشتری — اجازه انتقال فایل بدهید بدون آنکه دسترسی شل به سرور داشته باشد. این کار با یک بلوک Match در پیکربندی SSH انجام میشود.
هشدار پیش از شروع: این مراحل را روی یک کاربر تازه و اختصاصی اجرا کنید، نه روی کاربر یک سایت فعال یا اکانت هاست موجود. در ادامه مالکیت پوشه خانگی آن کاربر به root تغییر میکند و اگر همان کاربر سرویس دیگری داشته باشد (وبسرور، ایمیل، کرانجاب) از کار میافتد.
ابتدا یک گروه بسازید و کاربر اختصاصی را داخل آن ایجاد کنید. مسیر nologin در ردهت و مشتقاتش /sbin/nologin و در دبیان و اوبونتو /usr/sbin/nologin است:
groupadd sftponly useradd -m -g sftponly -s /sbin/nologin designer passwd designer
اگر کاربر از قبل ساخته شده و مطمئن هستید سرویس دیگری روی آن سوار نیست، بهجای دستور بالا او را به گروه اضافه کنید و شلش را ببندید:
usermod -aG sftponly designer usermod -s /sbin/nologin designer
سپس در انتهای فایل /etc/ssh/sshd_config این بلوک را اضافه کنید. جای آن مهم است: هر چه بعد از یک بلوک Match بیاید فقط شامل همان بلوک میشود، پس اگر آن را وسط فایل بگذارید بقیه تنظیمات عمومی سرور خراب میشود:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
یک شرط مهم در chroot وجود دارد که اگر رعایت نشود کاربر اصلا نمیتواند وصل شود: مسیری که در ChrootDirectory مینویسید باید مالکش root باشد و برای گروه و سایرین قابل نوشتن نباشد. بنابراین خود /home/designer را به root بدهید و یک زیرپوشه برای آپلود بسازید که مالکش کاربر باشد:
chown root:root /home/designer chmod 755 /home/designer mkdir /home/designer/files chown designer:designer /home/designer/files
بعد از این کار کاربر در ریشهای که میبیند نمیتواند چیزی بسازد و فقط داخل پوشه files اجازه نوشتن دارد؛ این محدودیت عمدی است و بخشی از همان امنیت chroot به حساب میآید.
در پایان صحت فایل پیکربندی را بررسی و سرویس SSH را ریاستارت کنید. مسیر کامل باینری را بنویسید، چون sshd در PATH پیشفرض قرار ندارد:
/usr/sbin/sshd -t systemctl restart sshd
روی اوبونتو و دبیان نام سرویس ssh است:
systemctl restart ssh
در آموزشهای قدیمی این کار با service sshd restart یا /etc/init.d/sshd restart انجام میشد. روی همه توزیعهای امروزی که از systemd استفاده میکنند (AlmaLinux، Rocky Linux، CentOS 7 به بعد، اوبونتو ۱۶٫۰۴ به بعد و دبیان ۸ به بعد) دستور درست همان systemctl است.
مهمترین احتیاط را آخر کار انجام دهید: تا وقتی مطمئن نشدهاید تنظیمات جدید کار میکند، نشست SSH فعلی خود را نبندید. یک ترمینال دوم باز کنید و در آن هم ورود کاربر جدید با SFTP و هم ورود عادی خودتان با SSH را تست کنید. اگر پیکربندی اشتباه باشد، همان نشست بازی که نبستهاید تنها راه برگرداندن فایل به حالت قبل است؛ در غیر این صورت باید از کنسول یا KVM ارائهدهنده سرور کمک بگیرید.
خروج از SFTP
وقتی کار شما تمام شد، با exit یا bye از نشست خارج شوید:
bye
SFTP ابزار سادهای به نظر میرسد، اما برای مدیریت سرور و انتقال فایل بین سرورها دقیقا همان چیزی است که لازم دارید: بدون نصب برنامه اضافه، بدون باز کردن پورت جدید در فایروال و بدون عبور رمز عبور بهصورت متن ساده از شبکه. در صورت نیاز به راهنمایی بیشتر یا برخورد با مشکل در مسیر این آموزش، میتوانید از تیم پشتیبانی آنلاین سرور کمک بگیرید.
ارسال نظر