دسته بندی:

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

آموزش 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 ابزار ساده‌ای به نظر می‌رسد، اما برای مدیریت سرور و انتقال فایل بین سرورها دقیقا همان چیزی است که لازم دارید: بدون نصب برنامه اضافه، بدون باز کردن پورت جدید در فایروال و بدون عبور رمز عبور به‌صورت متن ساده از شبکه. در صورت نیاز به راهنمایی بیشتر یا برخورد با مشکل در مسیر این آموزش، می‌توانید از تیم پشتیبانی آنلاین سرور کمک بگیرید.

آموزش‌های مرتبط

ارسال نظر