استفاده از SSH Key برای ورود بدون پسورد به لینوکس

استفاده از 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 دقیقاً همان کلید واقعی و فیزیکی هست که در جیب شماست و این قفل‌ها رو باز می‌کنه.

کلید عمومی ssh-rsa
کلید عمومی ssh-rsa

نکته طلایی و امنیتی که مدیران سایت‌ها باید حتماً رعایت کنن این هست: کلید عمومی رو می‌تونین به هر سروری بدین، اما کلید خصوصی (فایل id_rsa بدون پسوند) رو باید مثل ناموس خودتون حفظ کنین! این فایل نباید دست هیچکس بیفته یا روی سایت‌های آپلود فایل قرار بگیره; چون هر کسی این فایل رو داشته باشه، بدون نیاز به هیچ پسوردی صاحب تام‌الاختیار سرور شما میشه.

آموزش غیرفعال کردن کامل ورود با پسورد به سرور (بمب امنیت لینوکس)

تا الان کاری کردیم که خودتون بتونین بدون پسورد وارد بشین، اما هکرها هنوز می‌توانند با حدس زدن پسورد روت (حملات Brute Force) به سرورتون حمله کنن. برای اینکه امنیت سرور رو به ۱۰۰ برسانید، باید کلاً قابلیت ورود با پسورد رو غیرفعال کنین تا سرور فقط و فقط با کلید SSH باز بشه. برای این کار دستور زیر رو بزنین تا فایل تنظیمات باز بشه:

nano /etc/ssh/sshd_config
PasswordAuthentication
PasswordAuthentication

در این فایل بگردین و عبارت PasswordAuthentication رو پیدا کنین. مقدار جلوی اون رو از yes به no تغییر بدین (اگر اول خط علامت # هست حتماً پاکش کنین). فایل رو ذخیره کنین و با دستور systemctl restart ssh سرویس رو ریستارت کنین. مراقب باشین قبل از مطمئن شدن از کارکرد کلیدتون، این کار رو انجام ندین تا پشت درهای سرور بمانید!

چطور با استفاده از نرم‌افزار Putty در ویندوز با SSH Key وارد سرور شویم؟

درسته که پاورشل ویندوز ۱۰ عالیه، اما خیلی از مدیران سایت‌ها هنوز عاشق نرم‌افزار قدیمی و محبوب Putty هستن. این نرم‌افزار فرمت استاندارد کلیدهای لینوکس رو قبول نمی‌کنه و باید اول کلیدتون رو به فرمت PPK تبدیل کنین. برای این کار برنامه PuttyGen رو باز کنین، روی دکمه Load کلیک کنین و فایل کلید خصوصی خودتون رو انتخاب کنین.

ذخیره کلیدهای خصوصی و عمومی در نرم‌افزار PuttyGen
ذخیره کلیدهای خصوصی و عمومی در نرم‌افزار PuttyGen

بعد از اینکه کلید رو شناسایی کرد، روی دکمه Save private key کلیک کنین تا کلید مخصوص Putty ساخته بشه. حالا کافیه نرم‌افزار اصلی Putty رو باز کنین، از منوی کناری به مسیر Connection > SSH > Auth برین و فایل کلید ساخته شده رو معرفی کنین. حالا به محض زدن دکمه Open، بدون نیاز به پسورد وارد سرور میشین.

نحوه اتصال آسان به سرور با SSH Key در نرم‌افزارهای مدیریت فایل (مثل FileZilla و WinSCP)

مدیران سایت‌های وردپرسی مدام برای جابه‌جایی فایل‌های سنگین، قالب‌ها و افزونه‌ها با نرم‌افزارهای FTP سر و کار دارن. برای اینکه هر دفعه نیازی به وارد کردن مشخصات سرور نباشه، می‌تونین کلید SSH رو مستقیم در برنامه‌هایی مثل FileZilla ست کنین. برای این کار وارد تنظیمات نرم‌افزار بشین و از بخش SFTP گزینه Add keyfile را بزنین.

اضافه کردن کلید SFTP در فایل زیلا
اضافه کردن کلید SFTP در فایل زیلا

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

اتصال با کلید SFTP در فایل زیلا
اتصال با کلید SFTP در فایل زیلا

مدیریت چندین سرور با کلیدهای مختلف به کمک فایل 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 به 54982
تغییر Port از 22 به 54982

خط مربوط به Port 22 رو پیدا کنین، علامت # اولش رو بردارین و عددش رو به مقدار دلخواه خودتون تغییر بدین. بعد از ذخیره و ریستارت کردن سرویس SSH، از این به بعد موقع اتصال با ترمینال باید حتماً پورت جدید رو هم به سیستم نشون بدید، یعنی دستور اتصال شما به این شکل تغییر پیدا می‌کنه:

ssh root@ip -p 54982

با همین یک کار ساده، جلوی ۹۹ درصد حملات ربات‌ها رو می‌گیرین.

جمع‌بندی و نتیجه‌گیری

در نهایت، استفاده از کلیدهای SSH به جای رمز عبورهای سنتی، یکی از هوشمندانه‌ترین و حرفه‌ای‌ترین کارهایی هست که می‌تونید برای بالا بردن امنیت سرور سایتتون انجام بدید. با این روش نه تنها سرعت ورودتون به ترمینال و نرم‌افزارهای مدیریت فایل مثل فایل‌زیلا چند برابر می‌شه، بلکه با بستن کامل قابلیت ورود با پسورد و تغییر پورت پیش‌فرض سرور، عملاً راه نفوذ ربات‌های مخرب و هکرها رو برای همیشه می‌بندید؛ چون هیچ هکری نمی‌تونه قفلی رو که کلید فیزیکی و اختصاصی اون فقط در سیستم شما ذخیره شده، باز کنه یا حدس بزنه.

یادتون باشه که ورود به دنیای لینوکس و مدیریت سرور اختصاصی، یک قدم بزرگ برای تبدیل شدن به یک وب‌مستر همه‌فن‌حریف و مستقل هست؛ دقیقاً مثل کاری که ما در میهن‌وردپرس انجام دادیم تا کنترل ۱۰۰ درصد اطلاعات و امنیت سایتمون دست خودمون باشه. فقط همیشه این نکته طلایی رو همیشه به‌یاد داشته باشید که کلید خصوصی یا همان فایل Private Key شما، حکم سند مالکیت سرورتون رو داره؛ پس ازش به شدت مراقبت کنید، همیشه یک سیستم بک‌آپ‌گیری روزانه روی هاست داشته باشید و با مدیریت صحیح کلیدها، با خیال راحت روی توسعه و افزایش بازدید سایتتون تمرکز کنید.

شاد و سربلند باشید! 🙂

نظر شما در این مورد چیه؟

گفتگو با تیم فروش سلام! دنبال پاسخ برای سوالات خود هستید؟ ما اینجا آماده کمک به شما هستیم...

در حال بارگذاری مقالات...

پشتیبان گفتگو با تیم فروش
پشتیبان گفتگو با تیم فروش در حال حاضر آفلاین هستیم. لطفاً پیام بگذارید تا در اولین فرصت پاسخ دهیم. آفلاین

در حال بارگذاری...

سوالی درباره محصولات سایت دارید؟ از ما بپرسید.