تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

    SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)


    ۱۸ دی ۱۴۰۳

    یکی از ابزارهای ضروری یک مدیر سیستم، SSH است. SSH یا Secure Shell (به فارسی: پوسته امن)، پروتکلی است که برای ورود امن به سیستم‌های از راه دور (سرورهای مجازی ریموت)، استفاده می‌شود. این روش، رایج‌ترین راه برای دسترسی به سرورهای لینوکسِ ریموت، است.

    در ادامه، بخوانید:

    • آشنایی با Syntax پایه
    • SSH چگونه کار می‌کند؟
    • نحوه پیکربندی SSH
    • نحوه دسترسی به SSH با Keyها
    • گزینه‌های اتصال به سرورمجازی
    • نتیجه‌گیری

    آشنایی با Syntax پایه

    برای اتصال به یک سرور مجازی از راه دور با استفاده از SSH، از دستور ssh استفاده می‌کنیم. اگر که کاربر ویندوز هستید؛ باید OpenSSH را نصب کنید تا بتوانید از طریق ترمینال با دستور ssh کار کنید. اگر که کار در PowerShell را ترجیح می‌دهید؛ طبق مستندات مایکروسافت عمل کنید تا OpenSSH را به PowerShell اضافه کنید. همچنین، اگر که می‌خواهید یک محیط کامل Linux در دسترس داشته باشید؛ می‌توانید WSL (زیرسیستم ویندوز برای Linux) را راه‌اندازی کنید که به صورت پیش‌فرض، شامل ssh خواهد بود. به عنوان گزینه‌ای سبک‌تر حتی، می‌توانید Git را نصب کنید که یک ترمینال bash ارائه می‌دهد و شامل دستور ssh است. هر کدام از این گزینه‌ها پشتیبانی خوبی دارند و انتخاب آن‌ها، وابسته به تصمیم شما است.

    اگر از Mac یا Linux استفاده می‌کنید؛ دستور ssh به صورت پیش‌فرض در ترمینال شما، وجود دارد.

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

    ssh remote_host

    در مثال فوق، remote_host می‌توانید آدرس IP و یا نام دامنه‌ای باشد که قصد دارید به آن متصل شوید. این دستور فرض می‌کند که نام کاربری شما در سرور مجازی با نام کاربری شما در سیستم عامل localتان، یکسان است؛ در صورتی که نام کاربری شما در سرور مجازی متفاوت است، می‌توانید با استفاده از Syntax زیر، آن را مشخص کنید:

    ssh remote_username@remote_host

    در دستور فوق، بایستی به جای عبارات remote_host و remote_username، نام دامنه و نام کاربری سرور مجازی خود را، وارد کنید.

    پس از اتصال به سرور، ممکن است از شما خواسته شود تا با ارائه یک رمز عبور، هویت خود را تایید کنید؛ در ادامه، نحوه تولید کلیدها برای ستفاده به جای رمز عبور را بررسی خواهیم کرد. برای خروج از ssh ریموت و بازگشت به shell محلی (local)، می‌توانید از دستور زیر استفاده کنید:

    exit

    همچنین بخوانید: سرور ابری چیست؟

    SSH چگونه کار می‌کند؟

    SSH با اتصال یک برنامه کلاینت به یک سرور ssh، که sshd نامیده می‌شود، کار می‌کند. در بخش قبلی، ssh یک برنامه کلاینت بود و فرض کردیم سرور sshای که روی remote_host بود؛ از قبل در حال اجرا است.

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

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

    sudo systemctl start ssh

    دستور فوق یک sshd سرور برای شما راه‌اندازی می‌کند که می‌توانید با دسترسی ریموت، وارد آن شوید.

    نحوه پیکربندی SSH

    وقتی تنظیمات SSH را تغییر می‌دهید؛ در واقع در حال تغییر تنظیمات سرور sshd خود هستید. در Ubuntu، فایل پیکربندی اصلی sshd در مسیر زیر قرار دارد:

    /etc/ssh/sshd_config

    قبل از ویرایش این فایل، بهتر است که یک فایل پشتیبان از آن تهیه کنید:

    sudo cp /etc/ssh/sshd_config{,.bak}

    اکنون، کافیست تا فایل پیکربندی را با استفاده از nano یا ویرایشگر متن موردعلاقه‌تان، باز کنید:

    sudo nano /etc/ssh/sshd_config

    شاید بهتر باشد که اکثر گزینه‌های موجود در این فایل را بدون تغییر باقی بگذارید؛ با این حال، چند گزینه وجود دارد که ممکن است بخواهید آن‌ها را بررسی کنید:

    Port 22

    دستور فوق، مشخص می‌کند که سرور sshd روی کدام پورت برای اتصالات گوش دهد. به‌طور پیش‌فرض، این مقدار 22 است. احتمالاً بهتر است این گزینه را بدون تغییر باقی بگذارید، مگر اینکه دلایل خاصی برای تغییر آن داشته باشید. اگر قصد دارید که پورت خود را تغییر دهید، در ادامه این مقاله، نحوه اتصال به پورت جدید نیز به شما آموزش داده می‌شود.

    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key

    دستور HostKey مشخص می‌کند که global host keyها در کجا قرار گرفته‌اند. در ادامه، به تعریف host key پرداخته خواهد شد.

    SyslogFacility AUTH
    LogLevel INFO

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

    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes

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

    پارامتر LoginGraceTime مشخص می‌کند که تا چند ثانیه اتصال را بدون ورود موفق، نگه دارد. می‌تواند ایده خوبی باشد که این زمان را کمی بیشتر از زمانی که معمولاً برای ورود نیاز دارید تنظیم کنید.

    PermitRootLogin تعیین می‌کند که آیا کاربر root، مجاز به ورود است یا خیر. در بیشتر موارد، زمانی که حساب کاربری ایجاد کرده‌اید و این حساب کاربری، دسترسی بالایی دارد (از طریق su یا sudo) و می‌تواند از طریق SSH وارد شود تا خطر دسترسی افراد به root سرور مجازی‌تان کاهش یابد، این مقدار باید به no تغییر کند.

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

    X11Forwarding yes
    X11DisplayOffset 10

    پارامترهای فوق، قابلیتی تحت عنوان X11 Forwarding را پیکربندی می‌کنند. این ویژگی به شما این امکان را می‌دهد که در سیستم local خود، رابط گرافیکی کاربری (GUI) سرور مجازی ریموت را مشاهده کنید. این ویژگی، باید فعال باشد تا هنگام اتصال به کلاینت SSH با استفاده از فلگ X-، به کار برود.

    پس از اعمال تغییرات مدنظرتان، فایل پیکربندی را ذخیره کرده و ببندید؛ به عنوان مثال، اگر که از nano استفاده می‌کنید. کلیدهای ترکیبی CTRL + X را فشار دهید. سپس وقتی از شما خواسته شد، Y را بزنید و سپس Enter را بزنید.

    در صورتی که هرگونه تنظیماتی را در /etc/ssh/sshd_config تغییر داده‌اید، مطمئن شوید که سرور sshd خود را برای اعمال تغییرات، با اجرای دستور زیر، مجدداً بارگذاری کنید:

    sudo systemctl reload ssh

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

    نحوه دسترسی به SSH با Keyها

    توانایی login به یک سرور مجازی ریموت، از طریق رمزعبور، مفید است؛ اما تنظیم احراز هویت مبتنی بر key، سریع‌تر و امن‌تر است

    احراز هویت مبتنی بر کلید (Key-Based) چگونه کار می‌کند؟

    احراز هویت key-based با ایجاد یک جفت key کار می‌کند: یک کلید خصوصی (private key) و یک کلید عمومی (public key). کلید خصوصی روی دستگاه کلاینت قرار دارد و ایمن و مخفی نگه داشته می‌شود. کلید عمومی را می‌توانید روی هر سروری که می‌خواهید به آن دسترسی پیدا کنید، قرار دهید.

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

    نحوه ایجاد SSH Keys

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

    ssh-keygen -t rsa

    پس از اجرای دستور فوق، ممکن است از شما خواسته شود که برای خودِ فایل‌های کلید نیز، یک رمز عبور تعیین کنید، اما این عمل، نسبتاً نادر است و باید از طریق درخواست‌ها Enter را فشار دهید تا تنظیمات پیش‌فرض را بپذیرید. کلیدهای شما در مسیرهای زیر ایجاد خواهند شد:

    ~/.ssh/id_rsa.pub
    ~/.ssh/id_rsa

    حال، با اجرای دستور زیر وارد دایرکتوری .ssh شوید:

    cd ~/.ssh

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

    ls -l
    

    احتمالاً، خروجی دستور فوق، باید مشابه قطعه کد زیر باشد:

    Output
    -rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
    -rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa
    -rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub

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

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

    اگر در حال حاضر، به سرور مجازی خود، دسترسی مبتنی بر رمز عبور دارید، می‌توانید کلید عمومی خود را با اجرای این دستور، درون سرور مجازی، کپی کنید:

    ssh-copy-id remote_host

    با اجرای دستور بالا، یک اتصال به سرور مجازی ایجاد می‌شود و پس از وارد کردن رمزعبورتان، کلید عمومی شما در فایل authorized keys سرور، کپی می‌شود که به شما این امکان را می‌دهد دفعه بعد بدون نیاز به رمز عبور، وارد سرور مجازی خود شوید.

    گزینه‌های اتصال به سرورمجازی

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

    ssh -p port_number remote_host

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

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

    ssh remote_host command_to_run

    با اجرای دستور فوق، شما به سرور مجازی ریموت متصل می‌شوید، احراز هویت انجام می‌شود و دستور، اجرا خواهد شد.

    همان‌طور که قبلاً گفته شد، اگر قابلیت X11 Forwarding روی هر دو کامپیوتر فعال باشد، می‌توانید با وارد کردن دستور زیر به این قابلیت دسترسی پیدا کنید:

    ssh -X remote_host

    در صورتی که ابزارهای مناسب روی کامپیوتر شما نصب شده باشند، برنامه‌های GUI که روی سیستم راه دور استفاده می‌کنید، اکنون صفحه خود را روی سیستم local شما باز خواهند کرد.

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

    اگر که SSH Keyها را از قبل ایجاد کرده‌اید، اکنون می‌توانید با غیرفعال کردن احراز هویت password-only، امنیت سرور خود را افزایش دهید. به‌جز کنسول، تنها راه ورود به سرور شما از طریق کلید خصوصی خواهد بود که با کلید عمومی نصب‌شده روی سرور جفت شده است.

    هشدار: قبل از ادامه این مرحله، مطمئن شوید که یک کلید عمومی روی سرور خود نصب کرده‌اید. در غیر این صورت، از دسترسی به سرور قفل خواهید شد!

    به‌عنوان root یا کاربر با مجوزهای sudo، فایل پیکربندی sshd را باز کنید:

    sudo nano /etc/ssh/sshd_config

    خطی که شامل عبارت Password Authentication است را پیدا کنید و آن را با حذف # در ابتدای خط از حالت کامنت خارج کنید. سپس می‌توانید مقدار آن را به no تغییر دهید:

    PasswordAuthentication no

    دو پارامتر دیگر که نیازی به تغییر ندارند عبارتند از PubkeyAuthentication و ChallengeResponseAuthentication. این پارامترها به‌طور پیش‌فرض تنظیم شده‌اند و باید به صورت زیر باشند (به شرطی که قبلاً آن‌ها را تغییر نداده باشید):

    PubkeyAuthentication yes
    ChallengeResponseAuthentication no

    پس از اعمال تغییرات، فایل را ذخیره کرده و ببندید. سپس، می‌توانید SSH daemon را مجدداً بارگذاری کنید:

    sudo systemctl reload ssh

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

    نتیجه‌گیری

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

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

    ســــــــــــــــــــــال‌هاست که هستیم

    ۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

    sixth

    جمع‌مـــــــــــان، جمع است

    بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

    usersnumberusers

    خدمات رایگان لیارا

    ۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

    ۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

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

    دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

    سرویس DNS رایگانسرویس DNS رایگان

    به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

    ۱۰۰ هزار تومان اعتبار اولیه۱۰۰ هزار تومان اعتبار اولیه

    بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

    ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماهارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

    در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

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

    تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

    همراه شما هستیم

    در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
    تلفن واحد فروش:
    ۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
    call
    تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)