استفاده از SSH Key برای ورود بدون پسورد به لینوکس
- مقالات آموزشی
- بروزرسانی شده در
یکی از قابلیتهای بسیار عالی سیستم عامل لینوکس این هست که بدون نیاز به رمز عبور و با استفاده از SSH Key ها میتونیم وارد ترمینال لینوکس بشیم. این قابلیت هم به افزایش امنیت سرورهای لینوکسی ما کمک میکنه و هم این امکان رو برای ما فراهم میکنه تا با سرعت بیشتری وارد ترمینال سرور لینوکسی بشیم.
قرار ما این شد که در کنار کار با وردپرس کمکم به سمت لینوکس بروید تا زمانی که سایت شما به یک سایت پربازدید تبدیل شد، بتونین مثل میهنوردپرس، این سایت رو در سرور مجازی یا اختصاصی خودتون مدیریت کنین. از همه مهمتر تا حد ممکن اطلاعات سایت خودتون رو دست هاستینگها یا مدیران سرور نسپارید.
توجه داشته باشین با استفاده از کلیدهای SSH، تنها کامپیوترهایی که SSH Key داشته باشن میتونن وارد سیستم لینوکسی بشن. در غیر اینصورت باید مستقیماً با استفاده از iLO یا سیستمهای مشابه مجدداً ورود با رمز رو در سیستم لینوکس خودتون فعال کنین.
آنچه در این مقاله میخوانید
SSH Key چیست؟
کلیدهای ورود SSH تقریباً مثل SSL یا سیستم بیت کوین عمل میکنن. یک کلید Public (عمومی) توسط سرور به سیستمهایی که میخوان به سرور متصل بشن اعلام میشه. سیستم کلاینت با استفاده از Private Key (کلید خصوصی) خودش قفل ورود به سرور رو باز میکنه و وارد سرور میشه. با این فرایند شما با استفاده از یک رمز عبور بسیار قوی که در سیستم شما ذخیره شده، قادر خواهید بود بدون نیاز به وارد کردن هر بارهی رمز عبور وارد سرور خودتون بشین.
استفاده از SSH Key و ساخت آن
اگر با مک کار میکنین کافیه ترمینال سیستم خودتون رو باز کنین. اگر هم از ویندوز استفاده میکنین، نیازی به نصب برنامههای جانبی و عجیبوغریب ندارین؛ امروزه با وجود پاورشل (PowerShell) مدرن در ویندوزهای جدید، دقیقاً همین دستورات بهراحتی براتون کار میکنن. البته پیشنهاد میکنیم اگر براتون مقدور هست، در آینده سیستم عامل خودتون رو به لینوکس یا مک تغییر بدین تا لذت بیشتری از برنامهنویسی ببرین. 😀

حالا کافیه دستور زیر رو در ترمینال یا پاورشل خودتون وارد کنین:
ssh-keygen
حالا با چنین پیامی روبرو میشین:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/reza/.ssh/id_rsa):
کافیه روی کلید enter بزنین; اگر هم به شما پیام Overwrite نمایش داده شد Y رو تایپ کرده و اینتر رو مجدداً بزنین. سپس با این پیام روبرو میشین:
Enter passphrase (empty for no passphrase):
از شما میخواد رمز عبور دلخواه خودتون رو وارد کنین. پیشنهاد میکنیم اگر قصد دارین سریع وارد سرور خودتون بشین (البته اگر از امنیت سیستم خودتون اطمینان کامل دارین) بدون وارد کردن رمز روی اینتر کلیک کنین.
در نهایت با چنین پیامی روبرو میشین:
The key fingerprint is:
SHA256:uMBogC4V1hJH0ma7dm2mXdOcuIkDOrZ1pu3ckE21hNk reza@rezas-iMac.local
The key's randomart image is:
+---[RSA 3072]----+
| o+o |
| =+ + |
| +... o E |
|.. o. . o . |
|o . ... S.+ .+ . |
|oo . .o.o+. + + |
|oo. ..o+*+o + |
|o +o.*+ o |
| ..== .. |
+----[SHA256]-----+
به همین راحتی! شما SSH Key رو در سیستم خودتون ساختین. حالا باید این SSH Key رو به سرور متصل (ایمپورت) کنین.
کپی کردن SSH Key به سرور لینوکسی
برای کپی کردن SSH Key باید دستور زیر رو تایپ کنین:
ssh-copy-id root@ip
به جای root باید نام کاربری سرور مورد نظر و به جای ip باید آیپـی سرور لینوکسی خودتون رو وارد کنین. به شما پیامی مبنی بر اطمینان از وارد کردن SSH Key پرسیده میشه که باید yes رو تایپ کنین:
Are you sure you want to continue connecting (yes/no)? yes
حالا رمز عبور ورود به سرور لینوکس از شما پرسیده میشه. با وارد کردن رمز، SSH Key در سرور شما نصب خواهد شد و به همین راحتی حالا میتونین با وارد کردن دستور زیر، بدون نیاز به وارد کردن رمز عبور سرور لینوکس خودتون، وارد سرور بشین:
ssh root@ip
حالا مشاهده خواهید کرد که موقع ورود نیازی به رمز نخواهید داشت. اگر قابلیت ورود با رمز رو هم روی SSH غیرفعال کنین (تا فقط با کلید بشه وارد شد) که عالیتر میشه و امنیت سرور سایت خودتون رو چند پله افزایش دادین.
تفاوت کلید عمومی (Public Key) و کلید خصوصی (Private Key) به زبان ساده
برای اینکه مفهوم کلیدها کاملاً براتون جا بیفته، بیاین یک مثال ملموس بزنیم. کلید عمومی یا همان Public Key دقیقاً مثل یک قفل فیزیکی میمونه. شما میتونین این قفل رو تکثیر کنین و روی درِ هزاران سرور مختلف بکار ببرین; چون لو رفتن قفل هیچ خطری نداره. اما کلید خصوصی یا همان Private Key دقیقاً همان کلید واقعی و فیزیکی هست که در جیب شماست و این قفلها رو باز میکنه.

نکته طلایی و امنیتی که مدیران سایتها باید حتماً رعایت کنن این هست: کلید عمومی رو میتونین به هر سروری بدین، اما کلید خصوصی (فایل id_rsa بدون پسوند) رو باید مثل ناموس خودتون حفظ کنین! این فایل نباید دست هیچکس بیفته یا روی سایتهای آپلود فایل قرار بگیره; چون هر کسی این فایل رو داشته باشه، بدون نیاز به هیچ پسوردی صاحب تامالاختیار سرور شما میشه.
آموزش غیرفعال کردن کامل ورود با پسورد به سرور (بمب امنیت لینوکس)
تا الان کاری کردیم که خودتون بتونین بدون پسورد وارد بشین، اما هکرها هنوز میتوانند با حدس زدن پسورد روت (حملات Brute Force) به سرورتون حمله کنن. برای اینکه امنیت سرور رو به ۱۰۰ برسانید، باید کلاً قابلیت ورود با پسورد رو غیرفعال کنین تا سرور فقط و فقط با کلید SSH باز بشه. برای این کار دستور زیر رو بزنین تا فایل تنظیمات باز بشه:
nano /etc/ssh/sshd_config

در این فایل بگردین و عبارت PasswordAuthentication رو پیدا کنین. مقدار جلوی اون رو از yes به no تغییر بدین (اگر اول خط علامت # هست حتماً پاکش کنین). فایل رو ذخیره کنین و با دستور systemctl restart ssh سرویس رو ریستارت کنین. مراقب باشین قبل از مطمئن شدن از کارکرد کلیدتون، این کار رو انجام ندین تا پشت درهای سرور بمانید!
چطور با استفاده از نرمافزار Putty در ویندوز با SSH Key وارد سرور شویم؟
درسته که پاورشل ویندوز ۱۰ عالیه، اما خیلی از مدیران سایتها هنوز عاشق نرمافزار قدیمی و محبوب Putty هستن. این نرمافزار فرمت استاندارد کلیدهای لینوکس رو قبول نمیکنه و باید اول کلیدتون رو به فرمت PPK تبدیل کنین. برای این کار برنامه PuttyGen رو باز کنین، روی دکمه Load کلیک کنین و فایل کلید خصوصی خودتون رو انتخاب کنین.

بعد از اینکه کلید رو شناسایی کرد، روی دکمه Save private key کلیک کنین تا کلید مخصوص Putty ساخته بشه. حالا کافیه نرمافزار اصلی Putty رو باز کنین، از منوی کناری به مسیر Connection > SSH > Auth برین و فایل کلید ساخته شده رو معرفی کنین. حالا به محض زدن دکمه Open، بدون نیاز به پسورد وارد سرور میشین.
نحوه اتصال آسان به سرور با SSH Key در نرمافزارهای مدیریت فایل (مثل FileZilla و WinSCP)
مدیران سایتهای وردپرسی مدام برای جابهجایی فایلهای سنگین، قالبها و افزونهها با نرمافزارهای FTP سر و کار دارن. برای اینکه هر دفعه نیازی به وارد کردن مشخصات سرور نباشه، میتونین کلید SSH رو مستقیم در برنامههایی مثل FileZilla ست کنین. برای این کار وارد تنظیمات نرمافزار بشین و از بخش SFTP گزینه Add keyfile را بزنین.

کلید خصوصی خودتون رو به برنامه معرفی کنین. حالا موقع ساخت یک سایت جدید در بخش Site Manager، کافیه پروتکل رو روی SFTP بذارین و نوع لاگین (Logon Type) رو در حالت Key File تنظیم کنین. با این کار، مدیریت فایلهای روت سرور و وردپرس براتون فوقالعاده سریع و امن میشه.

مدیریت چندین سرور با کلیدهای مختلف به کمک فایل Config در ویندوز و مک
اگر کارتون توسعه پیدا کنه و مثل ما مدیر چندین سرور مجازی و اختصاصی برای سایتهای مختلف بشین، حفظ کردن آیپـیها و مدیریت کلیدهای مختلف واقعاً سخت میشه. راهکار حرفهای این هست که در سیستم خودتون (پوشه ssh.) یک فایل متنی بدون پسوند به نام config بسازین و مشخصات سرورها رو اینجوری درش بنویسید:
Host mihanwp
HostName 192.168.1.50
User root
IdentityFile ~/.ssh/id_rsa
حالا از این به بعد نیازی نیست بنویسین ssh root@192.168.1.50; کافیه در ترمینال یا پاورشل سیستم خودتون فقط تایپ کنین ssh mihanwp و اینتر بزنین تا ویندوز هوشمندانه آیپـی، نام کاربری و کلید مخصوص به اون سرور رو شناسایی کنه و زیر یک ثانیه شما رو متصل کنه.
چطور کلیدهای SSH گمشده یا قدیمی را از روی سرور لینوکس پاک کنیم؟
فرض کنین لپتاپ شما یا یکی از کارمندانتون دزدیده شده، یا اینکه یک پشتیبان سرور استخدام کرده بودین و حالا مأموریتش تموم شده و میخواین دسترسیاش رو کاملاً قطع کنین. تمام کلیدهایی که اجازه ورود به سرور رو دارن در یک فایل به نام authorized_keys ذخیره میشن. برای مدیریت و پاک کردن کلیدهای قدیمی، دستور زیر رو در سرور بزنین:
nano ~/.ssh/authorized_keys
در این فایل، هر کلید در یک خط کاملاً مجزا قرار گرفته هست. کافیه با دکمههای جهتنما روی خط مربوط به کلید آن شخص بروید و کل آن خط رو کاملاً پاک کنین. در نهایت فایل رو ذخیره کنین و خارج بشین. به محض پاک کردن خط، دسترسی آن سیستم برای همیشه از سرور شما قطع میشه.
آموزش تغییر پورت پیشفرض SSH برای بالا بردن امنیت سرور وردپرسی
پورت پیشفرض برای اتصال به تمامی سرورهای لینوکسی در دنیا عدد ۲۲ هست. هکرها و رباتهای مخرب مدام در حال اسکن کردن این پورت روی آیپـیهای مختلف هستن تا راههای نفوذ رو پیدا کنن. یک راهکار فوقالعاده هوشمندانه این هست که این پورت رو به یک عدد ۵ رقمی دلخواه (مثلاً ۵۴۹۸۲) تغییر بدین. برای این کار مجدداً فایل تنظیمات اصلی رو باز کنین:
nano /etc/ssh/sshd_config

خط مربوط به Port 22 رو پیدا کنین، علامت # اولش رو بردارین و عددش رو به مقدار دلخواه خودتون تغییر بدین. بعد از ذخیره و ریستارت کردن سرویس SSH، از این به بعد موقع اتصال با ترمینال باید حتماً پورت جدید رو هم به سیستم نشون بدید، یعنی دستور اتصال شما به این شکل تغییر پیدا میکنه:
ssh root@ip -p 54982
با همین یک کار ساده، جلوی ۹۹ درصد حملات رباتها رو میگیرین.
جمعبندی و نتیجهگیری
در نهایت، استفاده از کلیدهای SSH به جای رمز عبورهای سنتی، یکی از هوشمندانهترین و حرفهایترین کارهایی هست که میتونید برای بالا بردن امنیت سرور سایتتون انجام بدید. با این روش نه تنها سرعت ورودتون به ترمینال و نرمافزارهای مدیریت فایل مثل فایلزیلا چند برابر میشه، بلکه با بستن کامل قابلیت ورود با پسورد و تغییر پورت پیشفرض سرور، عملاً راه نفوذ رباتهای مخرب و هکرها رو برای همیشه میبندید؛ چون هیچ هکری نمیتونه قفلی رو که کلید فیزیکی و اختصاصی اون فقط در سیستم شما ذخیره شده، باز کنه یا حدس بزنه.
یادتون باشه که ورود به دنیای لینوکس و مدیریت سرور اختصاصی، یک قدم بزرگ برای تبدیل شدن به یک وبمستر همهفنحریف و مستقل هست؛ دقیقاً مثل کاری که ما در میهنوردپرس انجام دادیم تا کنترل ۱۰۰ درصد اطلاعات و امنیت سایتمون دست خودمون باشه. فقط همیشه این نکته طلایی رو همیشه بهیاد داشته باشید که کلید خصوصی یا همان فایل Private Key شما، حکم سند مالکیت سرورتون رو داره؛ پس ازش به شدت مراقبت کنید، همیشه یک سیستم بکآپگیری روزانه روی هاست داشته باشید و با مدیریت صحیح کلیدها، با خیال راحت روی توسعه و افزایش بازدید سایتتون تمرکز کنید.
شاد و سربلند باشید! 🙂
برای ارسال نظر لطفا ابتدا ثبتنام کنید یا وارد شوید.