خط فرمانگنو/لینوکس

انتقال فایل‌ها در طول شبکه (فرمان ftp)

آخرین بروزرسانی

اگر که ما قادر به انتقال فایل‌ها در طول شبکه نباشیم، شبکه بی‌معنا می‌شود. برنامه‌های زیادی وجود دارند که داده را در طول شبکه انتقال می‌دهند. دو مورد از آن‌ها را در این درس و درس‌های آینده توضیح خواهیم داد.

فرمان FTP – انتقال فایل‌ها با استفاده از پروتکل انتقال فایل

یکی از برنامه‌های واقعا کلاسیک شبکه FTP می‌باشد. FTP نام خود را از عبارت File Transfer Protocol به معنی پروتکل انتقال فایل گرفته است. پروتکل FTP به طور وسیعی در طول اینترنت به منظور انتقال فایل استفاده می‌شود. اکثر مرورگرها از این پروتکل پشتیبانی می‌کنند و آدرس آغازین آن به جای http:// آدرس ftp:// می‌باشد. قبل از آنکه مرورگری وجود داشته باشد، FTP وجود داشت تا انتقال فایل در سرورها و ماشین‌های شبکه صورت پذیرد.

FTP در فرم اصلی خود ایمن نبود زیرا نام کاربری و رمز عبور را به صورت متن ساده در مسیر شبکه ارسال می‌کرد. این یعنی اینکه رمزنگاری نمی‌شد و هر شنود دیگری که در شبکه وجود داشت قادر به دریافت و سرقت این اطلاعات بود.

به همین منظور تقریبا همه انتقال‌های FTP در طول شبکه از طریق سرورهای ناشناس انجام می‌شد. یک سرور ناشناس به هر شخصی اجازه می‌دهد تا با استفاده از نام کاربری anonymous و یک پسورد بی‌معنی وارد شود.

با نوشتن واژه help لیست کاملی ا فرمان‌های پشتیبانی شده در محیط به ما نشان داده خواهد شد. برای خروج، کافی است exit یا bye را وارد نمایید. جدول زیر فرمان‌های موجود در این نشست را به ما نشان می‌دهد:

فرمانمفهوم
ftp fileserverبرنامه FTP را به کار می‌گیرد و شما را به سرور فایل FTP متصل می‌کند.
anonymousنام ورود. پس از درخواستدورود یک درخواست پسورد نمایان می‌شود. برخی سرورها یک پسورد خالی را قبول می‌کنند. برخی دیگر نیازمند یک پسورد در فرم آدرس ایمیل هستند.
cd pub/cd_images/Ubuntu-8.04تغییر پوشه در سرور ریموت که حاوی فایل مورد نظر است. قابل ذکر است که بر روی بیشتر سرورهای ناشناس FTP، فایل‌هایی که برای دانلود عمومی قرار دارند معمولا در پوشه‌ای با نام public قرار دارند.
lsلیست کردن پوشه بر روی سیستم ریموت
lcd Desktopتغییر پوشه بر روی سیستم محلی به مسیر ~/Desktop. در این مثال برنامه ftp وقتی پوشه فعلی ~ به کار گرفته شد. این فرمان پوشه فعلی را به پوشه ~/Desktop تغییر می‌دهد.
get ubuntu-8.04-desktop-i386.isoبه سیستم ریموت فرمان بده تا فایل ubuntu را به سیستم محلی انتقال بده. از آنجایی که پوشه فعلی بر روی سیستم محلی به مسیر /~Desktop تغییر یافت، فایل در آنجا دانلود خواهد شد.
byeخاموش کردن سیستم ریموت و پایان نشست برنامه ftp. فرمان‌های quit و exit نیز استفاده می‌شوند.

فرمان lftp

فرمان ftp تنها کلاینت FTP خط فرمان نیست. در حقیقت انواع زیادی وجود دارد و یکی از انواع بهتر و رایج‌تر آن lftp می‌باشد. این فرمان بسیار بهتر از نسخه سنتی ftp عمل می‌کند و ویژگی‌های رفاهی زیادی دارد. شامل پشتیبانی از چندین پروتکل (مثل HTTP)، تلاش خودکار در دانلودهای شکست خورده، پردازش در پس‌زمینه، تکمیل خودکار فرمان و اسامی نام با استفاده از Tab و …

ابزار wget – دانلودکننده غیرتعاملی شبکه

یک برنامه رایج دیگری خط فرمان برای دانلود فایل، wget می‌باشد. این ابزار به منظور دریافت محتوا هم از وب و هم از سایت‌های FTP مفید است. یک فایل، چندین فایل و حتی کل یک سایت را می‌توان با آن دانلود کرد. در مثال زیر صفحه اول http://www.linuxcommand.org با کمک فرمان wget دانلود می‌شود:

ایمن کردن ارتباطات با میزبان از راه دور

بسیاری از کاربران در سیستم‌عامل لینوکس بایستی قادر به مدیریت سیستم‌عامل از راه دور از طریق شبکه به صورت ریموت باشند. تقریبا همه مدیران وب‌سایت‌ها و وبمسترها به این شیوه سرورهای سایت‌های خود را مدیریت می‌کنند.

در گذشته قبل از سازگاری کامل اینترنت، برنامه‌های رایج زیادی به منظور لاگین به سرورهای ریموت وجود داشت. مثل برنامه‌های telnet و rlogin. هر چند این برنامه‌ها از همان ایرادی که فرمان ftp داست رنج می‌بردند. تمامی ارتباطات این برنامه‌ها به صورت متن ساده (رمزنگاری نشده) انجام می‌گرفت (حتی ارسال نام کاربری و رمز عبور نیز متن ساده بود) در نتیجه در این دوران که سرقت‌های اینترنتی زیاد شده استفاده از آن‌ها دیگر مناسب نبود. تا آنجا که دو رویکرد دیگر به میان آمد که می‌خواهیم درباره آن‌ها گفتگو کنیم. SSH و SCP.

فرمان SSH – لاگین ایمن به کامپیوتر از راه دور

برای حل مشکل‌های موجود در telnet پروتکل جدیدی با نام SSH (سرنام Secure Shell) توسعه یافت. SSH دو مشکل اصلی در رابطه با ارتباط ایمن را بر طرف می‌کند. اول اینکه SSH میزبان ریموت را تشخیص هویت می‌کند (از حملات شخص واسط man-in-the-middle جلوگیری کرده) و دوم اینکه همه ارتباطات انجام شده بین میزبا‌های لوکال و ریموت را رمزنگاری می‌کند.

SSH از دو بخش تشکیل شده است. یک سرور SSH که بر روی میزبان ریموت اجرا شده و منتظر تماس‌های ورودی بر روی پورت ۲۲ می‌ماند. در حالی که کلاینت SSH بر روی ماشین محلی برای برقراری ارتباط با ماشین سرور استفاده می‌شود.

بیشتر توزیع‌های لینوکس دارای یک اجرا از SSH هستند که OpenSSH نام دارد و از پروژه BSD گرفته شده است. برخی توزیع‌ها به صورت پیش‌فرض دارای بسته‌های هم کلاینت و هم سرور SSH هستند. (مثل RedHat) در حالی که برخی از توزیعات دیگر (مثل اوبونتو) فقط دارای کلاینت هستند. برای فعال‌سازی یک سیستم به دریافت تماس‌های ریموت بایستی بسته OpenSSH-Server نصب شده و پیکربندی و اجرا شده باشد و (اگر سیستم در پشت یک فایروال قرار گرفته است) بایستی به اتصالات ورودی شبکه بر روی پورت TCP 22 اجازه ورود بدهد.

نکته: اگر که یک سیستم ریموت برای اتصال ندارید ولی می‌خواهید این مثال‌ها را امتحان کنید، ابتدا مطمئن شوید که بسته OpenSSH-Server نصب شده است و از localhost به عنوان نام میزبان ریموت استفاده می‌کند. از این طریق ماشین با خود ارتباط برقرار می‌کند. فرض را بر این می‌گذاریم که شما سرور لینوکس ندارید تا به آن SSH کنید. در نتیجه همانطور که گفتیم به این منظور ابتدا بایستی بسته OpenSSH-server را نصب کنید. این کار را با استفاده از فرمان apt-get همانطور که در درس‌های قبلی آموزش دادیم، انجام دهید.

پس از نصب OpenSSH-server می‌توانیم از سیستم خود به عنوان سرور استفاده کنیم. یعنی در این حالت سیستم هم سرور است هم کلاینت. یعنی سیستم از طریق SSH به خودش متصل می‌شود. به این منظور نام سرور را remote-sys می‌نامیم:

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

برای پذیرفتن اعتبار میزبان ریموت yes را وارد می‌کنیم و سپس با وارد کردن پسورد اتصال برقرار می‌شود.

اتصال ریموت برقرار است تا زمانی که فرمان exit را وارد کنید. همچنین می‌توانید با استفاده از یک کاربر دیگر به صورت ریموت متصل شوید.

برای مثال اگر کاربر پیش‌فرض ما me باشد می‌توانیم با کاربر bob هم به صورت زیر متصل شویم.

علاوه بر اینها فرمان ssh ما را قادر می‌سازد تا یک فرمان را اجرا کنیم به صورت زیر:

به استفاده از تک کوتیشن توجه کنید. این کار انجام می‌شود چون که ما نمی‌خواهیم که بسط نام مسیر (Pathname Expansion) بر روی ماشین لوکال انجام شود. به جای آن می‌خواهیم که بر روی سیستم ریموت صورت پذیرد. علاوه بر این اگر که بخواهیم خروجی به یک فایل در ماشین ریموت ریدایرکت شود می‌توانیم از عملگر ریدایرکت و نام فایل در بین تک کوتیشن استفاده کنیم.

فرمان‌های scp و sftp – انتقال ایمن فایل‌ها

بسته OpenSSH همچنین شامل دو برنامه است که با استفاده از یک تانل رمزنگاری شده SSH فایل‌ها را در عرض شبکه کپی می‌کند. اولین فرمان، فرمان scp (سرنام عبارت Secure Copy به معنی کپی ایمن) می‌باشد که شبیه فرمان cp برای کپی نمودن فایل‌ها مورد استفاده قرار می‌گیرد. آشکارترین تفاوت آن این است که نام مسیر مبدا یا مقصد با نام یک میزبان ریموت به همراه یک کاراکتر نقطه همراه می‌شود. برای مثال اگر که می‌خواهیم یک سند با نام document.txt را از پوشه خانگی خود در یک سیستم ریموت (که در مثال ما همان localhost است) به پوشه خانگی لوکال سیستم خود کپی کنیم، به صورت زیر عمل می‌کنیم:

توجه داشته باشید که درست مثل ssh در فرمان scp نیز می‌توانید از دیگر کاربران موجود نیز استفاده کنید.

دومین برنامه به منظور کپی، فرمان sftp می‌باشد که همانطور که از نام آن پیداست جایگزینی امن برای ftp می‌باشد. فرمان sftp درست مثل ftp عمل می‌کند و به جای انتقال متن ساده، متن رمزنگاری شده را انتقال می‌دهد.

Sftp از تانل رمزنگاری شده SSH استفاده می‌کند. sftp یک مزیت بزرگ بر استفاده از ftp دارد و آن این است که نیاز ندارد تا یک سرور FTP بر روی میزبان ریموت در حال اجرا باشد و فقط نیاز به اجرای سرور SSH دارد. به این معنی که هر ماشین ریموتی که بتواند به کلاینت SSH متصل شود، قادر خواهید بود به عنوان یک سرور FTP نیز مورد استفاده قرار گیرد.

این هم یک نشست نمونه:

توجه داشته باشید که پروتکل SFTP با بسیاری از برنامه‌های مدیریتی گرافیکی که در توزیع‌های لینوکس یافت می‌شود، پشتیبانی می‌گردد. چه از Nautilus (GNOME) و چه از Konqueror (KDE) استفاده کنیم، می‌توانیم وارد URL ای شویم که یا sftp:// آغاز می‌گردد و فایل‌هایی که بر روی سرور ریموت SSH در حال اجراست پردازش کنیم.

برچسب ها

نوشته‌های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا
بستن