Skip to main content
روش های اتصال به سرور مجازی یا VPS

روش های اتصال به سرور مجازی یا VPS

سرور مجازی یا virtual private server که به اختصار VPS گفته می شود، یک کامپیوتر مجازی بوده که همواره روشن و آنلاین است. از این رو کاربران در تمامی 24 ساعت از شبانه روز می توانند از آن استفاده کرده و به اینترنت پر سرعت دسترسی داشته باشند. سرور VPS...
Read More
آموزش ساخت SSH Tunnel و راه اندازی Port Forwarding در لینوکس

آموزش ساخت SSH Tunnel و راه اندازی Port Forwarding در لینوکس

یکی از پروتکل های مرموز و البته کاربردی در دنیای لینوکس، پروتکل SSH Tunnel است. این پروتکل قابلیت و توانایی ایجاد تونل و یک اتصال رمزگذاری شده را دارد. بدین صورت می توان بین کلاینت و سرور تونلی ایمن ایجاد کرد تا اطلاعات و داده ها به صورت رمزگذاری شده...
Read More
مهمترین لاگ فایل های سرور لینوکس که باید در مانیتورینگ مورد توجه قرار گیرد

مهمترین لاگ فایل های سرور لینوکس که باید در مانیتورینگ مورد توجه قرار گیرد

لاگ فایل ها، گزارش هایی هستند که لینوکس برای مدیران سرور ذخیره می ‌کند تا رویدادهای مهم سرور، کرنل، سرویس‌ ها و برنامه ‌های در حال اجرای روی آن را پیگیری و نظارت کنند. در این پست، ما به بررسی برترین لاگ فایل های لینوکس که مدیران سرور باید بر...
Read More
آموزش ارتباط SSH به سرور لینوکس با گوشی اندروید

آموزش ارتباط SSH به سرور لینوکس با گوشی اندروید

فرض کنید با خانواده خود به تعطیلات رفته اید. درست در همین زمان از شرکت با شما تماس می گیرند و می گویند وب سرور با مشکل مواجه شده است! اگر تنها وسیله الکترونیکی که با خود به همراه دارید یک گوشی موبایل اندرویدی باشد و وب سرور به ابزار...
Read More
آموزش ریموت زدن به سرور لینوکسی با SSH و VNC

آموزش ریموت زدن به سرور لینوکسی با SSH و VNC

ریموت زدن به سرور لینوکسی به شیوه های مختلفی انجام می شود. دو روش مهم آن از طریق SSH و VNC است. در این مقاله قصد داریم روش ریموت زدن به سرور لینوکسی را به صورت کامل و جامع و با استفاده از این دو روش به شما آموزش دهیم....
Read More
ویژگی های توزیع اوبونتو

ویژگی های توزیع اوبونتو

اوبونتو (Ubuntu) یک سیستم عامل مبتنی بر لینوکس است که Open Source (منبع باز) بوده و کاملا رایگان است. شما می توانید این سیستم عامل را بر روی رایانه شخصی خود یا سرورهای خصوصی مجازی نصب و استفاده کنید. اوبونتو در سال 2004 توسط یک شرکت بریتانیایی به نام Canonical...
Read More
آشنایی با توزیع های مختلف سیستم عامل لینوکس

آشنایی با توزیع های مختلف سیستم عامل لینوکس

اگر اسم لینوکس را شنیده باشید احتمالا نام توزیع لینوکس (Linux distributions) هم به گوشتان خورده است. برای استفاده از لینوکس بر روی رایانه یا سرور، ابتدا باید یک توزیع مناسب برای آن انتخاب کنید. برای اینکه کمی بیشتر با این مفهوم آشنا شوید بهتر است ابتدا توضیح کاملی در...
Read More
کرنل پنیک، چگونه هنگام kernel panic پنیک نزنیم؟

کرنل پنیک، چگونه هنگام kernel panic پنیک نزنیم؟

در دنیای آی تی، لینوکس در همه جا استفاده می‌شود. حتما امروز هم از لینوکس استفاده کرده‌اید، حتی اگر متوجه آن نشده باشید. اگر اطلاعات کافی در مورد لینوکس داشته باشید، قاعدتا باید بدانید که لینوکس در واقع یک کرنل است. کرنل قسمت اصلی سیستم عامل است که وظیفه ارتباط...
Read More
۱۰ دستور لینوکسی دیگر که لازم است بدانید

۱۰ دستور لینوکسی دیگر که لازم است بدانید

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

بیست دستور سرور لینوکس که بایستی بدانید

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

فعال‌سازی رمز تایید دو مرحله‌ای برای SSH

معرفی احراز هویت دو مرحله‌ای یا همان 2FA یک روش احراز هویتی است که برای احراز نیاز به بیشتر از یک فاکتور هویتی دارد. احراز هویت دو عاملی به این صورت است که هر کاربر برای ورود به یک اکانت علاوه بر یوزرنیم و پسورد خود نیاز به یک عامل...
Read More

سرور مجازی یا virtual private server که به اختصار VPS گفته می شود، یک کامپیوتر مجازی بوده که همواره روشن و آنلاین است. از این رو کاربران در تمامی 24 ساعت از شبانه روز می توانند از آن استفاده کرده و به اینترنت پر سرعت دسترسی داشته باشند. سرور VPS را می توان بخشی از یک سرور اختصاصی دانست که مزایای یک هاستینگ اختصاصی را با هزینه های مقرون به صرفه تر در اختیار کابران قرار می دهد. در صورتی که قصد دارید تا با نحوه اتصال به سرور مجازی VPS آشنا شوید، ما در این مطلب قدم به قدم آن را به شما آموزش خواهیم داد.

فهرست دسترسی سریع:

اتصال به سرور مجازی VPS

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

VPS یک سرور مجازی بوده که در یک سرور دیگر اجرا می شود. با اتصال به سرور مجازی VPS می توانید از قابلیت های آن برای دریافت میزبانی اختصاصی با انعطاف پذیری بیشتر و هزینه های کمتر استفاده کنید. این امکان برای شما وجود دارد که به راحتی با استفاده از یک اتصال SSH و از طریق هر نوع سیستم عامل رایانه ای به VPS خود متصل شده و آن را مدیریت کنید.

  • اگر از سیستم عامل ویندوز استفاده می کنید می توانید به راحتی با استفاده از یک کلاینت Remote Desktop Connection (RDC) or 2X Remote Desktop Protocol (RDP) به VPS متصل شوید.
  • اگر از سیستم عامل لینوکس استفاده می کنید، جهت اتصال به سرور مجازی VPS و استفاده از آن باید برنامه Remmina را نصب کنید.
  • اگر از سیستم عامل Mas OS استفاده می کنید، می توانید با استفاده از Microsoft Remote Desktop، PuTTY یا 2X RDP به VPS خود دسترسی داشته باشید.

پروتکل دسکتاپ از راه دور (RPD) چیست؟

پروتکل دسکتاپ از راه دور (RPD) پروتکلی است که به شما امکان دسترسی از راه دور به یک کامپیوتر و یا رایانه رومیزی را می دهد. این پروتکل اجازه می دهد تا به یک کامپیوتر متصل شده و از آن بدون هیچگونه محدودیتی استفاده کنید. از این رو دیگر اهمیتی ندارد که در کجای جهان قرار دارید؛ به کمک پروتکل RDP امکان دسترسی به یک سیستم کامپیوتری را خواهید داشت. کابران از راه دور قادر خواهند بود تا فایل های کامپیوتری مورد نظر خود را باز کرده و ویراش کنند. این پروتکل رایج ترین پروتکل برای ایجاد ارتباط بین ماشن های مبتنی بر ویندوز است.

SSH چیست؟

پوسته امن یا SSH پروتکل ارتباطی شبکه است که ارتباط و به اشتراک گذاری داده ها را بین دو کامپیوتر، امکان پذیر می کند. پروتکل SSH امکان احراز هویت کلید عمومی و احراز هویت رمز عبور را برای تسهیل در برقراری ارتباط از طریق یک شبکه باز فراهم خواهد کرد. ارتباطات موجود بین دو کامپیوتر اغلب رمزگذاری شده است. از این رو نمی توان اطلاعات را از طریق یک شبکه ناامن به اشتراک گذاشت. SSH معمولا توسط مدیران شبکه برای مدیریت از راه دور سیستم های شبکه بین ماشین های مبتنی بر لینوکس، استفاده می شود.

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

الزامات استفاده از SSH برای ورود به VPS شما

پوسته امن یا SSH یک راه ساده و راحت برای ورود به سیستم و اتصال به سرور مجازی VPS و مدیریت آن است. ما در این قسمت هر چیزی که برای ورود و اتصال به سرور مجازی VPS خود با استفاده از SSH نیاز دارید را به شما معرفی کرده ایم:

  • کامپیوتر راه دور مورد نظر باید روشن بوده و اتصال شبکه داشته باشد.
  • شما باید آدرس IP دستگاه راه دوری که قصد اتصال به آن دارید را در اختیار داشته باشید.
  • شما به یک مجوز دسترسی به رایانه راه دور نیاز دارید.
  • باید اطمینان حاصل کنید که دسترسی SSH به حساب VPS شما داده شده باشد.
  • تنظیمات فایروال شما باید امکان اتصال از راه دور را فراهم کند.
  • اطمینان حاصل کنید که آدرس IP شما به فایروال اضافه شده است. می توانید آدرس IP خود را با وارد شدن به مدیریت میزبان وب (WHM) و کلیک روی دکمه افزودن IPP به فایروال، در منو سمت چپ فایروال، اضافه کنید. سپس می توانید آدرس IP را در قسمت “Allow Rule” وارد کنید و روی دکمه “Add Rule/Restart” کلیک کنید.
  • شما باید جزئیات SSH خود را از داشبورد VPS یادداشت کنید. با انتخاب دسترسی VPS، نام کاربری و رمز عبور SSH را دریافت کرده و از آنها برای ورود به VPS خود استفاده خواهید کرد.
  • اگر کاربر ویندوز هستید، باید یک کلاینت SSH یا OpenSSH را نصب کنید.
  • برنامه های سرویس گیرنده و سرور باید فعال باشند.

نحوه اتصال به سرور مجازی VPS ویندوز

کاربران ویندوز می توانند با استفاده از یک اتصال دسکتاپ از راه دور (RDC) یا یک کلاینت پروتکل 2X Remote Desktop (RDP) به Windows VPS متصل شوند. حال بیایید با هم نحوه اتصال به سرور مجازی VPS ویندوز را قدم به قدم مرور کنیم:

اتصال از راه دور دسکتاپ (RDC)

در دسکتاپ ویندوز خود، کلید ویندوز را فشار دهید و یا روی منوی “start” کلیک کنید.

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

عبارت “Remote Desktop” را در نوار جستجو تایپ کرده و روی آیکون کامپیوتر که دارای برچسب “Remote Desktop Connection” کلیک کنید.

ورود به ریموت دسکتاپ

آدرس IP یا نام کامپیوتری که می خواهید به آن متصل شوید را وارد کرده و روی گزینه Connect کلیک کنید. همواره می توانید با انتخاب سرویس خود از طریق پنل سرویس گیرنده، آدرس IP را پیدا کنید.

تایپ آدرس آی پی

در صورتی که RDC نتواند هویت کامپیوتر از راه دور را تایید کند، ممکن است اخطار زیر به شما نمایش داده شود. دلیل آن هم این است که از گواهی SSL خودکار (Self-Generated) استفاده می کنید.

اخطار در برقراری ارتباط با VPS

در صورتی که این هشدار را مشاهده کردید، روی گزینه Yes کلیک کرده و ادامه دهید. یک پنجره جدید برای شما نمایش داده می شود که درخواست می کند تا نام کاربری و رمز عبور VPS خود را وارد کنید.

وارد کردن رمز عبور سیستم VPS

در صورتی که نام کاربری و رمز عبور برای اتصال سرور مجازی را به درستی وارد کنید، با موفقیت به VPS ورود پیدا خواهید کرد. سپس به کمک آن می توانید به دسکتاپ مورد نظر خود از راه دور دسترسی یافته و آن را کنترل کنید. با این حال، اگر سرور غیر قابل دسترسی یا آفلاین باشد، ممکن است خطای زیر را دریافت کنید.

خطای اتصال به سرور مجازی VPS

2X Remote Desktop Protocol (RDP) client

شما به عنوان یک کاربر ویندوز، می توانید با استفاده از پروتکل ریموت دسکتاپ از راه دور به ویندوز VPS نیز متصل شوید. اگر می خواهید با استفاده از گزینه کلاینت 2X Remote Desktop Protocol (RDP) به سرور VPS متصل شوید، مراحل زیر را انجام دهید:

  • در صورتی که کامپیوتر شما برنامه 2X RDP Client را ندارد، آن را دانلود و نصب کنید.
  • پس از نصب، برنامه را باز کرده و مسیر file> new connection> standard RDP را طی کنید.
  • در قسمت اتصال اولیه، آدرس IP سرور راه دور خود را تایپ کنید.
  • در قسمت پورت کلید، عدد 3389 را وارد کنید.
  • نام کاربری و رمز عبور VPS خود را وارد کرده و روی گزینه OK کلیک کنید.

بدین صورت شما با موفقیت به سرور راه دور خود وارد خواهید شد.

از طریق سیستم عامل ویندوز به Windows VPS وارد شوید

راه دیگر برای اتصال به سرور مجازی از طریق سیستم عامل ویندوز است. ما برای اتصال به سرور VPS از ویندوز 10 استفاده کرده ایم. مراحل آن به شرح زیر خواهد بود:

وارد سیستم محلی خود شده و دکمه ویندوز یا منوی start را فشار دهید. در منوی برنامه ها، به مسیر Windows Accessories>Remote Desktop Connection بروید. همچنین می توانید از طریق منوی برنامه ها Windows Systems>Run را انتخاب کنید.

اتصال به VPS از ویندوز

عبارت mstsc را در کادر متنی ظاهر شده وارد کرده و ok را فشار دهید.

ورود به ریموت دسکتاپ

سپس از شما خواسته می شود که آدرس IP سرور یا نام کامپیوتر خود را وارد کنید. پس از آن روی گزینه Connect کلیک کنید.

تایپ آدرس آی پی

یک پنجره جدید برای شما باز خواهد شد تا نام کاربری و رمز عبور VPS خود را وارد کنید.

وارد کردن رمز عبور سیستم VPS

در صورتی که می خواهید بعدا اتصال سریع تری را تجربه کنید، می توانید گزینه “من را به خاطر بسپار” را انتخاب کرده تا نام کاربری و رمز عبور شما ذخیره شود.

در ادامه ممکن است مجددا هشدار گواهی SSL را برای اتصال به سرور مجازی دریافت کنید. می توانید با زدن علامت ‘Don’t ask me again for connections to this computer’ برای ادامه روی گزینه Yes کلیک کنید.

اخطار در برقراری ارتباط با VPS

پس از تکمیل فرایند، با موفقیت به VPS ویندوز وارد خواهید شد. بدین صورت می توانید از راه دور، دسترسی به دسکتاپ دیگری را تجربه کنید.

نحوه ورود به VPS از طریق سیستم عامل لینوکس

ممکن است شما هم جزو افرادی باشید که از سیستم عامل لینوکس استفاده می کنند. این امکان همچنان برای شما وجود دارد که به VPS ویندوز وارد شوید. برای اتصال از طریق پروتکل دسکتاپ از راه دور (RDP)، باید در ابتدا برنامه Remmina (یک کلاینت دسکتاپ از راه دور) را نصب کنید.

بعد از نصب برنامه Remmina و ورود به آن، یک پیام خوشامد گویی برای شما نمایش داده می شود که از شما درخواست می کند تا اطلاعات ورود به سیستم مانند IP سرور، نام کاربری و رمز عبور را وارد کنید.

برای راه اندازی آیکون اتصال جدید، روی علامت مثبت در Remmina کلیک کنید.

اتصال به VPS با لینوکس

نوع اتصال به سرور مجازی را به عنوان RDP انتخاب کرده و سپس نام میزبان VPS یا آدرس IP سروری را که می خواهید به آن دسترسی داشته باشید را وارد کنید.

اتصال به VPS با لینوکس

هنگامی که Enter را فشار دهید، از شما خواسته می شود که نام کاربری و رمز عبور را برای دسترسی به سرور (آن دسته از سرورهایی که از طریق ایمیل برای شما ارسال شده اند) وارد کنید.

وصل شدن به VPS با لینوکس

احتمالا اولین باری که وارد سیستم می شوید، هشداری در مورد گواهی دریافت خواهید کرد. برای ادامه، تنها روی گزینه Yes کلیک کنید.

وصل شدن به VPS با لینوکس

در صورتی که همه چیز به خوبی پیش برود، با موفقیت اتصال به سرور مجازی VPS را تجربه می کنید.

اتصال به Windows VPS از طریق سیستم عامل Mac OS

به مانند سیستم عامل های ویندوز و لینوکس، می توانید از طریق سیستم عامل Mac OS نیز به Windows VPS وارد شوید. برای انجام این کار، باید Microsoft Remote Desktop (MRD) را از اپ استور دانلود کرده و روی سیستم مک خود نصب کنید.

پس از نصب، برنامه را باز کرده و روی نماد New یا Plus کلیک کنید. سپس “Desktop” را انتخاب کرده تا یک اتصال از راه دور دسکتاپ جدید آغاز شود.

اتصال به VPS با مک

در مرحله بعدی از شما خواسته می شود تا نام کامپیوتر شخصی یا آدرس IP سرور را وارد کنید. روی افزودن حساب کاربری در منوی کشویی باز شده، کلیک کنید. سپس نام کاربری و رمز عبور خود را وارد کنید. (نام کاربری و رمز عبور از طریق ایمیل برای شما ارسال شده است.)

اتصال به VPS با مک

نام کاربری را به نام Administrator و یا هر نام دیگری که دوست دارید، تنظیم کنید. تنظیمات دیگر را در حالت پیش فرض نگه دارید. سپس روی گزینه ‘Add’ کلیک کرده تا اتصال از راه دور جدید در لیست نمایش داده شود.

اتصال به VPS با مک

هنگامی که روی دکمه شروع کلیک می کنید، دسکتاپ راه دور سیستم عامل Mac شما به طور خودکار با VPS ویندوز پیکربندی می شود. اکنون می توانید دسکتاپ راه دور را ببینید و هر زمان که برنامه MRD را باز می کنید به آن دسترسی پیدا کنید.

نحوه اتصال به VPS لینوکس

فرقی ندارد که کاربر سیستم عامل ویندوز، لینوکس و یا Mac OS هستید. شما این شانس را دارید تا به VPS لینوکس وارد شده و لینوکس مورد نظر خود را از راه دور و از طریق سرور کنترل کنید. ساده ترین راه اتصال به سرور مجازی لینوکسی، استفاده از SSH از طریق ترمینال session است.

شبیه ساز ترمینال را باز کنید و دستور SSH را وارد کنید:

ssh [username]@[server IP address]

مثال:

 ssh [email protected]

هنگامی که رمز عبور از شما خواسته شد، رمز ارائه شده در دستورالعمل ها را وارد کنید و اینتر را فشار دهید. اتصال سرور برقرار خواهد شد.

همچنین شما می توانید از طریق Remmina در لینوکس، به سرور VPS لینوکس متصل شوید. برای این کار پس از نصب نرم افزار، آن را اجرا کنید و برای افزودن یک اتصال، روی علامت سبز + کلیک کنید. سپس نام کامپیوتر را وارد کنید و پروتکل را به SSH تغییر دهید. در مرحله بعدی نام هاست را تایپ کرده و نام کاربری و رمز عبور سرور خود را وارد کنید. حال ارتباط برقرار خواهد شد.

یکی از پروتکل های مرموز و البته کاربردی در دنیای لینوکس، پروتکل SSH Tunnel است. این پروتکل قابلیت و توانایی ایجاد تونل و یک اتصال رمزگذاری شده را دارد. بدین صورت می توان بین کلاینت و سرور تونلی ایمن ایجاد کرد تا اطلاعات و داده ها به صورت رمزگذاری شده منتقل شوند. به این ترتیب می توانید به سادگی امنیت شبکه را افزایش دهید. ما در این مطلب قصد داریم تا به صورت کامل در خصوص SSH Tunnel در لینوکس صحبت کرده و ببینیم که وصل شدن به سرور لینوکس با با استفاده از این روش چگونه است؟

آشنایی با SSH Tunnel در لینوکس

تونل SSH که به آن پورت SSH نیز گفته می شود، راهی برای انتقال ترافیک محلی به هاست های راه دور از طریق SSH است. به بیان دیگر، به کمک SSH Tunnel می توان تمامی اتصالات را به صورت کاملا ایمن و رمزگذاری شده، پیاده سازی کرد. این راه، همچنین راهی آسان برای راه اندازی یک VPC یا شبکه خصوصی مجازی اولیه بوده که می تواند مسیری ایمن برای اتصال به شبکه های خصوصی از طریق شبکه های عمومی ناامین مانند اینترنت ایجاد کند. البته همچنان حملات SSH می توانند آسیب رسان باشند اما درصد وقوع آنها کاهش می یابد.

SSH Tunnel در لینوکس همچنین به شما این امکان را می دهد تا به سرورهای محلی پشت NATها و فایروال ها نیز از طریق تونل های ایمن دسترسی پیدا کنید. به صورت کلی session های SSH اجازه ایجاد تونل برای شبکه سازی را به کاربران می دهند. اگر قصد ایجاد تونل را داشته باشید باید بدانید که به صورت کلی سه مدل شیوه ارسال پورت SSH وجود دارد. ما در این مطلب در خصوص هر سه نوع شیوه صحبت خواهیم کرد:

  • Local SSH Port Forwarding
  • Remote SSH Port Forwarding
  • Dynamic SSH Port Forwarding

برای درک هرچه بهتر، ما در این مطلب برای ایجاد محیط تست خود از تنظیمات زیر استفاده کرده ایم:

Local Host: 192.168.43.31
Remote Host: Linode CentOS 7 VPS with hostname server1.example.com

روش اول: Local SSH Port Forwarding

به کمک این روش port forwarding می توانید از رایانه محلی خود به یک سرور، از راه دور متصل شوید. در این روش ایجاد SSH Tunnel در لینوکس حتی اگر در پشت یک فایروال محدود شده اید یا توسط یک فایروال از دسترسی به برنامه ای که روی پورت 3000 و سرور راه دور قرار دارد، مسدود شده اید، باز هم امکان پذیر بوده و می توانید اتصال خود را ایجاد کنید. برای این کار می توانید یک پورت محلی (برای مثال 8080) را ارسال کرده و از آن برای دسترسی محلی استفاده کنید. سینتکس این دستور به شرح زیر خواهد بود:

$ssh [email protected] -L 8080:server1.example.com:3000

اضافه کردن flag (پرچم) –N برای جلوگیری از اجرای دستور remote است. اگر این عمل را انجام دهید، دیگر امکان دریافت shell را نخواهید داشت.

$ssh -N [email protected] -L 8080:server1.example.com:3000 

سوئیچ –f دستور اجرا در پس زمینه را به SSH Tunnel در لینوکس می دهد.

  $ssh -f -N [email protected] -L 8080:server1.example.com:3000

بعد از اجرای دستورهای بالا، می توانید در دستگاه محلی خود، یک مرورگر را باز کرده و به جای دسترسی به برنامه از راه دور با آدرس server1.example.com:3000، از آدرس 192.168.43.31:8080 استفاده کنید.

روش دوم: Remote SSH Port Forwarding

روش دیگر برای ایجاد SSH Tunnel در لینوکس، روش Remote SSH Port Forwarding است. به کمک این روش می توانید به سادگی از یک دستگاه راه دور (remote) به رایانه محلی خود متصل شوید. به صورت پیش فرض، SSH به شما این اجازه را نمی دهد تا port forwarding را به صورت remote انجام دهید. اما اگر قصد این کار را داشته باشید باید دستور العمل GatewayPorts را در فایل پیکربندی اصلی SSHD (/etc/ssh/sshd_config) میزبان راه دور خود، فعال کنید.

کافی است تا فایل را باز کرده و سپس به کمک یک ویرایشگر، خط فرمان زیر را ویرایش کنید:

$ sudo vim /etc/ssh/sshd_config

حال دستورالعمل مورد نیاز خود را پیدا کرده و مقدار آن را به yes تغییر دهید.

GatewayPorts yes

بعد از ذخیره اعمال تغییرات، از برنامه خارج شوید. در قدم بعدی SSH Tunnel در لینوکس نیاز است تا sshd را مجددا راه اندازی کرده تا تغییرات ایجاد شده، اعمال شوند.

$ sudo systemctl restart sshd

یا

$ sudo service sshd restart

حال برای انتقال پورت 500 از دستگاه راه دور به پورت 300 دستگاه محلی، کافی است تا دستور زیر را اجرا کنید:

$ ssh -f -N [email protected] -R 5000:localhost:3000

به کمک این روش می توانید یک سرور توسعه محلی را به خصوص در پشت NFTها و یا فایروال ها از طریق تونل های امنی که در معرض اینترنت هستند، قرار دهید.

روش سوم: Dynamic SSH Port Forwarding

این روش، برخلاف روش های local and remote port forwarding که امکان برقرار کردن ارتباط تنها با یک پورت را فراهم می کنند، به شما این اجازه را می دهد تا طیف کاملی از ارتباطات TCP را در طیف وسیعی از پورت ها ایجاد کنید. Dynamic SSH Port Forwarding به صورت پیش فرض دستگاه شما را به عنوان یک سرور پراکسی SOCKS تنظیم کرده و قادر به گوش دادن به پورت 1080 است.

برای آشنایی بیشتر باید بدانید که SOCKS یک پروتکل اینترنتی است که چگونگی اتصال یک کلاینت از طریق یک سرور پروکسی (SSH) را به یک سرور دیگر، تعریف می کند. برای راه اندازه SSH Tunnel در لینوکس به کمک این روش، نیاز است تا دستور زیر را پیاده سازی کنید. این دستور یک پراکسی SOCKS را در پورت 1080 راه اندازی کرده و به شما این اجازه را می دهد تا به میزبان راه دور متصل شوید.

$ ssh -f -N -D 1080 [email protected]

بعد از اجرای این دستور، می توانید با ویرایش تنظیمات و پیکربندی آن ها، به برنامه های کاربردی روی دستگاه خود این اجازه را دهید تا به سرور پراکسی SSH متصل شوند. این روش همچنین راهی برای وصل شدن به سرور لینوکس با اندروید نیز شناخته می شود. تنها به یاد داشته باشید که بعد از بسته شدن نشست SSH، پروکسی SOCKS نیز قطع خواهد شد.

لاگ فایل ها، گزارش هایی هستند که لینوکس برای مدیران سرور ذخیره می ‌کند تا رویدادهای مهم سرور، کرنل، سرویس‌ ها و برنامه ‌های در حال اجرای روی آن را پیگیری و نظارت کنند. در این پست، ما به بررسی برترین لاگ فایل های لینوکس که مدیران سرور باید بر روی آن ها نظارت کنند می ‌پردازیم.

لاگ فایل لینوکس چیست؟

لاگ فایل ها مجموعه‌ای از سوابق هستند که لینوکس برای پیگیری رویدادهای مهم توسط مدیران نگهداری می ‌کند. آن ها حاوی پیام هایی در مورد سرور، از جمله هسته (کرنل)، سرویس ها و نرم افزارهای در حال اجرا بر روی آن هستند. لینوکس یک مخزن متمرکز از Log Flieها آماده می ‌کند که می‌ توانند در زیر فهرست /var/log قرار گیرند.

لاگ فایل های تولید شده در یک محیط لینوکس معمولاً به چهار دسته مختلف طبقه بندی می شوند:

  • Application Logs
  • Event Logs
  • Service Logs
  • System Logs

چرا باید لاگ فایل‌ های لینوکس را مانیتور کنیم؟

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

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

کدام لاگ فایل های لینوکس باید نظارت شوند؟

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

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

/var/log/messages

لاگ فایل لینوکس /var/log/messages

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فایل گزارش (Log File) شامل گزارش‌ های عمومی فعالیت سیستم است.
  • عمدتاً برای ذخیره پیام های اطلاعاتی و غیر بحرانی سیستم استفاده می شود.
  • در سیستم های مبتنی بر دبیان، دایرکتوری /var/log/syslog به همین منظور عمل می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • در اینجا می ‌توانید خطاهای non-kernel boot، خطاهای سرویس مربوط به اپلیکیشن و پیام ‌هایی که در هنگام راه ‌اندازی سیستم ثبت می ‌شوند را ردیابی کنید.
  • این اولین لاگ فایلی است که مدیران لینوکس باید بررسی کنند که آیا مشکلی پیش آمده است یا نه.
  • به عنوان مثال، شما با مشکلی در کارت صدا مواجه شده اید. برای بررسی اینکه آیا مشکلی در فرآیند راه ‌اندازی سیستم رخ داده است یا نه، شما می ‌توانید به پیام‌ های ذخیره شده در این فایل نگاهی بیندازید.

/var/log/auth.log

لاگ فایل لینوکس /var/log/auth.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • تمام رویدادهای مربوط به احراز هویت در سرور دبیان و اوبونتو در اینجا ثبت می شوند.
  • اگر به دنبال چیزی هستید که مربوط به مکانیسم مجوز کاربر باشد، می ‌توانید آن را در این فایل پیدا کنید.

چگونه می توان از این گزارش ها استفاده کرد؟

فکر می کنید که یک نقض امنیتی در سرور شما رخ داده است؟ یک فایل جاوا اسکریپت مشکوک در جایی که نباید باشد پیدا کرده اید؟ اگر چنین است، پس این لاگ فایل را سریعا پیدا کنید!

  • تلاش های ناموفق برای ورود را بررسی کنید.
  • حملات brute-force و سایر آسیب ‌پذیری‌ های مربوط به مکانیسم مجوز کاربر را بررسی کنید.

/var/log/secure

لاگ فایل لینوکس /var/log/secure

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

سیستم های مبتنی بر RedHat و CentOS از این لاگ فایل به جای /var/log/auth.log استفاده می کنند.

  • این گزارش عمدتا برای ردیابی استفاده از سیستم های مجوز به کار برده می شود.
  • تمام پیام های مربوط به امنیت از جمله خرابی های احراز هویت را ذخیره می کند.
  • همچنین SSH logins، sudo logins و سایر خطاهای ثبت ‌شده توسط دیمون سرویس ‌های امنیتی سیستم را ردیابی می‌ کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • همه رویدادهای احراز هویت کاربر در اینجا ثبت می شوند.
  • این فایل گزارش می ‌تواند اطلاعات دقیقی درباره تلاش ‌های غیرمجاز یا ناموفق برای ورود به سیستم ارائه دهد.
  • می تواند برای شناسایی تلاش های احتمالی هک بسیار مفید باشد.
  • همچنین اطلاعات مربوط به ورودهای موفق را ذخیره می کند و فعالیت های کاربران معتبر را ردیابی می کند.

/var/log/boot.log

لاگ فایل لینوکس /var/log/boot.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • اسکریپت راه اندازی اولیه سیستم، /etc/init.d/bootmisc.sh، تمام پیام های bootup را به این لاگ فایل ارسال می کند.
  • این لاگ فایل، مخزن اطلاعات مربوط به بوت شدن و پیام های ثبت شده در طول فرآیند راه اندازی سیستم است.

چگونه می توان از این گزارش ها استفاده کرد؟

  • باید این فایل گزارش را بررسی کنید تا مسائل مربوط به خاموش شدن غیرمنتظره، راه اندازی مجدد برنامه ریزی نشده یا خرابی در راه اندازی را متوجه شوید.
  • این فایل می تواند برای تعیین مدت زمان توقف سیستم، ناشی از خاموش شدن غیرمنتظره مفید باشد.

/var/log/dmesg

لاگ فایل لینوکس /var/log/dmesg

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فایل گزارش شامل پیام های Kernel ring buffer است.
  • اطلاعات مربوط به دستگاه های سخت افزاری و درایورهای آن ها در فایل ثبت می شود.
  • همانطور که هسته، دستگاه های فیزیکی مرتبط با سرور را در طول فرآیند بوت شناسایی می کند، وضعیت دستگاه، خطاهای سخت افزاری و سایر پیام های عمومی را نیز ضبط می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • این لاگ فایل بیش تر برای مشتریان سرور اختصاصی مفید است.
  • اگر سخت افزار خاصی به درستی کار نمی کند یا شناسایی نمی شود، می توانید برای عیب یابی به این فایل گزارش اعتماد کنید.
  • یا اینکه می توانید یک سرور مدیریت شده از زمین هاست خریداری کنید و ما آن را برای شما نظارت می کنیم.

/var/log/kern.log

فایل /var/log/kern.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این یک لاگ فایل بسیار مهم است زیرا حاوی اطلاعات ثبت شده توسط کرنل یا هسته است.

چگونه می توان از این گزارش ها استفاده کرد؟

  • ایده آل برای عیب یابی خطاها و هشدارهای مربوط به هسته.
  • گزارش ‌های کرنل می‌ توانند برای عیب ‌یابی یک هسته سفارشی ‌سازی شده مفید باشند.
  • همچنین می تواند در رفع اشکالات سخت افزاری و مشکلات اتصال مفید باشد.

/var/log/faillog

فایل /var/log/faillog

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این فایل حاوی اطلاعاتی درباره تلاش های ناموفق برای ورود به سیستم است.

چگونه می توان از این گزارش ها استفاده کرد؟

این گزارش می تواند یک فایل مفید برای کشف هرگونه تلاش برای نقض امنیتی شامل هک نام کاربری/رمز عبور و حملات brute-force باشد.

/var/log/cron

فایل /var/log/cron

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این لاگ فایل اطلاعات مربوط به cron jobها را ثبت می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • هر زمان که یک cron job اجرا می شود، این File log تمام اطلاعات مربوطه از جمله اجرای موفقیت آمیز و پیام های خطا در صورت خرابی را ثبت می کند.
  • اگر با cron برنامه ریزی شده خود مشکل دارید، باید این فایل گزارش را بررسی کنید.

لاگ فایل لینوکس /var/log/yum.log

لاگ فایل لینوکس /var/log/yum.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

شامل اطلاعاتی است که هنگام نصب بسته جدید با استفاده از دستور yum ثبت می شود.

چگونه می توان از این گزارش ها استفاده کرد؟

  • نصب اجزای سیستم و بسته های نرم افزاری را پیگیری کنید.
  • پیام های ثبت شده را در اینجا بررسی کنید تا ببینید آیا بسته به درستی نصب شده است یا خیر.
  • به شما کمک می کند تا مشکلات مربوط به نصب نرم افزار را عیب یابی کنید.

فرض کنید سرور شما غیرعادی رفتار می کند و شما مشکوک هستید بسته نرم افزاری که اخیراً نصب شده دلیل اصلی این مشکل باشد. در چنین مواقعی، می‌ توانید این لاگ فایل را بررسی کنید تا بسته ‌هایی را که اخیراً نصب شده‌اند، بررسی کنید و برنامه دارای مشکل را شناسایی کنید.

/var/log/maillog یا /var/log/mail.log

فایل /var/log/maillog یا /var/log/mail.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

همه گزارش ‌های مربوط به سرور ایمیل در اینجا ذخیره می ‌شوند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • اطلاعات مربوط به postfix، smtpd، MailScanner، SpamAssassain یا هر سرویس مرتبط دیگری که در سرور ایمیل اجرا می شود را در این قسمت مشاهده می کنید.
  • تمام ایمیل هایی که در یک دوره خاص ارسال یا دریافت شده اند را ردیابی می کنید.
  • مشکلات تحویل نامه ناموفق را بررسی می کنید.
  • اطلاعاتی در مورد تلاش های احتمالی ارسال هرزنامه که توسط سرور ایمیل مسدود شده است را دریافت می کنید.
  • منشاء ایمیل دریافتی را با بررسی دقیق این لاگ فایل ردیابی می کنید.

لاگ فایل لینوکس var/log/httpd/

لاگ فایل لینوکس var/log/httpd/

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فهرست شامل لاگ های ثبت شده توسط سرور آپاچی است.
  • اطلاعات ورود به سیستم سرور آپاچی در دو لاگ فایل مختلف ذخیره می شود – error_log و access_log.

چگونه می توان از این گزارش ها استفاده کرد؟

  • error_log حاوی پیام های مربوط به خطاهای httpd مانند مشکلات حافظه و سایر خطاهای مربوط به سیستم است.
  • این جا قسمتی است که سرور آپاچی رویدادها و سوابق خطاهایی را که هنگام پردازش درخواست ‌های httpd با آن مواجه می‌ شوند را می‌نویسد.
  • اگر مشکلی در وب سرور آپاچی پیش بیاید، این گزارش را برای تشخیص مشکل بررسی کنید.
  • علاوه بر فایل error-log، Apache یک لیست جداگانه از access_log نیز دارد.
  • تمام درخواست های دسترسی دریافت شده از طریق HTTP در فایل access_log ذخیره می شوند.
  • به شما کمک می کند تا هر صفحه ارائه شده و هر فایل بارگذاری شده توسط آپاچی را پیگیری کنید.
  • نشانی IP و شناسه کاربری همه کلاینت هایی را که درخواست اتصال به سرور می کنند را ثبت می کند.
  • اطلاعات مربوط به وضعیت درخواست‌ های دسترسی را ذخیره می ‌کند. اینکه آیا پاسخی با موفقیت ارسال شده است یا درخواست منجر به شکست شده است؟

/var/log/mysqld.log یا /var/log/mysql.log

فایل /var/log/mysqld.log یا /var/log/mysql.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • همانطور که از نام آن پیداست، این لاگ فایل MySQL است.
  • همه پیام‌ های اشکال‌ زدایی، شکست و موفقیت مربوط به دیمون [mysqld] و [mysqld_safe] در این فایل ثبت شده‌اند.
  • RedHat،CentOS  و Fedora گزارش‌ های MySQL را در /var/log/mysqld.log ذخیره می ‌کنند، در حالی که دبیان و اوبونتو ورود به دایرکتوری /var/log/mysql.log را حفظ می‌ کنند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • از این گزارش می توانید برای شناسایی مشکلات هنگام شروع، اجرا یا توقف mysqld استفاده کنید.
  • اطلاعاتی در مورد اتصالات کلاینت به دایرکتوری داده MySQL دریافت می کنید.
  • همچنین می ‌توانید پارامتر «long_query_time» را برای ثبت اطلاعات مربوط به query locks و slow running queries تنظیم کنید.

نکته آخر

در حالی که نظارت و تجزیه و تحلیل تمام لاگ فایل های تولید شده توسط سیستم می تواند کار دشواری باشد، می توانید از یک ابزار نظارتی متمرکز برای ساده سازی فرآیند بررسی گزارش ها استفاده کنید.

بنابراین اگر می‌ خواهید یک رویکرد فعالانه برای مدیریت سرور داشته باشید، سرمایه ‌گذاری در یک پلتفرم مانیتورینگ سرور به شما این امکان را می ‌دهد تا داده‌ های گزارش را در لحظه مشاهده کنید و هشدارهایی را تنظیم کنید تا در صورت بروز تهدیدات احتمالی به شما اطلاع دهند.

فرض کنید با خانواده خود به تعطیلات رفته اید. درست در همین زمان از شرکت با شما تماس می گیرند و می گویند وب سرور با مشکل مواجه شده است! اگر تنها وسیله الکترونیکی که با خود به همراه دارید یک گوشی موبایل اندرویدی باشد و وب سرور به ابزار از راه دوری مانند TeamViewer متصل نباشد، آیا باز هم می توانید به سرور لینوکسی ریموت بزنید؟ SSH به لینوکس با اندروید روشی است که در این شرایط می توانید از آن استفاده کنید.

ارتباط SSH چیست؟

برای پاسخ به این پرسش ابتدا باید بدانیم که ارتباط SSH به چه معناست؟ SSH یا اتصال پوسته ایمن (Secure Shell Protocol) یک پروتکل ارتباطی شبکه ای است که دو دستگاه هوشمند را قادر می سازد تا با یکدیگر ارتباط برقرار کنند و داده ها را به اشتراک بگذارند. یکی از ویژگی های ذاتی ssh این است که داده ها را به صورت رمزگذاری شده در شبکه منتقل می کند؛ این موضوع اهمیت ویژه ای در شبکه های ناامن دارد.

SSH اغلب برای “ورود به سیستم” و انجام عملیات از راه دور در رایانه ها استفاده می شود، اما ممکن است برای انتقال داده نیز استفاده شود.

چطور می توان بین سرور لینوکس و گوشی اندروید ارتباط SSH ایجاد کرد؟

حالا می توانیم به بحث اصلی بازگردیم و روش اتصال SSH به لینوکس با اندروید را توضیح دهیم. اگر شما با سرور LAMP (Linux Apache MySQL PHP) سروکار دارید، خوش شانس هستید و فقط کافی است یک برنامه SSH روی گوشی اندروید خود نصب کنید. سپس به راحتی می توانید به آن سرور متصل می شوید و آن را عیب یابی کنید.

برنامه های SSH بسیاری در گوگل پلی موجود هستند که می توانید از آنها برای این منظور استفاده کنید. ما در این آموزش قصد داریم تا از برنامه Telnet/SSH Simple Client استفاده کنیم. محیط کاربری ساده و بدون ابزارهای اضافی، این برنامه را به یک رابط SSH ایده آل تبدیل کرده است.

در ادامه مراحل نصب و راه اندازی این برنامه اندرویدی را بررسی می کنیم.

نصب و راه اندازی اتصال SSH با کمک برنامه Telnet/SSH Simple Client

آموزش نصب

  • ابتدا فروشگاه Google Play را در گوشی Android خود باز کنید.
  • برنامه telnet ssh client را جستجو کنید.
  • برنامه را نصب کنید.
  • فهرست مجوزها را بخوانید و روی Accept ضربه بزنید تا فرایند نصب کامل شود.
  • بعد از اتمام نصب، آیکون برنامه روی صفحه گوشی شما ظاهر می شود. اگر آیکون برنامه برای شما ظاهر نشد، منوی سرچ برنامه ها را باز کنید و عبارت Telnet را سرچ کنید تا آیکون مورد نظر پیدا شود.

آموزش راه اندازی

به محض باز کردن برنامه، با یک رابط کاربری ساده روبه رو خواهید شد.

محیط اولیه برنامه Telnet/SSH Simple Client
محیط اولیه برنامه Telnet/SSH Simple Client

اتصال به سرور SSH آسان است. تنها کاری که باید انجام دهید این است که نام میزبان (یا آدرس IP) را وارد کنید و شماره پورت را انتخاب کنید. سپس Telnet یا SSH را انتخاب کنید و عمودی یا افقی بودن صفحه را مشخص کنید.

باید توجه داشته باشید، وقتی روی Telnet یا SSH ضربه می زنید، شماره پورت به طور خودکار تغییر نمی کند. شما باید به صورت دستی آن را تغییر دهید. اگر مطمئن نیستید، پورت پیش فرض Secure Shell برابر 22 و پورت پیش فرض Telnet برابر 23 است.

هنگامی که روی Connect ضربه بزنید، نام کاربری و رمز عبور از شما خواسته می شود.

نام کاربری و رمز عبور را وارد کنید
نام کاربری و رمز عبور را وارد کنید

دوباره روی دکمه Connect ضربه بزنید، و نام خود را در اعلان ترمینال سرور پیدا کنید.

SSH به لینوکس با اندروید

هنگامی که به اعلان ترمینال رسیدید، می توانید دستورات را همان طور که انتظار دارید ارسال کنید. برای این کار کافی است دستور را تایپ کنید و روی دکمه ارسال ضربه بزنید.

نکته ای که باید به آن توجه داشته باشید این است که در این برنامه گزینه [Ctrl] که برای دستورات فرار (escape commands) استفاده می شود، وجود ندارد.

در نهایت و پس از اتمام کار، باید مطمئن شوید که اتصال به سرور را قطع کرده اید. توجه کنید که اگر فقط روی دکمه هوم دستگاه ضربه بزنید، همچنان متصل می مانید. این موضوع می تواند باتری یا حجم اینترنت شما را از بین ببرد. خارج از آن، اکنون باید هنگام استراحت در ساحل گرم و شنی در طول لحظات رو به پایان تعطیلات خود، سرور LAMP را عیب یابی کنید.

جمع بندی

در این مقاله ابتدا در رابطه با اهمیت و لزوم اتصال SSH به لینوکس با اندروید صحبت کردیم و با تعریف اتصال SSH ذهن شما را برای بررسی آموزش نحوه انجام این اتصال آشنا کردیم. سپس بیان کردیم که برای این اتصال به یک نرم افزار کارآمد نیاز داریم. در ادامه با بررسی نحوه نصب و راه اندازی برنامه اندرویدی Telnet/SSH Simple Client به شما نشان دادیم که چطور می توانید از راه دور و وقتی در تعطیلات هستید، سرورهای خود را مدیریت کنید.

 آیا شما تجربه مشابهی در ارتباط SSH به لینوکس با اندروید دارید؟ نظر خود را در انتهای مقاله با ما به اشتراک بگذارید.

ریموت زدن به سرور لینوکسی به شیوه های مختلفی انجام می شود. دو روش مهم آن از طریق SSH و VNC است. در این مقاله قصد داریم روش ریموت زدن به سرور لینوکسی را به صورت کامل و جامع و با استفاده از این دو روش به شما آموزش دهیم. با ما همراه باشید:

SSH چیست؟

Secure Shell که گاهی به آن Secure Socket Shell نیز گفته می شود، پروتکلی است که به شما امکان می دهد با استفاده از یک رابط مبتنی بر متن، به صورت ایمن به یک کامپیوتر راه دور یا یک سرور متصل شوید. هنگامی که یک اتصال SSH ایمن ایجاد شد، یک Session ایجاد شده و شما می توانید با تایپ دستورات در کلاینت در رایانه محلی خود سرور را دستکاری کنید. مدیران سیستم و شبکه بیشتر از این پروتکل استفاده می کنند و همچنین هرکسی که نیاز به مدیریت یک کامپیوتر از راه دور به شیوه ای بسیار امن دارد، این پروتکل رو انتخاب می کند. پروتکل SSH دارای دو نسخه ارتباط سرور SSH و سرویس گیرنده یا کلاینت SSH است.

نحوه فعال کردن اتصال SSH برای ریموت زدن به سرور لینوکسی

از آنجایی که ایجاد یک اتصال SSH به دو مولفه کلاینت و سرور نیاز دارد، باید مطمئن شوید که آنها به ترتیب روی کلاینت و سرور نصب شده اند. یک ابزار منبع باز SSH که به طور گسترده برای توزیع های لینوکس استفاده می شود OpenSSH است. نصب و راه اندازی OpenSSH نسبتا آسان است. برای این کار نیاز به دسترسی به ترمینال روی سرور و رایانه ای دارید که برای اتصال از آن استفاده می کنید. توجه داشته باشید که اوبونتو به طور پیش فرض سرور SSH را نصب نکرده است.

نحوه نصب کلاینت OpenSSH

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

برای بررسی اینکه آیا کلاینت در سیستم مبتنی بر لینوکس شما موجود است یا خیر، باید:

ترمینال SSH را دانلود کنید. می توانید “Terminal” را جستجو کنید یا CTRL + ALT + T را روی صفحه کلید خود فشار دهید. سپس دستور زیر را تایپ کنید و در ترمینال کلید Enter را فشار دهید.

اگر کلاینت نصب شده باشد، پاسخی به شکل زیر دریافت خواهید کرد:

[email protected]:~$ ssh

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [[email protected]]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[[email protected]]hostname [command]

[email protected]:~$

این بدان معناست که شما آماده اتصال از راه دور به یک ماشین فیزیکی یا مجازی هستید. در غیر این صورت، باید کلاینت OpenSSH را نصب کنید:

دستور زیر را برای نصب کلاینت OpenSSH بر روی کامپیوتر خود اجرا کنید:

sudo apt-get install openssh-client

در صورت درخواست، رمز عبور Super user خود را وارد کنید. سپس Enter را بزنید تا نصب کامل شود.

اکنون می‌توانید به هر ماشینی که برنامه سمت سرور روی آن است، SSH کنید، مشروط بر اینکه از امتیازات لازم برای دسترسی و همچنین نام میزبان یا آدرس IP برخوردار باشید.

نحوه نصب سرور OpenSSH

برای پذیرش اتصالات SSH، یک ماشین باید بخش سمت سرور Toolbox نرم افزار SSH را داشته باشد.

اگر ابتدا می خواهید بررسی کنید که آیا OpenSSH در سرور اوبونتو رایانه راه دوری که نیاز به پذیرش اتصالات SSH دارد موجود است، می توانید سعی کنید به میزبان محلی متصل شوید:

ترمینال را روی دستگاه سرور باز کنید. می توانید “Terminal” را جستجو کنید یا CTRL + ALT + T را روی صفحه کلید خود فشار دهید. عبارت ssh localhost را تایپ کنید و کلید اینتر را بزنید.

برای سیستم‌هایی که سرور SSH نصب نشده است، پاسخ مشابه این خواهد بود:

[email protected]:~$ ssh localhost
ssh: connect to host localhost port 22: Connection refused [email protected]:~$

در صورت وجود موارد فوق، باید برنامه سمت سرور OpenSSH را نصب کنید. ترمینال را باز بگذارید و برای نصب سرور SSH دستور زیر را اجرا کنید:

sudo apt-get install openssh-server ii.

در صورت درخواست، رمز عبور Super User خود را وارد کنید.

Enter و Y را برای اجازه دادن به نصب پس از درخواست فضای دیسک وارد کنید. فایل های پشتیبانی مورد نیاز نصب می شوند و سپس می توانید با تایپ این دستور بررسی کنید که آیا سرور SSH روی دستگاه اجرا می شود یا خیر:

sudo service ssh status

اگر سرویس SSH اکنون به درستی اجرا شود، پاسخ در ترمینال باید شبیه به این باشد:

[email protected]:-$ sudo service ssh status
• ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
Active: active (running) since Fr 2018-03-12 10:53:44 CET; 1min 22s ago Process: 1174 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCES

Main PID: 3165 (sshd)

راه دیگر برای آزمایش اینکه آیا سرور OpenSSH به درستی نصب شده است و اتصالات را می پذیرد، این است که دستور ssh localhost را دوباره در ترمینال خود اجرا کنید.

نحوه ریموت زدن به سرور لینوکسی با SSH

اکنون که کلاینت و سرور OpenSSH را بر روی هر دستگاهی که نیاز دارید نصب کرده اید، می توانید یک ارتباط راه دور ایمن با سرورهای خود برقرار کنید. برای انجام این کار:

ترمینال SSH را روی دستگاه خود باز کنید و دستور زیر را اجرا کنید:

ssh [email protected]_ip_address

اگر نام کاربری در دستگاه محلی شما با نام کاربری در سروری که می‌خواهید به آن متصل شوید مطابقت دارد، فقط می‌توانید تایپ کنید: ssh host_ip_address و سپس کلید Enter را بزنید.

رمز عبور خود را وارد کرده و Enter را بزنید. توجه داشته باشید که هنگام تایپ هیچ بازخوردی روی صفحه نمایش دریافت نخواهید کرد. اگر رمز عبور خود را جایگذاری می‌کنید، مطمئن شوید که آن را به صورت ایمن در یک فایل متنی ذخیره کرده اید.

هنگامی که برای اولین بار به یک سرور متصل می شوید، از شما پرسیده می شود که آیا می خواهید به اتصال خود ادامه دهید یا خیر. فقط yes را تایپ کنید و Enter را بزنید. این پیام فقط یک بار ظاهر می شود زیرا سرور راه دور در دستگاه محلی شما شناسایی نشده است.

اکنون یک فینگر پرینت ECDSA اضافه شده است و شما به سرور راه دور متصل هستید. اگر رایانه ای که می خواهید از راه دور به آن متصل شوید در همان شبکه است، بهتر است به جای آدرس IP عمومی از آدرس IP خصوصی استفاده کنید. در غیر این صورت، فقط باید از آدرس IP عمومی استفاده کنید.

علاوه بر این، مطمئن شوید که می‌دانید پورت TCP صحیح OpenSSH برای درخواست‌های اتصال به آن گوش می‌دهد و تنظیمات ارسال پورت درست است. اگر کسی پیکربندی فایل sshd_config را تغییر نداده است، پورت پیش‌فرض 22 است. همچنین می توانید شماره پورت را بعد از آدرس IP میزبان اضافه کنید.

[email protected]:~$ ssh [email protected] –p7654 [email protected]’s password:

The authenticity of host '185.52.53.222 (185.52.53.222)' can't be established. ECDSA key fingerprint is SHA256:9lyrpzo5Yo1EQAS2QeHy9xKceHFH8F8W6kp7EX2O3Ps. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ' 185.52.53.222' (ECDSA) to the list of known hosts. 

[email protected]:~$

مراحل بعدی SSH

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

برخی از تنظیمات ویرایش فایل پیکربندی sshd عبارتند از:

  1. پورت پیش‌فرض TCP را در جایی که دیمون SSH در حال گوش دادن است، تغییر دهید. آن را از 22 به چیزی بسیار بالاتر تغییر دهید، به عنوان مثال 24596 و مطمئن شوید که از شماره پورتی استفاده نمی کنید که به راحتی قابل حدس زدن باشد، مانند 222، 2222 یا 22222.
  2. از جفت کلیدهای SSH برای احراز هویت جهت ورود بدون رمز عبور SSH استفاده کنید. آنها هم ایمن تر هستند و هم اجازه ورود بدون نیاز به رمز عبور را می دهند (که سریعتر و راحت تر است).
  3. ورودهای مبتنی بر رمز عبور را در سرور خود غیر فعال کنید. اگر این امکان را غیر فعال کنید، امکان استفاده از آن برای ورود به سرورهای شما از بین می رود و دیگر با استفاده از حملاتی همچون بروت فورس، نمی توان به سرور شما نفوذ پیدا کرد. البته به یاد داشته باشید که قبل از اینکه گزینه ورود با استفاده از رمزهای عبور را غیر فعال کنید، مطمئن شوید که احراز هویت با استفاده از جفت کلید به درستی کار می کند.
  4. دسترسی روت به سرور خود را غیر فعال کنید و از یک حساب معمولی با دستور su- استفاده کنید تا به کاربر اصلی تغییر دهید.

نحوه ریموت زدن به سرور لینوکسی با VNC

VNC به شما این امکان را می دهد که از راه دور یک محیط دسکتاپ را در رایانه راه اندازی کنید و از کامپیوتر خود با آن دسکتاپ تعامل داشته باشید. متأسفانه، VNC رمزگذاری داخلی ندارد، به این معنی که تمام اطلاعات ارسال شده از طریق VNC می تواند توسط اشخاص ثالث مورد نفوذ قرار گیرد. یک راه حل برای رفع این مشکل استفاده از ssh (پوسته امن) برای رمزگذاری ترافیک بین شما و میزبان راه دور شما است.

این آموزش اصول راه اندازی یک سرور VNC، بسته بندی آن در ssh و اتصال ایمن به دسکتاپ از راه دور را پوشش می دهد. در مثال‌های زیر با استفاده از نمایشگر 44 به mo.ece.pdx.edu متصل می‌شویم، به این معنی که شماره پورت 5944 خواهد بود (اعداد پورت VNC برابر با 5900 به اضافه عدد نمایشگر است). هر جا که به mo.ece.pdx.edu اشاره می شود، می توان از هر دستگاه لینوکس Ubuntu یا Redhat/Centos در MCECS نیز استفاده کرد.

مرحله 1 – سرور VNC را در رایانه راه دور راه اندازی کنید

قبل از اینکه بتوانیم به دسکتاپ راه دور متصل شویم، باید سرور VNC را روی دستگاه راه دور راه اندازی کنیم. برای انجام این کار، به دستگاهی که در آن به دسکتاپ راه دور دسترسی خواهید داشت، وارد شوید. در ترمینال دستور زیر را اجرا کنید:

vncserver

با این کار سرور VNC روی دستگاه راه‌اندازی می‌شود و به آن می‌گوید که فقط اتصالات از لوکال هاست را بپذیرد، یعنی از کاربرانی که وارد دستگاه میزبان سرور VNC شده‌اند. برای ورود به Session VNC از شما یک رمز عبور خواسته می شود (این کار مانند ورود با حساب MCECS خود نیست. این رمز عبور به طور خودکار انتخاب شده است. توصیه می شود که در اینجا از رمز عبور حساب MCECS خود استفاده نکنید!)

توجه: این رمز عبور باید کمتر از 8 کاراکتر باشد!

همچنین از شما پرسیده می شود که آیا می خواهید یک رمز عبور جداگانه فقط برای مشاهده اختصاص دهید یا خیر. اگر بخواهید Session مورد نظر فقط به صورت تصویری با دسکتاپ شما تعامل داشته باشد و فقط آن را مشاهده کند و قابلیت اجرای دستوری را در آن نداشته باشد، این رمز عبوری است که به آن می دهید. پس از آن، شما باید مقداری خروجی به شکل زیر دریافت کنید:

New 'X' desktop is mo.ece.pdx.edu:44

Starting applications specified in /u/cecsuser/.vnc/xstartup
Log file is /u/cecsuser/.vnc/mo.ece.pdx.edu:44.log

مرحله2 – ایجاد Tunnel SSH در VNC

اکنون که سرور VNC در حال اجرا است، باید تونل ssh را از دستگاه محلی شما به میزبان راه دور ایجاد کنیم. از Session ssh خود خارج شوید (نگران نباشید سرور vnc در هنگام خروج در پس‌زمینه در حال اجرا است) و با دستورات زیر در پنجره ترمینال دوباره به همان دستگاه متصل شوید:

ssh [email protected] -L 5944:localhost:5944

جایی که cecsuser با نام کاربری حساب MCECS شما جایگزین می شود.

توجه: سینتکس -L 5944:localhost:5944 چیزی است که مسئول ایجاد تونل ssh است که VNC بین میزبان محلی شما و میزبان راه دور استفاده می کند. در اصل، چیزی که می گوید این است که هر چیزی را که از طریق پورت 5944 کامپیوتر راه دور ارسال می شود بردارید و آن را به پورت 5944 کامپیوتر محلی انتقال دهید. ما در اینجا برای سادگی از همان دو عدد استفاده می کنیم، اما همانطور که در بالا ذکر شد، می توانید پورت را در رایانه محلی (هر عددی بین 1024 و 65535) مشخص کنید.

مرحله 3 – اتصال به لینوکس از طریق VNC با استفاده از Remmina (Linux GUI)

Remmina نمایشگر پیش فرض دسکتاپ از راه دور است که با اوبونتو (از نسخه 14.04 به بعد) ارائه شده است. برای راه‌اندازی Remmina، می‌توانید کلید ویندوز را فشار دهید یا یک فرمان اجرا را باز کنید (به طور پیش‌فرض Alt+F2) سپس روی صفحه خالی کلیک کنید تا یک اتصال جدید ایجاد شود.

ریموت زدن به سرور لینوکس

در مرحله بعد، اطلاعات زیر را وارد کنید:

آموزش ریموت زدن به سرور
آموزش جامع ریموت زدن به سرور لینوکسی

اکنون می توانید روی ذخیره یا اتصال کلیک کنید. اگر برای Session VNC خود رمز عبور وارد کرده اید (که واقعا باید انجام دهید!)، اکنون از شما آن رمز خواسته می شود:

آموزش ریموت زدن با SSH و VNC

در نهایت، می توانید از Session remote خود لذت ببرید! از آنجایی که شما یک Tunnel به سرور دارید که از پورت 5944 شما شروع می شود و به پورت 5944 سرور ختم می شود که توسط VNC استفاده می شود، Remmina Session VNC طوری رفتار می کند که گویی به صورت محلی در حال اجرا است.

اکنون شما موفق به ریموت زدن به سرور لینوکسی خود شده اید و اگر روی ذخیره کلیک کنید، پورتی را که برای اتصال به Session VNC خود استفاده کرده اید، ذخیره می شود و همیشه می توان از آن استفاده نمود.

از همراهی شما در این مقاله از وبسایت زمین هاست متشکریم. در صورت وجود هر گونه سوال می توانید از طریق درج کامنت با ما به اشتراک بگذارید.

اوبونتو (Ubuntu) یک سیستم عامل مبتنی بر لینوکس است که Open Source (منبع باز) بوده و کاملا رایگان است. شما می توانید این سیستم عامل را بر روی رایانه شخصی خود یا سرورهای خصوصی مجازی نصب و استفاده کنید.

اوبونتو در سال 2004 توسط یک شرکت بریتانیایی به نام Canonical معرفی شد. در ابتدا بر پایه توزیع محبوب لینوکس (در آن زمان) Debian بود؛ اما به دلیل اینکه نصب آن دشوار بود با Ubuntu جایگزین شد.

Canonical هر شش ماه یک بار مسئول انتشار یک نسخه جدید از Ubuntu است، همچنین انجمن های Ubuntu را برای مشارکت مردم در رفع باگ های نرم افزاری، پاسخ به سوالات و ارائه پشتیبانی فنی به صورت رایگان ایجاد کرده است.

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

تفاوت لینوکس و اوبونتو چیست؟

لینوکس مجموعه ای از سیستم عامل های مختلف است؛ یا به عبارت دیگر Linux هسته اصلی یک سیستم عامل (OS) محسوب می شود. این سیستم عامل امکان برقراری ارتباط بین قطعات سخت افزاری و نرم افزاری را فراهم می کند.

لینوکس مبتنی بر یونیکس است و در سال 1991 منتشر شد. لینوکس برای سرورهای وب، کنسول های بازی، دسکتاپ و رایانه های شخصی در دسترس است. این سیستم عامل در نسخه های مختلفی به نام “توزیع های لینوکس” عرضه می شود.

Ubuntu یکی از انواع توزیع لینوکس بر پایه دبیان است. این توزیع برای محاسبات ابری، سرورها، دسکتاپ ها و دستگاه های اینترنت اشیا (IoT) مناسب است. تفاوت اصلی بین لینوکس و اوبونتو این است که اولی یک عضو خانواده از سیستم عامل های مبتنی بر یونیکس است، در حالی که اوبونتو یک توزیع لینوکس است.

علت محبوبیت اوبونتو چیست؟

طبق وب سایت رسمی اوبونتو، این توزیع پرکاربردترین پلتفرم لینوکس در جهان است. در ادامه علت محبوبیت آن را با هم بررسی می کنیم.

1- کاربر پسند بودن

اوبونتو از محیط دسکتاپ لینوکس برای رابط کاربری (UI) خود استفاده می کند. از اوبونتو 17.10 به بعد، GNOME به عنوان رابط کاربری پیش فرض استفاده می شود. GNOME صفحه را با توضیحات زیادی شلوغ نمی کند، در عوض از نمادها برای آسان سازی جستجو استفاده می کند.

به  طور پیش  فرض، GNOME دارای پنل Activities در نوار ابزار سمت چپ است. آیکون کنترل ها نیز در گوشه سمت راست بالای صفحه قرار دارند.

محل پنل Activities  و Controls در اوبونتو

با کلیک کردن روی دکمه شبکه در گوشه سمت چپ و پایین صفحه، می توانید نمای کلی برنامه ها را مشاهده کنید.

نمای کلی برنامه ها در Ubuntuهمچنین جستجو در سیستم بسیار آسان است، زیرا تمام عناصر پیکربندی شده و برنامه ها از صفحه اصلی قابل دسترسی هستند.

2- امنیت قوی

اوبونتو یک پروژه منبع باز است که به طور مداوم توسط اعضای انجمن خود مورد بررسی و بازبینی قرار می گیرد. در نتیجه هر گونه آسیب پذیری امنیتی را می توان به سرعت شناسایی کرد و از بین برد. به طور کلی، توزیع های لینوکس در مقایسه با سایر سیستم عامل ها دارای نقص های امنیتی کمتری هستند.

قابل ذکر است که اوبونتو از AppArmor استفاده می کند، که مجوز برنامه ها و منابع دسترسی آن ها را محدود می کند. علاوه بر این Ubuntu از اقدامات امنیتی خاصی پشتیبانی می کند، مانند به روزرسانی های امنیتی، استفاده از sudo به جای root Linux user، استفاده از رمزهای عبور پیچیده، راه اندازی سرور VPN، پیکربندی فایروال با استفاده از ufw و فعال کردن iptables.

3- گزینه های نرم افزاری بیش تر

اکثر برنامه های محبوب در macOS و Windows از جمله Slack، Spotify و Firefox برای کاربران لینوکس در دسترس هستند و این امکان وجود دارد تا از طریق مرکز نرم افزار (Software Center) اوبونتو نصب شوند. حتی اگر نتوانستید برنامه مورد نظر خود را پیدا کنید، به احتمال زیاد یک جایگزین با کیفیت برای آن در دسترس است. به عنوان مثال، Libre Office به خوبی Microsoft Office کار می کند.

اکثر برنامه های محبوب در macOS و Windows از جمله Slack، Spotify و Firefox برای کاربران لینوکس در دسترس هستند

گزینه دیگری که می توانید به غیر از مرکز نرم افزار Ubuntu استفاده کنید Snapcraft است. برنامه ای که توسط Canonical ایجاد شده است. این برنامه حاوی بسته های نرم افزاری منبع باز و اختصاصی است که برای سیستم عامل های مبتنی بر لینوکس در دسترس می باشند. یکی از مزیت های اصلی اسنپ کرافت این است که از snapd daemon استفاده می کند که به طور خودکار برنامه ها را بررسی و به روز می کند.

4- حریم خصوصی پیشرفته

درست مانند هر سیستم عامل دیگری، Ubuntu سیاست حفظ حریم خصوصی داده های خود را دارد. چهار اصل اساسی وجود دارد که Ubuntu از نظر پردازش اطلاعات شخصی از آن ها پیروی می کند:

  • اوبونتو اطلاعات شخصی را از کاربر درخواست نمی کند؛ مگر اینکه واقعاً برای اهداف قانونی به چنین اطلاعاتی نیاز داشته باشد.
  • اوبونتو اطلاعات شخصی کاربران خود را جز برای ارائه محصولات و خدمات به مشتریان خود، پیروی از قانون و محافظت از حقوق خود با هیچکس به اشتراک نمی گذارد.
  • اوبونتو اطلاعات شخصی را ذخیره نمی کند مگر اینکه برای عملکرد خدمات، ارائه محصولات، پیروی از قانون یا محافظت از حقوق آن لازم باشد. Ubuntu برخی از اطلاعات سخت افزاری و داده های مکانی را جمع آوری می کند. با این حال، همیشه می توانید مانع این کار شوید. به عنوان مثال، خدمات مکانی را می توان از طریق تنظیمات حریم خصوصی، همانطور که در زیر نشان داده شده است، غیرفعال کنید.
غیر فعال کردن داده های مکانی در اوبونتو

5- عملکرد سبک و سریع

Ubuntu سنگین و فشرده نیست، بلکه به راحتی بر روی سیستم هایی با سخت افزارهای متنوع (قوی و ضعیف) نیز کار می کند. رابط پیش فرض آن می تواند با کمتر از 1 گیگابایت رم اجرا شود. علاوه بر این، بسیاری از محیط های دسکتاپ Ubuntu حتی سبک تر هم هستند. به عنوان مثال، Ubuntu می تواند بر روی سیستم هایی با حداقل 512 مگابایت رم اجرا شود.

در مقایسه، هم ویندوز و هم macOS به منابع بسیار بیش تری نیاز دارند. macOS Big Sur و Windows 11 برای اجرا به حداقل 4 گیگابایت رم نیاز دارند. به این دلیل که این سیستم عامل ها دارای رابط های کاربری با منابع سنگین (UI) و ویژگی های پیشرفته دیگر هستند.

6- کاملا رایگان است

اوبونتو یک سیستم عامل متن باز رایگان است که می توانید آن را از وب سایت رسمی Ubuntu دانلود کنید. همچنین می توانید کد منبع آن را به دلخواه تغییر دهید. تا کنون، پروژه های متعددی بر اساس اوبونتو ساخته شده اند. 

در مقایسه با اوبونتو، macOS و Windows سیستم عامل های منبع بسته هستند. برای استفاده از ویندوز، باید یک کامپیوتر همراه با آن بخرید یا مجوز آن را خریداری کنید که از 139 دلار به ازای هر مجوز شروع می شود. در همین حال، سیستم عامل macOS به تنهایی قابل خرید نیست؛ بلکه از قبل بر روی دستگاه های مک نصب شده است.

جمع بندی

در حالی که توزیع های مختلفی برای لینوکس به صورت آنلاین وجود دارد، محبوب ترین آن ها اوبونتو است که یک سیستم عامل رایگان و منبع باز است.

شش دلیل محبوبیت اوبونتو به طور خلاصه در زیر آمده است:

  • کاربر پسند بودن – اوبونتو رابط کاربری ساده و آسانی دارد.
  • امنیت قوی – اوبونتو از AppArmor و تدابیر امنیتی پیشرفته برای جلوگیری از نفوذها استفاده می کند.
  • گزینه های نرم افزاری بیش تر – اوبونتو تعداد زیادی برنامه کاربردی دارد که می توانید آن ها را نصب کنید، که بسیاری از آن ها منحصراً برای سیستم عامل Ubuntu موجود هستند.
  • حفظ حریم خصوصی پیشرفته – اوبونتو سیاست حفظ حریم خصوصی داده ها را تضمین می کند و به کاربران اجازه می دهد تنظیمات حریم خصوصی را سفارشی کنند.
  • عملکرد سبک – رابط پیش فرض اوبونتو تنها از کمتر از 1 گیگابایت رم استفاده می کند. بنابراین، سیستم عامل بر روی دستگاه های پایین رده هم می تواند کار کند.
  • رایگان – اوبونتو یک توزیع رایگان لینوکس و کاملا منبع باز است.

اگر اسم لینوکس را شنیده باشید احتمالا نام توزیع لینوکس (Linux distributions) هم به گوشتان خورده است. برای استفاده از لینوکس بر روی رایانه یا سرور، ابتدا باید یک توزیع مناسب برای آن انتخاب کنید. برای اینکه کمی بیشتر با این مفهوم آشنا شوید بهتر است ابتدا توضیح کاملی در مورد توزیع های مختلف لینوکس به شما بدهیم.

توزیع لینوکس چیست؟

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

اما سیستم عامل لینوکس مثل ویندوز یا Mac OS X نیست و لینوکس در این زمینه متفاوت عمل می کند. سیستم عامل لینوکس توسط یک سازمان خاص تولید نمی شود بلکه سازمان ها و افراد مختلف در بخش های مختلف، بر روی آن کار می کنند و آن را توسعه می دهند.

این بخش ها شامل هسته لینوکس، ابزارهای پوسته GNU (رابط ترمینال و بسیاری از دستوراتی که استفاده می کنید)، سرور X (که یک دسکتاپ گرافیکی تولید می کند) و محیط دسکتاپ (که روی X اجرا می شود) است. خدمات سیستم، برنامه های گرافیکی، دستورات ترمینال و بسیاری از بخش های دیگر سیستم عامل لینوکس، مستقل از دیگری توسعه می یابند.

همه این ابزارها نرم افزارهای متن بازی (Open source) هستند که به صورت کد منبع توزیع شده اند و شما می توانید همه بخش های مختلف لینوکس را کامپایل (Compile) کنید.

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

توزیع های مختلف لینوکس این کار سخت را برای شما انجام می دهند. این توزیع ها همه کدها را از پروژه های منبع باز می گیرند و برای شما کامپایل می کنند و آن ها را در یک سیستم عامل واحد ترکیب می کنند، که می توانید آن را راه اندازی و نصب کنید.

وقتی می خواهید نرم افزار جدیدی را نصب کنید یا نسخه های جدید نرم افزار را با به روزرسانی های امنیتی مهم به روز کنید، توزیع لینوکس، آن ها را به صورت پیش کامپایل شده و بسته بندی شده ارائه می کند. نصب این بسته ها سریع و آسان است و شما را از انجام کارهای سخت نجات می دهد.

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

تفاوت توزیع های لینوکس چیست؟

چندین نوع توزیع مختلف لینوکس وجود دارد. بسیاری از آن ها فلسفه های کاری متفاوتی دارند؛ برخی مانند Fedora از اضافه کردن نرم افزارهای متن بسته (closed-source) جلوگیری می کنند، در حالی که برخی دیگر مانند توزیع Mint از نرم افزارهای متن بسته استفاده می کنند تا کار را برای کاربران آسان تر کنند. برخی از توزیع ها از package managers (مدیر بسته)، ابزارهای پیکربندی و نرم افزارهای دیگر استفاده می کنند و برخی از توزیع ها برای مدت طولانی است که دیگر پشتیبانی نمی شوند.

سایر توزیع ها از جمله Ubuntu LTS یا Red Hat Enterprise Linux، به گونه ای طراحی شده اند که برای سال ها با بروز رسانی های امنیتی و رفع اشکال های مداوم پشتیبانی می شوند. برخی از توزیع های لینوکس برای رایانه های رومیزی، برخی برای سرورهای لینوکس بدون رابط گرافیکی و برخی دیگر برای استفاده های خاص، مانند رایانه های سینمای خانگی (برای پخش فیلم، موزیک و عکس)، در نظر گرفته شده اند.

چه توزیعی را باید انتخاب کنم؟

توزیع های مختلف لینوکس برای اهداف مختلف مناسب هستند. اینکه کدام توزیع لینوکس را باید انتخاب کنید به کاری که با آن انجام می دهید و ترجیحات شخصی شما بستگی دارد. اگر کاربر دسکتاپ هستید، احتمالاً توزیع های ساده ای مانند اوبونتو (Ubuntu) یا مینت (Mint) برای شما مناسب تر است. برخی از افراد ممکن است Fedora، openSUSE یا Mageia (براساس Mandriva Linux) را ترجیح دهند.

توزیع های مختلف لینوکس

افرادی که به دنبال یک سیستم پایدارتر و آزمایش شده هستند ممکن است از Debian، CentOS (نسخه رایگان Red Hat Enterprise Linux) یا حتی Ubuntu LTS استفاده کنند.

هیچ توزیع مشخص و یکسانی برای همه وجود ندارد. توزیع های لینوکس ممکن است نتوانند همه نیازهای شما را بر طرف کنند؛ در این حالت می توانید با تغییر در کدهای توزیع مورد نظر، آن را بسته به نیازتان شخصی سازی کنید.

معرفی 10 توزیع لینوکس و کاربردشان

در ادامه به معرفی 10 توزیع لینوکس پرداخته ایم که با توضیح کاربرد هر کدام، می توانید توزیع مورد نظر خود را انتخاب کنید.

1- توزیع لینوکس Debian

Debian به عنوان مادر توزیع های محبوب لینوکس مانند دیپین (Deepin)، اوبونتو و مینت که عملکرد، ثبات و تجربه کاربری بی نظیری را ارائه می دهند، مشهور است. پروژه دبیان بیش از 59000 بسته نرم افزاری را ارائه می دهد و از طیف گسترده ای از رایانه ها پشتیبانی می کند که هر نسخه مجموعه وسیع تر و سازگارتری از معماری سیستم را در بر می گیرد. Debian سه شاخه توسعه یافته دارد که هر کدام به ترتیب Stable، Testing و Unstable نامگذاری می شوند.

نسخه پایدار (Stable): همانطور که از نام آن پیداست، از پشتیبانی امنیتی کاملی برخوردار است، اما متأسفانه با آخرین برنامه های نرم افزاری عرضه نمی شود. با این وجود، به دلیل پایداری و قابلیت اطمینان آن برای سرورهای تولیدی ایده آل است و همچنین برای کاربران دسکتاپی که امنیت شان مهم تر از به روز بودن نرم افزارهاستف گزینه مناسبی است. Debian Stable نسخه رایجی است که اکثر کاربران از آن استفاده می کنند.

نسخه آزمایشی (Debian Testing): آخرین نسخه های نرم افزاری را ارائه می کند که هنوز در نسخه پایدار پذیرفته نشده اند. مرحله Testing قبل از مرحله Stable قرار دارد. معمولاً نرم افزارهای موجود در این مرحله مشکلات فنی زیادی دارند. همچنین، گزینه های امنیتی در آن ها به سرعت به روزرسانی نمی شود.

توزیع ناپایدار (unstable distro): مرحله توسعه فعال دبیان است. این مرحله یک توزیع آزمایشی است و به عنوان یک پلتفرم عالی برای توسعه دهندگان عمل می کند. در این توزیع تا زمانی که به مرحله “تست” منتقل شوید، به طور فعال می توانید در کدها تغییر ایجاد کنید.

2- Gentoo

جنتو (Gentoo) توزیعی است که برای استفاده حرفه ای ساخته شده است که متخصصان در آن تصمیم می گیرند با چه بسته هایی از word go کار کنند. این توزیع، مناسب توسعه دهندگان، مدیران سیستم و شبکه می باشد. به این ترتیب، برای مبتدیان زیاد ایده آل نیست. جنتو برای کسانی پیشنهاد می شود که می خواهند درک عمیق تری از زیر و بم سیستم عامل لینوکس داشته باشند.

توزیع جنتو یک توزیع مناسب حرفه ای های لینوکس است

Gentoo با یک سیستم مدیریت پکیج معروف به نام portage عرضه می شود. توزیع های دیگری مانند Sabayon و Calculate Linux با جنتو سازگار بوده و مبتنی بر آن هستند. این توزیع بر پایه پایتون و بر اساس مجموعه پورت ها است. مجموعه های پورت، مجموعه  ای از پچ ها (Patches) و فایل های ایجاد شده توسط توزیع های مبتنی بر BSD مانند OpenBSD و NetBSD هستند.

3- توزیع لینوکس Ubuntu

اوبونتو (Ubuntu) که توسط Canonical ایجاد و نگهداری می شود، یکی از محبوب ترین توزیع های لینوکس است که افراد مبتدی، کاربران متوسط و حتی حرفه ای از آن در سراسر جهان استفاده می کنند. اوبونتو به طور خاص برای مبتدیان لینوکس یا کسانی که از مک و ویندوز در حال انتقال هستند طراحی شده است.

توزیع اوبونتو لینوکس

به طور پیش فرض Ubuntu با محیط دسکتاپ GNOME و برنامه هایی مانند Firefox، LibreOffice، برنامه های ویرایش تصویر مانند GIMP، پخش کننده موسیقی و ویدیو مانند Audacious و Rhythmbox عرضه می شود. Ubuntu اساس چندین توزیع دیگر لینوکس را تشکیل می دهد. برخی از توزیع های مبتنی بر اوبونتو 20.04 عبارتند از Lubuntu 20.04 LTS، Kubuntu 20.04 و Linux Mint 20.04 LTS (Ulyana).

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

4- Linux Mint

Linux Mint یک توزیع مبتنی بر Ubuntu است، که یکی از زیباترین و کاربر پسندترین توزیع ها برای کاربران می باشد. علیرغم اختلاف نظر پیرامون آخرین نسخه (Mint 20) که به طور پیش فرض پشتیبانی از snap را حذف کرده است، Mint همچنان یک توزیع لینوکس پایدار و قدرتمند است.

برای فعال کردن پشتیبانی snap، به سادگی دستورات زیر را اجرا کنید:

$ sudo rm /etc/apt/preferences.d/nosnap.pref
$ sudo apt update
$ sudo apt install snapd

اگر می خواهید یک دسکتاپ لینوکس سریع و پایدار برای انجام کارهای روزمره مانند گوش دادن به موسیقی، تماشای فیلم و حتی بازی داشته باشید، Mint بهترین توزیع برای شماست. نکته مهم بعدی اینکه Mint 20 تا سال 2025 پشتیبانی خواهد شد.

5- Red Hat Enterprise Linux

به اختصار RHEL گفته می شود و یک توزیع لینوکس است که برای اهداف سازمانی یا تجاری طراحی شده است. این توزیع یکی از جایگزین های منبع باز برای سایر سیستم های اختصاصی مانند مایکروسافت است. Red Hat با توجه به ثبات و گزینه های امنیتی، معمولاً یک انتخاب عالی برای محیط های سرور است.

شما می توانید به راحتی آن را روی سرورهای فیزیکی، محیط های مجازی مانند VMware، HyperV و همچنین در فضای ابری راه اندازی کنید. در جایی که کارایی، امنیت و ثبات در اولویت قرار دارند، RHEL توزیع ایده آلی برای انتخاب است.

توزیع RHEL لینوکس

6- CentOS

پروژه CentOS یک سیستم عامل رایگان است که هدف آن ارائه یک اکوسیستم منبع باز، قوی و قابل اعتماد است. بر اساس RHEL، CentOS یک جایگزین عالی برای Red Hat Enterprise Linux است زیرا دانلود و نصب آن رایگان است.

این توزیع به کاربران ثبات و قابلیت اطمینان RHEL را می دهد و در عین حال به آن ها امکان می دهد از به روز رسانی های امنیتی و ویژگی های رایگان لذت ببرند. CentOS 8 در میان علاقه مندان به لینوکس که می خواهند علاوه بر رایگان بودن از مزایای RHEL هم لذت ببرند، مورد پسند است.

7- Fedora

Fedora مدت زیادی است که به دلیل سادگی و برنامه های کاربردی که در اختیار تازه کاران قرار می دهد، به عنوان یکی از کاربر پسندترین توزیع ها شهرت دارد.

یک سیستم عامل قدرتمند و انعطاف پذیر، که برای رایانه های رومیزی و لپ تاپ ها، سرورها و حتی برای اینترنت اشیا طراحی شده است.

فدورا، درست مانند CentOS، بر پایه Red Hat است و در واقع یک محیط آزمایشی برای Red Hat قبل از انتقال به مرحله Enterprise است. به این ترتیب، معمولاً برای توسعه و یادگیری استفاده می شود و برای توسعه دهندگان و دانش آموزان مفید است.

فدورا از مدیر بسته (پکیج منیجر) DNF به عنوان مدیر بسته پیش فرض خود استفاده می کند و جدیدترین و بهترین بسته های نرم افزاری RPM را ارائه می دهد.

8- Kali Linux

Kali Linux یک توزیع لینوکس مبتنی بر Debian است که توسط امنیت تهاجمی توسعه یافته و نگهداری می شود که برای آزمایش نفوذ و انجام تحقیقات قانونی دیجیتال طراحی شده است. این ابزار با ابزارهای خارج از پکیج برای تست نفوذ مانند Nmap، Metasploit Framework، Maltego و Aircrack-ng عرضه می شود.

Kali Linux برای کارشناسان امنیت سایبری و کاربرانی است که می خواهند در تست نفوذ شرکت کنند مناسب است. در واقع، کالی گواهینامه های استاندارد صنعتی مانند تست نفوذ با Kali و Kali Linux Certified Professional را ارائه می دهد. Kali همچنین از مدیر بسته APT استفاده می کند.

9- Arch Linux

Arch Linux یک توزیع لینوکس سبک و انعطاف  پذیر است که برای کاربران پیشرفته یا کارشناسان لینوکس طراحی شده است که به نصب و سرویس  های در حال اجرا اهمیت زیادی می  دهند. این توریع به کاربران آزادی عمل می دهد تا سیستم را به دلخواه خود سفارشی یا پیکربندی کنند. به طور خلاصه، Arch برای کاربرانی طراحی شده است که واقعاً از جزئیات کار با لینوکس مطلع هستند.

Arch به طور مداوم به آخرین نسخه به روز می شود. همچنین از Pacman به عنوان مدیر بسته پیش فرض و از AUR (Arch User Repository) که انجمنی برای نصب بسته های نرم افزاری است، استفاده می کند.

10- OpenSUSE

پروژه OpenSUSE یک پروژه جامع و مدرن است که هم برای کاربران دسکتاپ و هم توسعه سازمانی و نیز برای اهداف آزمایشی مناسب است. این توزیع گزینه ای عالی برای توسعه دهنگان و مدیران سیستم است.

OpenSUSE برای مدیریت بسته های نرم افزاری به مدیر بسته Yast متکی است.

نتیجه گیری

در این مقاله به معرفی ده مورد از توزیع های لینوکس و کاربرد آن ها پرداختیم. تعداد توزیع ها بسیار زیاد است. در حال حاضر این تعداد به 600 توزیع آماده و 500 توزیع در حال توسعه می رسد. با این حال تمرکز ما بیشتر بر روی توزیع های پرکاربرد برای کاربران لینوکس بوده است.

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

در این مقاله در مورد یکی از خطاهای اصلی کرنل یعنی کرنل پنیک (Kernel Panic) خواهید خواند. حتی عبارت کرنل پنیک ممکن است باعث ایجاد استرس شود اما اگر دانش کافی در مورد آن داشته باشید می‌توانید آرامش خود را حفظ کنید. هر مدیر سیستم یا سیس ادمین (SysAdmin) حداقل چند بار با این موقعیت مواجه شده است، اما نصب مجدد سیستم عامل هیچگاه نباید گزینه اول شما برای حل مشکل کرنل پنیک باشد.

کرنل پنیک چیست؟

کرنل پنیک یکی از مشکلات متعددی است که ممکن است هنگام بوت سرور لینوکس اتفاق بیفتد. به زبان ساده، کرنل پنیک زمانی اتفاق می‌افتد که کرنل بارگذاری نشده و سرور بوت نشود. در پروسه بوت سرور، کرنل به صورت مستقیم بارگذاری نمی‌شود، ابتدا initramfs در حافظه رم لود شده و به کرنل vmlinuz اشاره می‌کند، سپس سیستم عامل بوت می‌شود. اگر initramfs به هر دلیلی (مثل آپدیت یا نصب پکیج) پاک یا خراب شود، با کرنل پنیک مواجه می‌شویم.

کرنل پنیک

هنگام پروسه بوت لینوکس، ابتدا گراب بعد از mbr لود می‌شود. سپس کرنل باید در حافظه رم بارگذاری شود تا سیستم عامل استارت شود، اما کرنل روی فضای ذخیره سازی (هارد) قرار دارد (/boot/vmlinuz) که هنوز مونت نشده است. قبل از مونت شدن هیچ فایلی قابلیت اجرا ندارد، حتی کرنل. برای حل این مشکل ابتدا initramfs/initrd در رم بارگذاری شده و پارتیشن /boot را بصورت فقط خواندنی () مونت می‌کند. در مرحله بعد دیسک در پارتیشن / مونت شده و پروسه ادامه پیدا می‌کند.

در این پروسه فایل‌های کرنل و init file system که در آدرس زیر قابل مشاهده هستند از اهمیت بالایی برخوردارند.

# ls -lrth /boot/

کرنل پنیک

چرا کرنل پنیک انفاق میفتند؟

در مواقع زیر کرنل پنیک خواهیم داشت:

  1. اگر فایل initramfs خراب شده باشد.
  2. اگر فایل initramfs به درستی برای کرنل ساخته نشده باشد (هر کرنل، فایل initramfs مربوط به خود را دارد).
  3. اگر کرنل جدید پشیبانی نشود یا به درستی نصب نشده باشد.
  4. اگر آپدیت‌های اخیر باگ داشته باشد.
  5. اگر ماژول جدید نصب شده باشد اما ایمیج initrd با آخرین ماژول نصب شده ساخته نشده باشد.

عیب یابی کرنل پنیک

حالا که با فایل مربوط به کرنل پنیک آشنا شدید، دیگر هنگام دیدن این ارور پنیک نمی‌زنید. کرنل همیشگی خود را انتخاب کنید، در صورت وجود خطا و کرنل پنیک، تصویر زیر را مشاهده خواهید کرد:

عیب یابی کرنل پنیک

برای حل مشکل، مجددا سیستم را ریبوت کرده و این بار در لیست گراب گزینه ایمیج rescue را انتخاب کنید. سیستم عامل شما بوت می‌شود.

عیب یابی کرنل پنیک

سپس به فولدر /boot بروید. همینطور که مشاهده می‌کنید فایل initramfs فقط برای rescue وجود دارد و برای کرنل مورد نظر شما وجود ندارد. برای ساخت این فایل برای کرنل، ابتدا با دستور زیر از نسخه کرنل خود مطمئن شوید.

#uname -r

سپس با دستور زیر فایل initramfs جدید را برای کرنل خود بسازید.

#dracut -f <initrd-image> <kernal-version>
عیب یابی کرنل پنیک

در صورتی که از قبل فایل initramfs برای کرنل شما وجود داشته باشد، ممکن است هنگام ساخت آن با خطای زیر روبرو شوید:

عیب یابی کرنل پنیک

در این صورت با دستور زیر فایل مربوطه را ایجاد کنید:

#mkinitrd --force <initrd-Image> <Kernel-Version>

کرنل پنیک سرور هنگام کار

گرچه کرنل پنیک اکثرا هنگام بوت سرور (بعد از آپدیت و اعمال تغییرات) رخ می‌دهد، امکان کرنل پنیک حین کار سرور هم وجود دارد. تنظیمات پیشفرض لینوکس هنگام کرنل پنیک، عدم ریبوت سرور و انتظار برای تکنسین فنی سرور است تا با مراجعه به سرور خروجی ترمینال را بررسی کرده و اقدامات لازم را انجام دهد.

برای یک سرور عملیاتی (production) انتظار می‌رود تا در صورت کرنل پنیک، سیستم به صورت خودکار ریبوت شود؛ با امید اینکه مجددا بدون ارور بوت شده و در کمترین زمان به حالت عملیاتی برگردد. اما برای یک سرور غیرعملیاتی یا staging شاید رغبتی به ریبوت نباشد، بلکه بررسی خروجی ترمینال کمکی به فهمیدن علت کرنل پنیک کمک کند.

رفتار سرور هنگام کرنل پنیک با مقدار متغیر kernel.panic در /etc/sysctl.conf کنترل می‌شود. مقدار این متغیر را می‌توانید با دستور زیر مشاهده کنید. این مقدار به صورت پیش‌فرض صفر است که به معنی عدم راه اندازی مجدد سرور هنگام کرنل پنیک است.

# cat /proc/sys/kernel/panic

0

برای ریبوت سرور هنگام کرنل پنیک، عددی غیر از صفر انتخاب کنید. این مقدار بیانگر زمانی (ثانیه) است که بعد از آن سرور ریست خواهد شد.

# echo "30" > /proc/sys/kernel/panic
# cat /proc/sys/kernel/panic
30

اگر نیاز به دامپ کرش کرنل (Kernel Crash Dump) دارید، مقدار این متغیر را به اندازه کافی زیاد انتخاب کنید تا حافظه شما بطور کامل دامپ شود. ۳۰ ثانیه برای سرورهایی با حافظه نسبتا متوسط مناسب است.

تغییرات مذکور موقت بوده و بعد از ریبوت سرور به مقدار پیش فرض برمی‌گردد. برای ذخیره تغییرات بصورت دائمی، مقدار را در فایل sysctl.conf مشخص کنید.

# echo "kernel.panic = \"30\""  >> /etc/sysctl.conf

نتیجه گیری

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

Isof

این دستور لیست فایل‌های مرتبط با برنامه شما را باز می‌کند. بر روی برخی از ماشین‌های لینوکس بایستی بایستی Isof‌ را با استفاده پکیج آن نصب کنید. در محیط لینوکس، تقریبا تمام تعاملات با سیستم به صورت فایل انجام می‌شود. در نتیجه اگر برنامه شما در یک فایل نوشته شود، دستور Isof آن تعامل را به عنوان یک فایل نشان می‌دهد. همچنین مانند دستور netstat می‌توانید از این دستور برای چک کردن پرت‌هایی که در حال listen‌ هستند استفاده کنید. برای مثال اگر می‌خواهید چک کنید که آیا پرت ۸۰ در حال استفاده است یا حیر می‌توانید از این دستور برای بررسی آن استفاده کنید. در زیر باهم یکی از موارد استفاده این دستور را می‌بینیم.

df

می‌توانید از دستور df (نمایانگر فضای آزاد دیسک) برای عیب‌یابی مشکلات مربوط به فضای دیسک استفاده کنید. زمانی که برنامه خود را درون یک کانتینر بارگذاری می‌کنید ممکن است پیغام خطا مبنی بر عدم وجود فضای کافی در کانتینر دریافت کنید. از آن‌جا که فضای دیسک باید توسط ادمین سیستم مدیریت و بهینه شود، می‌توانید از دستور df استفاده کرده تا فضای موجود در دایرکتوری را مشخص کرده و متوجه شوید که آیا واقع فضای کافی در اختیار دارید یا خیر.

آپشن -h اطلاعاتی را چاپ می‌کند که اصطلاحا در فرمت human-readable هستند. به طور پیش‌فرض، همان‌طور که می‌بینید df همه نتایج تحت دایرکتوری روت را لیست می‌کند؛ اما می‌توانید نتایج را با ارائه دایرکتوری مد نظر خودتان محدود کنید. مثل: (df -h/home)

du

برای بازیابی اطلاعات دقیق تر در مورد این که کدام فایل‌ها از فضای دیسک در یک دایرکتوری استفاده می‌کنند می‌توانید از این فرمان استفاده کنید. اگر می‌خواهید متوجه شوید که کدام یک از لاگ‌ها بیشترین فضا را در دایرکتوری /var/log اشغال کرده است می‌توانید از دستور du به صورت زیر استفاده کنید.

id

برای چک کردن این که کدام کاربر، کدام برنامه را اجرا کرده است می‌توانید از دستور id‌ استفاده کنید تا هویت کاربر را برگرداند. مثال زیر از vagrant برای تست و ایزوله کردن محیط توسعه استفاده می‌کند. بعد از این که وارد vagrant می‌شوید اگر بخواهید سرور HTTP Apache را نصب کنید، سیستم بیان می‌کند که نمی‌توانید فرمان را به صورت روت اجرا کنید. برای چک کردن یوزر خود بایستی از دستور فوق استفاده کنید و توجه داشته باشید که بایستی به صورت یوزر vagrant و در گروه vagrant باشید.

$ dnf -y install httpd
Loaded plugins: fastestmirror
You need to be root to perform this command.
$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

chmod

وقتی که باینری اپلیکیشن خود را برای اولین بار اجرا می‌کنید ممکن است با پیام permission denied مواجه شوید. همان طور که در پیام زیر در مورد ls می‌بینید می‌توانید پرمیشن برنامه خود را چک کنید. 

$ ls -l
total 4
-rw-rw-r--. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

این موضوع نشان‌دهنده این است که شما حق اجرا برای اجرای باینری را ندارید. chmod می‌تواند پرمیشن‌ها را به گونه‌ای تغییر دهد که یوزر قادر باشد باینری را اجرا کند. 

$ chmod +x test.sh
[[email protected] ~]$ ls -l
total 4
-rwxrwxr-x. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

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

dig/nslookup

نیم سرور هر دامین به resolve کردن هر url به تعدادی از سرورهای اپلیکیشن کمک می‌کند. هرچند ممکن است با یک url ست نشده (resolve) برخورد کنید که برای کانکشن برنامه شما مشکل ایجاد کند. برای مثال تصور کنید که میخواهید از هاست برنامه خود از طریق url mydatabase دسترسی پیدا کنید و با خطای cannot resolve مواجه می‌شوید. در این صورت برای عیب یابی بایستی از دستور dig یا nslookup‌ استفاده کنید تا ببینید که مشکل چیست.
 

$ nslookup mydatabase
Server:   10.0.2.3
Address:  10.0.2.3#53
** server can't find mydatabase: NXDOMAIN

 در بالا می‌بینیم که استفاده از nslookup نشان میدهد که mydatabase‌ قادر به resolve شدن نیست. استفاده از دستور dig‌ نیز پیامی مشابه را به همراه دارد. 

$ dig mydatabase
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> mydatabase
;; global options: +cmd
;; connection timed out; no servers could be reached

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

firewall-cmd

به طور سنتی، فایروال‌ها در لینوکس با استفاده از فرمان iptables پیکربندی شده بودند. این در حالی است که اکنون تا حد زیادی با nftables جایگزین شده اند. این دستور کمک می‌کند که یک سری قانون تنظیم کنید که کنترل ترافیک شبکه سیستم شما را تنظیم کند. این قوانین می‌توانند به زون‌های مختلف تقسیم شوند تا شما بتوانید به راحتی از یک سری قوانین به یک سری قوانین دیگر مهاجرت کنید. استفاده از این دستور و آپشن‌های مربوط به آن به شما کمک می‌کنند که یک جمله human-readable بسازید. برای مثال برای این که ببینید در حال حاضر در کدام زون هستید: 
 

 $ sudo firewall-cmd --get-active-zones``
corp
  interfaces: ens0
dmz
  interfaces: ens1

در این مثال، کامپیوتر شما دو دیوایس شبکه دارد که یکی از آن‌ها به زون corp تخصیص یافته و دیگری به dmz. برای این که ببینید هر زون چه مجوزهایی میدهد میتوانید مانند زیر عمل کنید: 

$ sudo firewall-cmd --zone corp --list-all
corp
  target: default
  interfaces: ens0
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
[...]

اضافه کردن سرویس هم به آسانی دستور زیر است: 

$ sudo firewall-cmd --add-service http --permanent
$ sudo firewall-cmd --reload 

Firewall-cmd‌ طوری طراحی شده که آسان باشد و مجموعه وسیعی از سرویس های از قبل طراحی شده را در بگیرد.  

 sestatus

شما معمولا SELinux را در یک میزبان کاربردی که توسط یک شرکت مدیریت می‌شود، پیدا می‌کنید. SELinux از دسترسی با حداقل امتیاز بر روی یک هاست پشتیبانی می‌کند که این موضوع از اجرا شدن فایل‌های احتمالی آلوده بر روی سیستم جلوگیری خواهد کرد. در برخی شرایط یک برنامه ممکن است نیاز دسترسی به یک فایل ويژه را داشته باشد اما ممکن است با خطا مواجه شود. برای این که چک کنید که آیا SELinux برنامه شما را بلاک کرده است یا خیر، میتوانید از tail و grep استفاده کنید و دنبال یک پیام با عنوان denied در پوشه /var/log/audit بگردید. 
در غیر این صورت میتوانید با استفاده از sestatus استفاده کنید و ببینید که آیا در قسمت مورد نظر SELinux فعال است یا خیر. 

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

 history

وقتی که همه فرمان‌های لازم را برای آزمایش و عیب‌یابی بررسی می‌کنید ممکن است موارد مفید را از قلم انداخته باشید هر shell یک سری دستور تحت عنوان history command دارد که تاریخچه دستوراتی که از ابتدای هر session اجرا کرده اید را نشان می‌دهد. می‌توانید از history استفاده کرده تا دستوراتی که در طول عیب یابی بررسی کرده اید را ببینید. 

$ history
    1  clear
    2  df -h
    3  du

حال اگر بخواهیم یکی از دستورات گذشته را اجرا کنیم اما نخواهیم دوباره آن را تایپ کنیم چه؟ در اینجا از علامت ! قبل از شماره دستور استفاده می‌کنیم تا دوباره اجرا شود. 

 top

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

اگر به دنبال افزایش اطلاعات خود به عنوان یک ادمین سرورهای لینوکس هستید، این ۲۰ دستور لینوکس به کارتان خواهد آمد. در این بخش از این مقاله ابتدا ده مورد از این دستورها را با هم بررسی می‌کنیم.
هم‌اکنون در دنیایی که مملو از ابزارهای جدید و محیط‌های نرم‌افزاری مختلف است، برای هر مهندس نرم‌افزار نیاز به یادگیری فرمان‌های اصلی که در حیطه سرور لینوکس استفاده می‌شود امری اساسی است. یک سری دستورها و بسته‌های خاص می‌توانند به کمک توسعه دهندگان آمده و در بحث عیب‌یابی و بهینه سازی برنامه‌ها کمک بزرگی باشند. اگر یک توسعه‌دهنده تازه وارد به دنیای لینوکس هستید و یا می‌خواهید خودتان برنامه‌های‌تان را مدیریت کنید، ده دستورالعمل زیر می‌توانند به کمک شما بیایند. 
این دستورها هم‌چنین می‌توانند در مواردی نظیر توصیف عیب‌یابی سرور به شما کمک کنند؛ چرا که برای مثال ممکن است یک برنامه به صورت محلی کار کند اما به صورت ریموت خیر. از این فرمان‌های می‌توانید در محیط لینوکس، ماشین‌های مجازی و همین‌طور container‌ها استفاده کنید. 
 

Curl 


دستور کرل انتقال URL را انجام می‌دهد. از این دستور برای تست نقطه پایانی یک برنامه و وصل بودن آن استفاده می‌شود. دستور کرل در جهت آزمایش این موضوع که آیا برنامه شما می‌تواند با سرویس دیگری (مانند دیتابیس) ارتباط بگیرد و یا چک کردن این که آیا سرویس شما سالم است یا خیر مورد استفاده قرار می‌گیرد.
به عنوان مثال، فرض کنید که برنامه شما یک خطای HTTP500‌ ایجاد می‌کند که نشان‌دهنده این است که نمی‌تواند به پایگاه داده مونگودی‌بی شما دسترسی داشته باشد: 

$ curl -I -s myapplication:5000
HTTP/1.0 500 INTERNAL SERVER ERROR

آپشن -l اطلاعات هدر را نشان داده و آپشن -s response body‌ را ساکت می‌کند. اندپوینت دیتابیس را از دسکتاپ محلی‌تان چک کنید: 

$ curl -I -s database:27017
HTTP/1.0 200 OK

پس مشکل چه می‌تواند باشد؟ در این مرحله چک می‌کنیم که آیا برنامه‌مان به سایر نقاط پایانی غیر از دیتابیس دسترسی دارد یا خیر.

$ curl -I -s https://opensource.com
HTTP/1.1 200 OK

به نظر می‌رسد که مشکلی در این‌جا وجود ندارد؛ حال سعی می‌کنیم از میزبان برنامه به پایگاه داده دسترسی پیدا کنیم: 

$ curl database:27017
curl: (6) Couldn't resolve host 'database'

خطای بالا نشان می‌دهد که برنامه شما نمی‌تواند به پایگاه داده وصل شود چرا که نشانی اینترنتی پایگاه داده در دسترس نیست و یا اینکه میزبان nameserver ندارد که بتواند مشکل را حل کند. 

 python -m json.tool/jq

بعد از اینکه مشکل کرل را حل می‌کنید، ممکن است خواندن خروجی API دشوار باشد. برخی اوقات ممکن است بخواهید خروجی JSON چاپ کنید تا یک ورودی خاص را پیدا کنید. پایتون در این‌جا یک کتابخانه پیش‌ساخته دارد که به کمک‌تان خواهد آمد. می‌توانید از ابزار python -m json.tool استفاده کنید. برای استفاده از ماژول JSON پایتون خروجی یک فایل JSON را به کمک فرمان python -m json.tool، پایپ کنید. 
 

$ cat test.json
{"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}

برای استفاده از از کتاب‌خانه پایتون، خروجی را به ماژول -m پایپ کنید. 

$ cat test.json | python -m json.tool
{
    "properties": {
        "age": {
            "description": "Age in years",
            "minimum": 0,
            "type": "integer"
        },
        "firstName": {
            "type": "string"
        },
        "lastName": {
            "type": "string"
        }
    },
    "required": [
        "firstName",
        "lastName"
    ],
    "title": "Person",
    "type": "object"
}

برای این که از ویژگی‌های بیشتری در پارس کردن JSON بهره ببرید می‌توانید jq نصب کنید. jq گزینه‌هایی را برای استخراج مقادیر ویژه از ورودی JSON فراهم می‌کند. 

$ cat test.json | jq
{
  "title": "Person",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "age": {
      "description": "Age in years",
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "firstName",
    "lastName"
  ]
}

LS


دستور ls لیست فایل‌ها در یک دایرکتوری را برای‌تان نمایش می‌دهد. ادمین‌های دیتابیس و سرور لینوکس معمولا به مراتب از این دستور استفاده می‌کنند. این دستور در کنار این که به شما کمک می‌کند تا فایل‌های‌تان را پیدا کنید، به شما کمک می‌کند تا دسترسی‌های خود را نیز مرور کنید. 
در مثال پایین می‌بینید که نمی‌توانید myapp‌ را اجرا کنید و این به خاطر یک مشکل دسترسی است. وقتی با استفاده از دستور ls -l‌ دسترسی ها را بررسی می‌کنید متوجه خواهید شد که از یک متغیر “x” استفاده نمی‌شود و فقط دسترسی read‌ و write وجود دارد. 

$ ./myapp
bash: ./myapp: Permission denied
$ ls -l myapp
-rw-r--r--. 1 root root 33 Jul 21 18:36 myapp

tail


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

می‌توانید از tail -f‌ استفاده کنید تا لاگ‌های آپاچی را دنبال کرده و درخواست‌های‌تان را به صورت real-time ببنید. 
-f نشان‌دهنده ویژگی follow است که فایل‌های لاگ را در حالی که نوشته می‌شوند به صورت هم‌زمان نشان می‌دهد. اما اگر نمی‌خواهید به صورت  real-time لاگ را دنبال کنید، می‌توانید از tail و آپشن -n استفاده کنید تا ۱۰۰ خط آخر را ببینید. 
 

$ tail -n 100 /var/log/httpd/access_log

 cat


دستور کت فایل‌ها را به هم پیوست داده و پرینت می‌کند. شما می‌توانید از این دستور برای چک کردن محتوای پیش‌نیازهای هر فایل استفاده کنید و یا ورژن اپلیکیشنی که در حال حاضر در اختیار دارید را چک کنید. 

$ cat requirements.txt
flask
flask_pymongo

 grep


دستور گرپ وظیفه جستجو بین الگوهای مختلف را در اختیار دارد. اگر به دنبال یک الگوی خاص در خروجی یک دستور دیگر هستید می‌توانید از گرپ استفاده کنید. از این دستور برای جستجو بین فایل‌های لاگ، پردازش‌های خاص و … استفاده کنید. 

$ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start
01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms

 ps


دستور ps بخشی از پکیج کاربردی procps-ng ست که از دستورهای مختلفی برای جستجو بین آیدی پروسه‌ها و وضعیت یک پردازش پشتیبانی می‌کند. از این دستور برای تعیین کردن وضعیت یک برنامه در حال اجرا و یا تایید کردن یک پردازش استفاده کنید. برای مثال اگر می‌خواهید وب‌سرور تامکت در حال اجرای یک سرور را چک کنید، می‌توانید از این دستور و آپشن‌هایی که در اختیارتان می‌گذارد برای نگهداری آیدی پروسه تام‌کت استفاده کنید. 

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  2 18:55 ?        00:00:02 /docker-java-home/jre/bi
root        59     0  0 18:55 pts/0    00:00:00 /bin/sh
root        75    59  0 18:57 pts/0    00:00:00 ps -ef

برای در اختیار داشتن امکانات بیشتر، می‌توانید دستور ps و گرپ را باهم دیگر پایپ کنید.

$ ps -ef | grep tomcat
root         1     0  1 18:55 ?        00:00:02 /docker-java-home/jre/bi

env


دستور بالا به شما این امکان را می‌دهد که متغیرهای مختلف را پرینت کرده و یا تنظیم کنید. در طول عیب‌یابی ممکن است چک کردن متغیرهای مختلف به شما کمک کند تا مشکل برنامه‌تان را پیدا کنید. در مثال پایین این دستور برای چک کردن متغیرهای یک محیط (هاست برنامه) استفاده شده است. 

$ env
PYTHON_PIP_VERSION=9.0.1
HOME=/root
DB_NAME=test
PATH=/usr/local/bin:/usr/local/sbin
LANG=C.UTF-8
PYTHON_VERSION=3.4.6
PWD=/
DB_URI=mongodb://database:27017/test

 netstat

دستور نت‌استت، وضعیت شبکه را نشان می‌دهد. این دستور پرت‌های یک شبکه که در حال استفاده هستند و کانکشن‌های آن‌ها را نشان می‌دهد. هرچند که دستور netstat به طور پیش فرض بر روی لینوکس وجود نداشته و اگر بخواهید بایستی آن را نصب کنید. هم‌چنین می‌توانید با استفاده از پکیج net-tools‌ از آن استفاده کنید. 
به عنوان یک توسعه دهنده که به طور محلی (لوکال) کار می‌کند ممکن است خطایی دریافت کنید که یک پرت یا آدرس در حال استفاده است. استفاده از netstat در تصویر پایین نشان می‌دهد که پرت ۸۰ توسط سرور آپاچی در حال استفاده است. 

IP


اگر آدرس آی‌پی بر روی سرور لینوکس شما کار نمی‌کند بایستی با استفاده از iproute2 آن را نصب کنید. استفاده از آدرس آی‌پی برای تایید آدرس Ip هاست استفاده می‌شود؛ برای مثال زمانی که کانتینر شما به شبکه وصل است، آدرس آی‌پی نشان می‌دهد که کدام اینترفیس به کدام شبکه متصل است. 
یک تست ساده در این زمینه این است که از دستور ip address استفاده کنید تا آدرس آی‌پی هاست را پیدا کنید. مثال پایین نشانگر این موضوع است. 

$ ip address show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether d4:3b:04:9e:b2:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.3/27 brd 10.1.1.31 scope global dynamic noprefixroute eth0
       valid_lft 52072sec preferred_lft 52072sec