نحوه تنظیم کلیدهای SSH در اوبونتو 18.04
به منظور آشنا شدن با نحوه تنظیم کلیدهای SSH در اوبونتو 18.04 برای اتصال ایمن به سرور خود مقاله ما را تا انتها مطالعه نمایید.
SSH یا پوسته امن یک پروتکل رمزگذاری شده است که برای مدیریت و برقراری ارتباط با سرورها استفاده می شود.
در این مقاله، تنظیم کلیدهای SSH برای نصب اوبونتو 18.04 را آموزش خواهیم داد. کلیدهای SSH یک راه امن برای ورود به سرور شما را فراهم می کند و به همه کاربران توصیه می شود.
مرحله 1 – ایجاد جفت کلید RSA
اولین گام این است که یک جفت کلید در دستگاه خودتان ایجاد کنید:
ssh-keygen
بهطور پیشفرض ssh-keygen یک جفت کلید 2048 بیتی ایجاد میکند که برای اکثر موارد به اندازه کافی ایمن است (میتوانید به صورت اختیاری پرچم b 4096 را برای ایجاد یک کلید 4096 بیتی بزرگتر ارسال کنید).
پس از وارد کردن دستور، باید خروجی زیر را دریافت کنید:
Output Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):
ENTER را فشار دهید تا جفت کلید در دایرکتوری فرعی .ssh/ در فهرست اصلی خود ذخیره شود یا یک مسیر جایگزین مشخص کنید.
اگر قبلاً یک جفت کلید SSH ایجاد کرده اید، ممکن است پیام زیر را دریافت میکنید:
Output /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?
اگر بخواهید کلید را روی دیسک بازنویسی کنید، دیگر نمیتوانید با استفاده از کلید قبلی احراز هویت کنید. هنگام انتخاب بله بسیار مراقب باشید، زیرا این یک فرآیند مخرب است که قابل برگشت نیست.
اعلان بعدی از شما می خواهد که یک عبارت عبور امن را وارد کنید.
در اینجا شما گزینه ای برای وارد کردن یک عبارت عبور امن دارید که بسیار توصیه می شود. یک عبارت عبور یک لایه امنیتی برای جلوگیری از ورود کاربران غیرمجاز به سیستم اضافه می کند.
اکنون یک کلید عمومی و خصوصی دارید که می توانید از آن برای احراز هویت استفاده کنید. مرحله بعدی این است که کلید عمومی را روی سرور خود قرار دهید تا بتوانید از احراز هویت مبتنی بر کلید SSH برای ورود به سیستم استفاده کنید.
کپی کردن کلید عمومی در سرور اوبونتو
سریعترین راه برای کپی کردن کلید عمومی در هاست اوبونتو استفاده از ابزاری به نام ssh-copy-id است. اگر ssh-copy-id را در دستگاه خود در دسترس ندارید، می توانید از یکی از دو روش جایگزین ارائه شده در این بخش (کپی از طریق SSH مبتنی بر رمز عبور یا کپی دستی کلید) استفاده کنید.
کپی کردن کلید عمومی با استفاده از ssh-copy-id
ابزار ssh-copy-id به طور پیش فرض در بسیاری از سیستم عامل ها گنجانده شده است، بنابراین ممکن است آن را در سیستم محلی خود در دسترس داشته باشید.
برای استفاده از این ابزار، سروری که میخواهید به آن متصل شوید و حساب کاربری که دسترسی SSH مبتنی بر رمز عبور به آن دارید را مشخص میکنید. این حسابی است که کلید عمومی SSH شما در آن کپی می شود.
برای انجام این کار دستور زیر را اجرا نمایید.
ssh-copy-id username@remote_host
پس از اجرای دستور پیام زیر دریافت خواهد شد:
Output The authenticity of host 'xxx.x.xxx.x' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
این بدان معنی است که رایانه محلی شما سرور را نمی شناسد. این اولین باری است که به یک هاست جدید متصل می شوید. “بله” را بنویسید و ENTER را فشار دهید تا ادامه دهید.
در مرحله بعد، ابزار حساب محلی شما را برای یافتن کلید id_rsa.pub که قبلا ایجاد کرده اید اسکن می کند. وقتی کلید را پیدا کرد، از شما رمز عبور حساب کاربری راه دور را می خواهد:
Output /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password:
رمز عبور را بنویسید و ENTER را فشار دهید. ابزار با استفاده از رمز عبوری که ارائه کرده اید به حساب موجود در هاست راه دور متصل می شود. سپس محتویات کلید ~/.ssh/id_rsa.pub شما را در فایلی در دایرکتوری خانه ~/.ssh حساب راه دور به نام autorized_keys کپی می کند.
شما باید خروجی زیر را دریافت کنید:
Output Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.
در این مرحله، کلید id_rsa.pub شما در حساب راه دور آپلود شده است و می توانید به مرحله 3 بروید.
کپی کردن کلید عمومی با استفاده از SSH
اگر ssh-copy-id در دسترس ندارید، اما دسترسی SSH مبتنی بر رمز عبور به حسابی در سرور خود دارید، می توانید کلیدهای خود را با استفاده از روش SSH معمولی آپلود کنید. به یاد داشته باشید، این تنها در صورتی کار می کند که دسترسی SSH مبتنی بر رمز عبور به سرور خود داشته باشید.
می توانید این کار را با استفاده از دستور cat برای خواندن محتویات کلید عمومی SSH در رایانه محلی خود و اتصال آن از طریق اتصال SSH به سرور راه دور انجام دهید.
از طرف دیگر، میتوانید مطمئن شوید که دایرکتوری ~/.ssh وجود دارد و مجوزهای صحیحی را در حسابی که استفاده میکنید دارد.
سپس میتوانید محتوایی را که در فایلی به نام autorized_keys در این فهرست ارسال کردهاید، خروجی بگیرید. برای اضافه کردن محتوا به جای بازنویسی، از نماد >> تغییر مسیر استفاده کنید. این به شما امکان می دهد کلیدها را بدون از بین بردن کلیدهای اضافه شده قبلی اضافه کنید.
دستور کامل به صورت زیر بایستی اجرا شود:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
شما باید خروجی زیر را دریافت کنید:
Output The authenticity of host 'xxx.x.xxx.x' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
این بدان معنی است که رایانه محلی شما میزبان راه دور را نمی شناسد. این خروجی زمانی دریافت میشود که اولین بار است به یک هاست جدید متصل می شوید. “بله” را بنویسید و ENTER را فشار دهید تا ادامه دهید.
پس از آن، باید از شما خواسته شود که رمز عبور حساب کاربری راه دور را وارد کنید.
پس از وارد کردن رمز عبور، محتویات کلید id_rsa.pub شما در انتهای فایل authorized_keys حساب کاربری از راه دور کپی می شود. در صورت موفقیت آمیز بودن، به مرحله 3 ادامه دهید.
مرحله 3 – احراز هویت به سرور اوبونتو با استفاده از کلیدهای SSH
اگر یکی از مراحل مرحله 2 را با موفقیت انجام داده اید، باید بتوانید بدون رمز عبور حساب ریموت وارد سرور شوید.
روند کار به این صورت است:
ssh username@remote_host
اگر رمز عبور کلید خصوصی خود را ارائه نکرده اید، بلافاصله وارد سیستم خواهید شد. اگر هنگام ایجاد کلید یک عبارت عبور برای کلید خصوصی ارائه کرده اید، از شما خواسته می شود که آن را وارد کنید (توجه داشته باشید که ضربه های کلید شما برای امنیت در جلسه ترمینال نمایش داده نمی شود). پس از احراز هویت، یک جلسه پوسته جدید باید با حساب پیکربندی شده در سرور اوبونتو برای شما باز شود.
اگر احراز هویت مبتنی بر کلید موفقیت آمیز بود، در ادامه مقاله با ما همراه باشید تا یاد بگیرید چگونه با غیرفعال کردن احراز هویت رمز عبور، میتوانید سیستم خود را بیشتر ایمن کنید.
مرحله 4 – غیرفعال کردن احراز هویت رمز عبور در سرور خود
اگر توانستید با استفاده از SSH بدون رمز عبور وارد حساب خود شوید، احراز هویت مبتنی بر کلید SSH را با موفقیت در حساب خود پیکربندی کرده اید. با این حال، مکانیسم احراز هویت مبتنی بر رمز عبور شما هنوز فعال است، به این معنی که سرور شما همچنان در معرض حملات brute-force قرار دارد.
قبل از تکمیل مراحل این بخش، مطمئن شوید که یا احراز هویت مبتنی بر کلید SSH را برای حساب ریشه در این سرور پیکربندی کرده اید، یا ترجیحاً احراز هویت مبتنی بر کلید SSH را برای یک حساب غیر ریشه در این پیکربندی کرده اید.
هنگامی که تأیید کردید که حساب شما دارای امتیازات مدیریتی است، با کلیدهای SSH وارد سرور خود شوید، چه به صورت روت یا با یک حساب دارای امتیازات sudo. سپس فایل پیکربندی SSH Daemon را باز کنید:
sudo nano /etc/ssh/sshd_config
در داخل فایل، دستورالعملی به نام PasswordAuthentication را جستجو کنید. این خط ممکن است با یک # در ابتدای خط کامنت شده باشد. با حذف #، خط را از حالت کامنت خارج کنید و مقدار را روی no قرار دهید. این قابلیت شما را برای ورود از طریق SSH با استفاده از رمزهای عبور حساب غیرفعال می کند.
پس از اتمام کار، با فشار دادن CTRL + X، سپس Y و ENTER، فایل را ذخیره کرده و ببندید تا از نانو خارج شوید. برای فعال کردن این تغییرات، باید سرویس sshd را با اجرای دستور زیر مجددا راه اندازی کنید.
sudo systemctl restart ssh
به عنوان یک اقدام احتیاطی، یک پنجره ترمینال جدید باز کنید و قبل از بستن ترمینال فعلی، با اجرای دستور زیر تست کنید که سرویس SSH به درستی کار می کند.
ssh username@remote_host
هنگامی که تأیید کردید که سرویس SSH شما به درستی کار می کند، می توانید با خیال راحت تمام ترمینال های سرور فعلی را ببندید.
دیمون SSH در سرور اوبونتو شما اکنون فقط به احراز هویت مبتنی بر کلید SSH پاسخ می دهد و احراز هویت مبتنی بر رمز عبور غیرفعال شده است.
ممنون، آموزش جامع و کاملی بود