بلاگ/راه‌حل‌های رفع خطای عدم مجوّز دسترسی SSH
به‌روز شده

راه‌حل‌های رفع خطای عدم مجوّز دسترسی SSH

خطای عدم مجوّز دسترسی SSH زمانی پدیدار می‌شود که تنظیمات مجوّز در سرور SSH دست‌کاری شده باشند. معمولاً این موضوع ناشی از نصب یک بسته جدید و ایجاد کاربران تازه برای سیستم است. در این آموزش، نحوه مقابله با خطای عدم مجوز دسترسی SSH و ارتباط دوباره با سرور SSH را بررسی می‌کنیم. پیش‌نیازها کلاینت...

1399/12/234278 بازدید
راه‌حل‌های رفع خطای عدم مجوّز دسترسی SSH
خطای عدم مجوّز دسترسی SSH زمانی پدیدار می‌شود که تنظیمات مجوّز در سرور SSH دست‌کاری شده باشند. معمولاً این موضوع ناشی از نصب یک بسته جدید و ایجاد کاربران تازه برای سیستم است. در این آموزش، نحوه مقابله با خطای عدم مجوز  دسترسی SSH و ارتباط دوباره با سرور SSH را بررسی می‌کنیم.

پیش‌نیازها

  • کلاینت SSH در سیستم محلی و سرور SSH در سیستم ریموت
  • حساب کاربری برای دسترسی به سرور ریموت (برای ورود بر اساس کلمه عبور)
  • یک حساب کاربری با دسترسی sudo یا روت

چه چیزی باعث خطای عدم مجوّز دسترسی SSH می‌شود؟

خطای عدم مجوّز دسترسی SSH در هنگام ورود به سرور به صورت زیر نمایش داده می‌شود.
php
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
نمایش خطای عدم مجوّز دسترسی SSH در زمان ورود به سرور
نمایش خطای عدم مجوّز دسترسی SSH در زمان ورود به سرور
پس از عبارت پیغام خطا، در داخل پرانتزها روش‌های تأییدیه به کار رفته برای شروع ارتباط ذکر شده‌اند. این خطا احتمال می‌دهد که کلید عمومی مشکل‌ساز شده است؛ موضوعی که ممکن است گمراه‌کننده باشد. یکی از دلایل این خطا را احتمالاً باید در فایل تنظیمات سرورSSH، یعنی sshd_config جستجو کرد. احتمال دیگر فایل authorized_keys است که شاید حاوی مجوّزهای لازم نباشد. این فایل متشکل از لیست کلیدهای عمومی برای کلاینت‌های دارای مجوّز ورود SSH به سرور است. بر این اساس، اگر سیستم نتوانست نتواند فایل را به‌درستی بخواند منجر به خطای عدم مجوّز دسترسی SSH می‌شود.

نحوه رفع خطای دسترسی SSH

هر دو راه‌حل ارائه شده در اینکه دارای مراحلی برای انجام در سرور هستسند. بنابراین باید کار را باز کردن ترمینال در سررو آغاز کنید و یکی از دو راه‌حل زیر را دنبال نمایید.

راه‌حل شماره ۱: فعال‌سازی تأیید کلمه عبور

اگر قصد استفاده از یک کلمه عبور برای دسترسی به سرور SSH را دارید، بایستی بدانید که یکی از راه‌های مقابله با خطای عدم‌مجوّز دسترسی SSH، فعال‌سازی کلمه‌عبور در فایل sshd_config است. برای این منظور، فایل را در یک ویرایشگر متنی باز کنید. در اینجا از برنامه nano برای این منظور استفاده می‌کنیم.
php
sudo nano /etc/ssh/sshd_config
در این فایل، خط PasswordAuthentication را پیدا کرده و حتماً انتهای آن را به yes تنظیم می‌کنیم. سپس گزینه ChallengeResponseAuthentication را با افزودن کلمه no غیرفعال می‌کنیم. اگر خطوط به صورت کامنت یا توضیح بودند، آنها را با حذف علامت # از این حالت خارج کنید.
ویرایش فایل shhd_config برای فعال‌سازی پسورد برای رفع خطای عدم مجوّز دسترسی SSH
ویرایش فایل shhd_config برای فعال‌سازی پسورد برای رفع خطای عدم مجوّز دسترسی SSH
حالا فایل را ذخیره کرده و ببندید. نهایتاً سرویس SSH را با کمک فرمان زیر دوباره راه‌اندازی نمایید.
php
sudo systemctl restart sshd

راه‌حل شماره ۲: تغییر مجوّز‌های فایل سیستم

ورود مبتنی بر کلمه عبور به عنوان روش تأییدیه SSH، به دلیل نگرانی‌های امنیتی که ایجاد می‌کند توصیه نمی‌شود. بر این اساس، راه‌حل زیر که روش تأیید کلید عمومی را درنظر می‌گیرد، پیشنهاد می‌گردد. برا این منظور، ابتدا فایل sshd_config را با کمک یک ویرایشگر متنی باز کنید.
php
sudo nano /etc/ssh/sshd_config
در این فایل، گزینه‌های زیر را به این صورت تنظیم کنید.
php
PermitRootLogin noPubkeyAuthentication yes
ویرایش فایل shhd_config برای فعال‌سازی تأیید کلید عمومی
ویرایش فایل shhd_config برای فعال‌سازی تأیید کلید عمومی
نکته: در مراحلی که ذکر  شد، بیشترین سطح امنیتی درنظر گرفته است. در صورتی که نیاز به ورود کاربری روت دارید، خطوط مربوطه را با مقدار yes تنظیم کنید. با اضافه کردن علامت هشتگ به ابتدای خطوط مربوط به GSSAPI، آنها را به حالت کامنت دربیاورید.
php
#GSSAPIAuthentication yes#GSSAPICleanupCredentials no
ویرایش فایل shhd_config برای ایجاد حالت کامنت گزینه‌های GSSAPI
ویرایش فایل shhd_config برای ایجاد حالت کامنت گزینه‌های GSSAPI
همچنین، حتماً خط UsePAM را با مقدار yes تنظیم کنید.
php
UsePAM yes
ویرایش فایل shhd_config برای فعال‌سازی UsePAM
ویرایش فایل shhd_config برای فعال‌سازی UsePAM
فایل را ذخیره کرده و سرویس sshd را دوباره راه‌اندازی کنید.
php
systemctl restart sshd
حالا به سراغ فولدر خانگی خود بروید و مجوّزها را بررسی کنید.
php
ls -ld
بررسی مجوّزهای فولدر خانگی
بررسی مجوّزهای فولدر خانگی
اگر مجوزّهای owner شما برای خواندن، نوشتن و اجرا  تنظیم نشده‌اند، با استفاده از فرمان chmod آنها را تغییر دهید.
php
chmod 0700 /home/
حالا به فولدر .ssh بروید و دوباره مجوّزها را بررسی کنید.
php
ls -ld
بررسی مجوّزهای فولدر .ssh
بررسی مجوّزهای فولدر .ssh
این فولدر بایستی دارای مجوّزهای خواندن، نوشتن و اجرا برای مالک فایل‌ها باشد. برای اِعمال این مجوّزها، دوباره از فرمان chmod استفاده کنید.
php
chmod 0700 /home/your_home/.ssh
فولدر .ssh حاوی فایل authorized_keys است. با کمک فرمان زیر، مجوّزهای آن را بررسی کنید.
php
ls –ld authorized_keys
بررسی مجوّزهای فایل authorized_keys
بررسی مجوّزهای فایل authorized_keys
مالک فایل باید مجوّزهای خواندن و نوشتن فایل را داشته باشد. برای تنظیم این مجوّزها داریم:
php
chmod 0600 /home//.ssh/authorized_keys
اکنون سعی کنید با جفت کلیدها وارد شوید. خروجی می‌بایست نشان‌دهنده یک ورود موفقیت‌آمیز باشد.
ورود موفق پس از رفع خطای عدم مجوّز دسترسی SSH
ورود موفق پس از رفع خطای عدم مجوّز دسترسی SSH

جمع‌‌بندی

در این آموزش، به مراحل لازم برای مواجهه با خطای عدم مجوّز دسترسی SSH پرداختیم. با تکمیل این مراحل، می‌توانید بدون هیچ مشکلی، دوباره از طریق SSH به سرور خود وارد شوید. امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد.