راه اصلی اتصال به سرور لینوکس از طریق پروتکل SSH است . این نوع اتصال امن است، زیرا تمام دادههای منتقل شده از طریق آن رمزگذاری میشوند. برای برقراری اتصال SSH، باید آن را روی سرور راه دور که میخواهید به آن متصل شوید و کلاینت در سمت کاربر پیکربندی کنید. نرمافزارهای زیادی برای اتصال SSH وجود دارد. در لینوکس، بسته OpenSSH محبوبترین است و برای ویندوز، مردم بیشتر از PuTTY استفاده میکنند.
بیایید نگاهی دقیق تر به پیکربندی سرور با استفاده از سرور اوبونتو 18.04 به عنوان مثال بیندازیم و سپس سعی کنید از لینوکس و ویندوز به سرور متصل شوید.
هر کاری که انجام میدهیم از یک حساب کاربری معمولی خواهد بود. در این مورد، ما یک کاربر با نام کاربری « mihail » ایجاد کردهایم و حساب کاربری « root » به طور پیشفرض غیرفعال است.
راه اندازی سمت سرور
بسته را با اجرای این دستور تنظیم کنید:
sudo apt install openssh-server
پس از اتمام نصب، مطمئن شوید که سرویس در حال اجرا است. از این دستور استفاده کنید:
systemctl status sshd
وضعیت « فعال (در حال اجرا) » به این معنی است که سرویس فعال شده و به طور عادی کار میکند.
برای جلوگیری از مسدود شدن اتصالات ورودی توسط فایروال، مطمئن شوید که آن را غیرفعال کرده اید، زیرا در این مقاله قصد نداریم فایروال شبکه را پیکربندی کنیم.
از این دستور استفاده کنید:
sudo ufw disable
در این مرحله می توانید از قبل به سرور متصل شوید. با تنظیمات پیش فرض سرور امکان اتصال به پورت استاندارد 22 با احراز هویت مبتنی بر رمز عبور را فراهم می کند.
اتصال SSH از لینوکس
به عنوان یک قاعده، کلاینت OpenSSH به طور پیش فرض روی لینوکس نصب می شود و نیازی به پیکربندی دستی اضافی ندارد. اتصال را می توان از ترمینال با کمک دستور ssh برقرار کرد. پارامترها در این مورد نام کاربری و آدرس IP سرور راه دور خواهد بود. در سرور آزمایشی ما که به عنوان مثال از آن استفاده می کنیم، تنها یک حساب "mihail" وجود دارد، بنابراین ما از آن استفاده خواهیم کرد.
ssh [email protected]
در اولین اتصال، باید افزودن کلید عمومی سرور به پایگاه داده را تأیید کنید، بنابراین « بله » را پاسخ دهید. پس از آن میتوانید رمز عبور را وارد کنید. اگر اتصال با موفقیت برقرار شود، متن خوشامدگویی خط فرمان سرور را مشاهده خواهید کرد. اکنون تمام دستورات مستقیماً روی سرور راه دور اجرا میشوند.
SSH از ویندوز
Putty را باز کنید و پارامترهای اتصال را تنظیم کنید. مطمئن شوید که سوئیچ « نوع اتصال » روی SSH تنظیم شده باشد . آدرس IP را در قسمت « نام میزبان » وارد کنید، مقدار پیشفرض ۲۲ را در قسمت « پورت » وارد کنید و روی « باز کردن » کلیک کنید.
در اولین اتصال، Putty از شما میخواهد که تأیید کنید به این سرور اعتماد دارید، بنابراین روی « بله » کلیک کنید.
پس از وارد کردن لاگین و رمز عبور، خط فرمان سرور راه دور را مشاهده خواهید کرد.
احراز هویت با کلید افزایش سطح امنیت
هنگامی که یک کلاینت سعی می کند از طریق SSH اتصال ایمن به سرور برقرار کند، قبل از اجازه دادن به اتصال، سرور نیاز به احراز هویت (تأیید) مشتری دارد. همانطور که قبلا ذکر شد، احراز هویت مبتنی بر رمز عبور معمولاً به طور پیش فرض استفاده می شود. این امنیت قوی ایجاد نمی کند، زیرا همیشه راهی برای bruteforce آن وجود دارد. علاوه بر این، احراز هویت رمز عبور برای اتصالات SSH با استفاده از اسکریپت قابل اجرا نیست.
برای این نوع کارها یک روش احراز هویت ویژه با کلید وجود دارد. نکته این است که کلاینت کلیدهای خصوصی و عمومی را تولید می کند و سپس کلید عمومی به سرور ارسال می شود. پس از آن برای اتصال به سرور نیازی به رمز عبور ندارید، زیرا احراز هویت بر اساس کلیدهای کلاینت عمومی و خصوصی انجام می شود. برای ارائه سطح خوبی از امنیت، دسترسی به کلید خصوصی باید محدود شود. به دلیل این واقعیت که کلید خصوصی در سمت مشتری ذخیره می شود و از طریق شبکه منتقل نمی شود، اعتقاد بر این است که این روش امن تر است.
احراز هویت با کلید در لینوکس
بیایید با کمک نرم افزار ابزار ssh-keygen کلیدهای عمومی و خصوصی را روی مشتری تولید کنیم. این ابزار پیشنهاد می کند مسیر کلید خصوصی را تغییر دهید و برای امنیت بیشتر یک عبارت عبور وارد کنید. با فشار دادن Enter در تمام درخواست ها، تمام پارامترها را به طور پیش فرض رها کنید.
در نتیجه، در دایرکتوری خانگی در پوشه .ssh، دو فایل تولید شده را خواهید یافت: id_rsa و id_rsa.pub که حاوی کلیدهای خصوصی و عمومی هستند.
پس از آن، باید کلید عمومی را به سرور ارسال کنید. برای انجام این کار، محتوای فایل « id_rsa.pub » را در فایل « ~/.ssh/authorized_keys » روی سرور کپی کنید. بیایید با کمک ابزار « ssh-copy-id » سادهترین راه را انتخاب کنیم. نام کاربری و آدرس IP سرور را وارد کنید، درست مانند اتصال معمولی. پس از وارد کردن رمز عبور، کلید عمومی کلاینت به طور خودکار در سرور کپی میشود. این دستور را اجرا کنید:
ssh-copy-id [email protected]
پس از انجام تمام این کارها، سرور دیگر نیازی به وارد کردن رمز عبور نخواهد داشت.
احراز هویت با کلید در ویندوز
PUTTYGEN را باز کنید و روی « تولید » کلیک کنید. برای تولید کلیدها، فقط کافی است ماوس خود را روی صفحه نمایش حرکت دهید تا ابزار به صورت تصادفی کلیدها را تولید کند.
پس از تولید کلیدها، روی « ذخیره کلید خصوصی » کلیک کنید و آن را در فایلی که کلید خصوصی روی دیسک شما قرار دارد ذخیره کنید. میتوانید هر مسیری را که دوست دارید تنظیم کنید، اما کمی بعد باید آن را در Putty مشخص کنید. سپس کلید عمومی را از بالای پنجره کپی کنید.
بیایید کلید عمومی را با کپی کردن آن در ترمینال ارسال کنیم. Putty را باز کنید و طبق معمول به سرور متصل شوید. حالا بیایید فایل « .ssh/authorized_keys » را ایجاد کنیم و دسترسی سایر کاربران به فایل را محدود کنیم، تا فقط سازندهی آن در دسترس باشد.
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
پس از ایجاد فایل، کلید عمومی کلاینت را در آن قرار دهید. در مرحله قبل کلید عمومی را در کلیپ بورد کپی کردیم. برای ضبط آنچه در کلیپ بورد در فایل است از دستور cat و تغییر مسیر خروجی استفاده کنید.
cat > .ssh/authorized_keys
پس از وارد کردن دستور، در پنجره ترمینال کلیک راست کرده و آنچه را که در کلیپبورد است، پیست کنید. برای تأیید ورودی، میانبر « Ctrl+D » را فشار داده و از سرور جدا شوید.
حالا بیایید مسیر کلید خصوصی را در Putty مشخص کنیم و دوباره به سرور متصل شویم.
از این پس برای اتصال به سرور فقط باید نام کاربری را وارد کنید. اگر میخواهید از دستگاه دیگری که کلید خصوصی مناسبی ندارد به سرور متصل شوید، سرور رمز عبور را درخواست میکند. پس از تنظیم احراز هویت مبتنی بر کلید، می توانید دسترسی با رمز عبور را ممنوع کنید.