معرفی

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

در این راهنما ، ما بر تنظیم کلیدهای SSH برای سرور Rocky Linux 8 تمرکز می کنیم. کلیدهای SSH یک روش ساده و ایمن برای ورود به سرور شما ارائه می دهند و برای همه کاربران توصیه می شود.

مرحله 1 – ایجاد جفت کلید RSA

اولین قدم ایجاد یک جفت کلید در ماشین سرویس گیرنده (معمولاً رایانه محلی شما) است:

ssh-keygen

به طور پیش فرض ، ssh-keygen یک جفت کلید RSA 2048 بیتی ایجاد می کند ، که برای اکثر موارد استفاده از امنیت کافی برخوردار است (برای ایجاد یک کلید بزرگتر 4096 می توانید به صورت اختیاری در پرچم -b 4096 قرار دهید).

پس از وارد کردن فرمان ، باید اعلان زیر را مشاهده کنید:

Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

ENTER را فشار دهید تا جفت کلید در .ssh/ subdirectory در فهرست اصلی ذخیره شود ، یا یک مسیر جایگزین مشخص کنید.

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

Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

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

سپس باید اعلان زیر را مشاهده کنید:

Output
Enter passphrase (empty for no 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:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

 

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

مرحله 2 – کپی کلید عمومی در سرور لینوکس سنگی خود

سریعترین راه برای کپی کردن کلید عمومی در میزبان Rocky Linux استفاده از ابزاری به نام ssh-copy-id است. این روش در صورت وجود بسیار توصیه می شود. اگر ssh-copy-id را در دستگاه مشتری خود در اختیار ندارید ، می توانید از یکی از دو روش جایگزین زیر استفاده کنید (کپی از طریق SSH مبتنی بر رمز عبور ، یا کپی دستی کلید).

کپی کلید عمومی خود با استفاده از ssh-copy-id

ابزار ssh-copy-id به طور پیش فرض در بسیاری از سیستم عامل ها گنجانده شده است ، بنابراین ممکن است آن را در سیستم محلی خود در دسترس داشته باشید. برای اینکه این روش کار کند ، باید از قبل دسترسی SSH مبتنی بر گذرواژه به سرور خود داشته باشید.

برای استفاده از این ابزار ، فقط باید میزبان از راه دور که می خواهید به آن متصل شوید و حساب کاربری که رمز عبور 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

این بدان معناست که رایانه محلی شما میزبان از راه دور را تشخیص نمی دهد. این اولین باری است که به میزبان جدید متصل می شوید. بله را تایپ کنید و 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
username@203.0.113.1's password:

رمز عبور را وارد کنید (تایپ شما برای اهداف امنیتی نمایش داده نمی شود) و ENTER را فشار دهید. این ابزار با استفاده از گذرواژه ای که ارائه کرده اید به حساب موجود در میزبان راه دور متصل می شود. سپس محتویات کلید ~/.ssh/id_rsa.pub شما را در فایل remote/.ssh/author_keys حساب از راه دور کپی می کند.

شما باید خروجی زیر را مشاهده کنید:

Output
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.

در این مرحله ، کلید id_rsa.pub شما در حساب راه دور بارگذاری شده است. می توانید به مرحله 3 ادامه دهید.

کپی کلید عمومی با استفاده از SSH

اگر ssh-copy-id در دسترس ندارید ، اما دسترسی SSH مبتنی بر رمز عبور به یک حساب کاربری در سرور خود دارید ، می توانید کلیدهای خود را با استفاده از یک روش مرسوم SSH بارگذاری کنید.

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

از طرف دیگر ، می توانیم مطمئن شویم که فهرست ~/.ssh وجود دارد و دارای مجوزهای صحیح تحت حساب مورد استفاده ما است.

سپس می توانیم محتوایی را که پیپ کرده ایم در فایلی به نام author_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 '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

 

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

پس از آن ، باید از شما خواسته شود که گذرواژه حساب کاربری از راه دور را وارد کنید:

Output
username@203.0.113.1's password:

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

کپی کلید عمومی به صورت دستی

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

ما به صورت دستی محتوای فایل id_rsa.pub شما را به فایل ~/.ssh/author_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== sammy@host

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

پس از دسترسی به حساب خود در سرور راه دور ، باید مطمئن شوید که فهرست ~/.ssh وجود دارد. این دستور در صورت لزوم دایرکتوری را ایجاد می کند یا در صورت وجود هیچ کاری انجام نمی دهد:

mkdir -p ~/.ssh

اکنون ، می توانید فایل author_keys را در این فهرست ایجاد یا اصلاح کنید. می توانید محتویات فایل id_rsa.pub خود را به انتهای فایل author_keys اضافه کنید و در صورت لزوم آن را با استفاده از این دستور ایجاد کنید:

echo public_key_string >> ~/.ssh/authorized_keys

در دستور بالا ، public_key_string را با خروجی دستور cat ~/.ssh/id_rsa.pub که در سیستم محلی خود اجرا کرده اید جایگزین کنید. باید با ssh-rsa AAAA شروع شود ….

در نهایت ، ما اطمینان حاصل می کنیم که دایرکتوری./.ssh و فایل author_keys دارای مجوزهای مناسب هستند:

chmod -R go= ~/.ssh

با این کار همه مجوزهای “گروه” و “دیگر” برای فهرست ~/ .ssh/ حذف می شود.

اگر از حساب اصلی برای تنظیم کلیدها برای یک حساب کاربری استفاده می کنید ، همچنین مهم است که فهرست ~/.ssh متعلق به کاربر باشد و نه روت:

chown -R sammy:sammy ~/.ssh

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

اکنون می توانیم با سرور Linux Rocky خود احراز هویت مبتنی بر کلید را انجام دهیم.

مرحله 3 – ورود به سرور سنگی لینوکس خود با استفاده از کلیدهای 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

این بدان معناست که رایانه محلی شما میزبان از راه دور را تشخیص نمی دهد. بله را تایپ کنید و سپس ENTER را برای ادامه فشار دهید.

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

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

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

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

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

هنگامی که تأیید کردید که حساب راه دور شما دارای امتیازات مدیریتی است ، با کلیدهای SSH وارد سرور راه دور خود شوید ، یا به صورت root یا با حسابی با امتیازات sudo. سپس ، فایل پیکربندی SSH daemon را باز کنید:

sudo vi /etc/ssh/sshd_config

در داخل فایل ، دستورالعملی به نام PasswordAuthentication را جستجو کنید. این ممکن است با یک # هش نظر داده شود. i را فشار دهید تا vi در حالت درج قرار گیرد ، و سپس خط را کامنت نکنید و مقدار را روی no قرار دهید. با این کار امکان ورود به سیستم از طریق SSH با استفاده از گذرواژه های حساب غیرفعال می شود:


PasswordAuthentication no

پس از اتمام اعمال تغییرات ، ESC و سپس: wq را فشار دهید تا تغییرات را در فایل بنویسید و خارج شوید. برای پیاده سازی واقعی این تغییرات ، باید سرویس sshd را راه اندازی مجدد کنیم:

sudo systemctl restart sshd

برای احتیاط ، یک پنجره ترمینال جدید باز کنید و قبل از بستن جلسه فعلی خود ، صحت عملکرد سرویس SSH را بررسی کنید:

ssh username@remote_host

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

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


سرور مجازی آلمان

سرور مجازی آمریکا

سرور مجازی فرانسه

سرور مجازی کانادا

سرور مجازی لهستان

سرور مجازی هلند

سرور مجازی انگلیس

 

برچسب‌ها:, , , , , , ,