نحوه تنظیم کلیدهای SSH در اوبونتو 20.04 چگونه است؟
در این مقاله میخوانید
SSH مخفف عبارت Secure Shell پروتکلی رمزگذاریشده برای برقراری و مدیریت ارتباط ایمن کاربران با سرور است. اتصال کاربر به سرور با استفاده از SSH کاملاً امن خواهد بود؛ بههمیندلیل، یادگیری تنظیم SSH در اوبونتو بسیار اهمیت دارد.
فعالسازی SSH به شما امکان میدهد تا از راه دور به اوبونتو متصل شوید و فایلهایتان را با امنیت بسیار زیاد انتقال دهید. در این مقاله از آموزش اوبونتو، قصد داریم نحوه تنظیم کلید SSH در اوبونتو 20.04 را به شما آموزش دهیم. اگر میخواهید با پروتکل رمزنگاریشده شبکه برای اتصال ایمن کاربر با سرور بیشتر آشنا شوید، این مقاله راهنمای مناسبی برایتان است.
خرید سرور لینوکس با سیستمعامل Ubuntu (اوبونتو) از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس با Ubuntu خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
مراحل تنظیم کلید SSH در اوبونتو 20.04
بهطورکلی، کلیدهای SSH راهی امن برای ورود کاربران به سرور شما فراهم میکنند. درادامه، نحوه تنظیم کلیدهای SSH در اوبونتو را گامبهگام به شما آموزش میدهیم.
مرحله ۱. ایجاد جفت کلید (Key Pair)
اولین مرحله برای تنظیم کلیدهای SSH در اوبونتو، ایجاد یک جفت کلید در ماشین کاربر یا همان کلاینت است:
ssh-keygen
بهصورت پیشفرض نسخههای اخیر ssh-keygen جفت کلید RSA 3072 بیتی را ایجاد میکنند که بیشتر اوقات ایجاد این جفت کلید برای بیشتر کارها کافی است. البته درصورت نیاز، میتوانید از فلگ -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 ذخیره کنید. همچنین، امکان تعیین مسیر جایگزین وجود دارد. اگر در گذشته یک جفت کلید SSH ایجاد کرده باشید، ممکن است پیام زیر را دریافت کنید:
Output /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?
درصورتیکه بخواهید این کلید را روی دیسک بازنویسی (Overwrite) کنید، دیگر امکان استفاده از کلید قبلی برای احراز هویت برایتان وجود نخواهد داشت. زمانیکه Yes را انتخاب میکنید، باید بدانید که این فرایند دیگر بازگشتپذیر نیست. در مرحله بعد، باید اعلان زیر را مشاهده کنید:
Output Enter passphrase (empty for no passphrase):
در اینجا، میتوانید Passphrase یا کلمه عبور امن وارد کنید. انجام این کار را به شما توصیه میکنیم؛ چراکه همین Passphrase میتواند لایهای امنیتی اضافه و از ورود کاربران غیرمجاز به سیستم جلوگیری کند. در این لحظه، باید خروجی زیر را مشاهده کنید:
Output Your identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +---[RSA 3072]----+ | .| | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ ...o| |.. o *o+=.*+o....| | =+=ooB=o.... | +----[SHA256]-----+
حال یک کلید عمومی و خصوصی دارید که برای احراز هویت میتوانید از آن استفاده کنید. در مرحله بعد، باید کلید عمومی (Public Key) را روی سرور خود قرار دهید تا بتوانید از احراز هویت مبتنیبر کلید SSH برای ورود به سیستم استفاده کنید.
مرحله ۲. کپیکردن کلید عمومی (Public Key) با استفاده از ssh-copy-id
در مرحله دوم، باید کلید عمومی را در سرور اوبونتو کپی کنید. سریعترین راه برای کپیکردن Public Key در هاست اوبونتو، استفاده از ابزاری به نام ssh-copy-id است. استفاده از این ابزار راحت است و پیچیدگی خاصی ندارد. اگر ابزار ssh-copy-id را در کلاینت ماشین (ماشین کاربر) ندارید، از دو روش دیگری استفاده کنید که درادامه گفته میشود.
۱. کپیکردن کلید عمومی با استفاده از ssh-copy-id
ssh-copy-id بهصورت پیشفرض در بسیاری از سیستمعاملها وجود دارد؛ بههمیندلیل، ممکن است بتوانید آن را در سیستم محلی (Local System) خود پیدا کنید. برای اینکه بتوانید از این روش استفاده کنید، باید ازقبل دسترسی SSH مبتنیبر رمزعبور (Password) را به سرور خود داشته باشید.
برای استفاده از این ابزار، ریموت هاستی که میخواهید به آن متصل شوید و حساب کاربری که دسترسی SSH مبتنیبر رمزعبور به آن دارید، مشخص کنید. این حساب همان حسابی است که کلید عمومی SSH شما در آن کپی خواهد شد:
ssh-copy-id username@remote_host
در این لحظه، ممکن است با پیام زیر مواجه شوید:
Output The authenticity of host '203.0.113.1 (203.0.113.1)' 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
این پیام نشان میدهد که کامپیوتر محلی (Local Computer) ریموت هاست را نمیشناسد و برای اولینبار است که به هاستی جدید متصل میشوید. درادامه، باید Yes را تایپ کنید و برای ادامه فرایند، Enter را فشار دهید. سپس، ابزار ssh-copy-id حساب محلی (Local Account) شما را برای پیداکردن کلید 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-copy-id با استفاده از رمزعبوری که دادید، به حساب کاربری موجود در ریموت هاست متصل میشود. سپس، محتویات کلید SSH/id_rsa.pub./~ شما را در فایلی در home ~/.SSH directory ریموت اکانت به نام authorized_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 شما در ریموت اکانت آپلود شده است و بدون هیچ مشکلی میتوانید به مرحله سوم بروید.
۲. کپیکردن کلید عمومی بهصورت دستی
درصورتیکه دسترسی SSH مبتنیبر رمزعبور به سرور خود را نداشته باشید، باید فرایند کپیکردن کلید عمومی در سرور را بهصورت دستی انجام دهید. در اینجا، بهصورت دستی محتوای فایل id_rsa.pub را به فایل SSH/authorized_keys./~ در ریموت ماشین اضافه کنید. برای دیدن محتوای کلید id_rsa.pub، باید دستور زیر را تایپ کنید:
cat ~/.ssh/id_rsa.pub
محتوای کلید شما باید شبیه به این باشد:
Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
حال باید با استفاده از روشهایی که میتوانید، به ریموت هاست خود دسترسی پیدا کنید. زمانیکه به اکانت خود در ریموت سرور دسترسی پیدا کردید، باید مطمئن شوید که دایرکتوری SSH./~ وجود دارد. درصورت نیاز برای ایجاد دایرکتوری، میتوانید دستور زیر را وارد کنید؛ البته اگر دایرکتوری ازقبل وجود داشته باشد، با واردکردن این دستور اتفاق خاصی رخ نمیدهد:
mkdir -p ~/.ssh
فایل authorized_keys را در این دایرکتوری بسازید یا تغییر دهید. همچنین، میتوانید محتویات فایل id_rsa.pub را به انتهای فایل authorized_keys اضافه کنید. درصورت نیاز، با استفاده از دستور زیر آن را ایجاد کنید:
echo public_key_string >> ~/.ssh/authorized_keys
در دستور بالا، عبارت public_key_string را با خروجی دستور cat ~/.SSH/id_rsa.pub جایگزین کنید که در سیستم محلی خود اجرا کردهاید. توجه کنید که باید با ssh-rsa AAAA… شروع شود.
در آخر نیز مطمئن شوید که دایرکتوری SSH./~ و فایل authorized_keys permissions یا همان مجوزهای مناسب را دارند:
chmod -R go= ~/.ssh
عبارت بالا تمام مجوزهای گروه (group) و سایر (other) را برای دایرکتوری SSH./~ حذف میکند.
درصورتیکه از Root User (حساب Root) برای تنظیم کلیدهای حساب کاربری استفاده میکنید، باید بدانید که دایرکتوری SSH./~ باید به User تعلق داشته باشد نه به Root:
chown -R sammy:sammy ~/.ssh
توجه کنید که در این آموزش، User ما Sammy نام دارد؛ اما شما باید نام کاربری مناسب را با Sammy جایگزین کنید که در دستور بالا آمده است.
مرحله ۳. احراز هویت به سرور اوبونتو با استفاده از کلیدهای SSH
درصورت انجام موفقیتآمیز یکی از مراحل گفتهشده، باید بتوانید بدون استفاده از رمزعبور ریموت حساب کاربری، وارد ریموت هاست شوید:
ssh username@remote_host
اگر اولینبار است که به این هاست متصل میشوید، بهاحتمال زیاد چیزی شبیه به عبارت پایین را مشاهده خواهید کرد:
Output The authenticity of host '203.0.113.1 (203.0.113.1)' 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
این پیام نشان میدهد که کامپیوتر محلی شما ریموت هاست را نمیشناسد؛ در اینجا باید Yes را تایپ کنید و برای ادامه فرایند Enter را فشار دهید. درصورتیکه رمزعبور کلید خصوصیتان را ارائه نکنید، بلافاصله وارد سیستم میشوید؛ اما اگر هنگام ایجاد کلید رمزعبور ارائه کردهاید، از شما خواسته میشود که آن رمزعبور را وارد کنید.
بعد از احراز هویت، Shell Session بههمراه یک حساب پیکربندیشده در سرور اوبونتو برایتان باز خواهد شد. اگر احراز هویت مبتنیبر کلید را بهصورت موفقیتآمیز انجام داده باشید، مرحله بعدی را دنبال کنید تا یاد بگیرید که چگونه با غیرفعالکردن احراز هویت رمزعبور، میتوانید ایمنی سیستم خود را افزایش دهید.
مرحله ۴. غیرفعالکردن احراز هویت رمزعبور در سرور
اگر بتوانید با استفاده از SSH بدون رمزعبور وارد اکانت خود شوید، احراز هویت مبتنیبر کلید SSH را با موفقیت در حساب خود پیکربندی کردهاید. بااینحال، باید توجه کنید که احراز هویت مبتنیبر رمزعبورتان همچنان فعال است؛ بههمیندلیل، سرور شما درمعرض حملات Brute-Force قرار خواهد داشت.
قبل از غیرفعالکردن احراز هویت رمزعبور، مطمئن شوید که میتوانید با کلید SSH خود به سرور وارد شوید. حتماً اطمینان حاصل کنید که هیچ حساب کاربری دیگری روی سرور نیست که از آن رمزعبور برای ورود به سرور استفاده کند. بهدلیل اینکه sudo ورودهای مبتنیبر رمزعبور را قفل میکند، باید مطمئن شوید که همچنان دسترسی مدیریتی دارید.
زمانیکه تأیید کردید که ریموت اکانت شما دسترسیهای مدیریتی را دارد، با استفاده از کلیدهای SSH وارد ریموت سرور خود شوید. این کار را میتوانید بهصورت Root یا حساب کاربری یا بهصورت با sudo privileges یا همان امتیازات sudo انجام دهید. در این زمان، باید فایل پیکربندی SSH Daemon را باز کنید:
sudo nano /etc/ssh/sshd_config
اکنون باید در داخل فایل، دستورالعملی به نام PasswordAuthentication را جستوجو کنید. این خط ممکن است با یک # در ابتدای خط توضیح داده شود. با حذف # خط را از کامنت خارج کنید و مقدار را روی no قرار دهید. این قابلیت شما را برای ورود ازطریق SSH با استفاده از رمزهای عبور حساب کاربری غیرفعال میکند:
. . . PasswordAuthentication no . . .
بعد از اینکه کار انجام شد، فایل را با فشاردادن CTRL+X و سپس Y برای ذخیره فایل و درادامه Enter برای خروج از Nano، ذخیره کنید و ببندید. برای اینکه تغییرات فعال شوند، باید سرویس SSHd را دوباره راهاندازی کنید:
sudo systemctl restart ssh
توجه کنید که در این مرحله حتماً پنجره ترمینال (Terminal Window) جدیدی باز و قبل از بستن Session فعلی خود، بررسی کنید که سرویس SSH بهدرستی کار کند:
ssh username@remote_host
زمانیکه مطمئن شدید سرویس SSH شما بهدرستی کار میکند، میتوانید با خیال راحت تمام Sessions سرور فعلی خود را ببندید. هماکنون، دیمون SSH (SSH daemon) در سرور اوبونتو شما فقط به احراز هویت مبتنیبر کلید SSH جواب میدهد و ورودیهای مبتنیبر رمزعبور غیرفعال شده است.
جمعبندی
در این مقاله از آموزش لینوکس بلاگ پارس پک، نحوه تنظیم کلیدهای SSH در اوبونتو 20.04 را گامبهگام به شما آموزش دادیم. با انجام مراحل گفتهشده در مطلب حاضر، میتوانید وارد سرورتان شوید و فعالیتهای عادی خود را انجام دهید. تغییر در درگاه SSH میتواند لایههای امنیتی بیشتری بهوجود آورد و خطر حملات را کاهش دهد.
سؤالات متداول
۱. تنظیم کلید SSH در اوبونتو چند مرحله دارد؟
تنظیم کلیدهای SSH در اوبونتو شامل مراحل مختلفی است که در این مطلب، به ۴ مرحله آن اشاره کردیم.
۲. کپیکردن کلید عمومی در سرور اوبونتو چگونه انجام میشود؟
شما میتوانید این کار را با استفاده از ssh-copy-id یا بهصورت دستی انجام دهید.
۳. غیرفعالکردن احراز هویت رمزعبور در سرور چه فایدهای دارد؟
با غیرفعالکردن احراز هویت رمزعبور در سرور، باعث افزایش امنیت سیستم میشود.