خطای عدم مجوّز دسترسی SSH زمانی پدیدار میشود که تنظیمات مجوّز در سرور SSH دستکاری شده باشند. معمولاً این موضوع ناشی از نصب یک بسته جدید و ایجاد کاربران تازه برای سیستم است. در این آموزش، نحوه مقابله با خطای عدم مجوز دسترسی SSH و ارتباط دوباره با سرور SSH را بررسی میکنیم.
پیشنیازها
- کلاینت SSH در سیستم محلی و سرور SSH در سیستم ریموت
- حساب کاربری برای دسترسی به سرور ریموت (برای ورود بر اساس کلمه عبور)
- یک حساب کاربری با دسترسی sudo یا روت
چه چیزی باعث خطای عدم مجوّز دسترسی SSH میشود؟
خطای عدم مجوّز دسترسی SSH در هنگام ورود به سرور به صورت زیر نمایش داده میشود.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
پس از عبارت پیغام خطا، در داخل پرانتزها روشهای تأییدیه به کار رفته برای شروع ارتباط ذکر شدهاند. این خطا احتمال میدهد که کلید عمومی مشکلساز شده است؛ موضوعی که ممکن است گمراهکننده باشد.
یکی از دلایل این خطا را احتمالاً باید در فایل تنظیمات سرورSSH، یعنی sshd_config جستجو کرد. احتمال دیگر فایل authorized_keys است که شاید حاوی مجوّزهای لازم نباشد. این فایل متشکل از لیست کلیدهای عمومی برای کلاینتهای دارای مجوّز ورود SSH به سرور است. بر این اساس، اگر سیستم نتوانست نتواند فایل را بهدرستی بخواند منجر به خطای عدم مجوّز دسترسی SSH میشود.
نحوه رفع خطای دسترسی SSH
هر دو راهحل ارائه شده در اینکه دارای مراحلی برای انجام در سرور هستسند. بنابراین باید کار را باز کردن ترمینال در سررو آغاز کنید و یکی از دو راهحل زیر را دنبال نمایید.
راهحل شماره ۱: فعالسازی تأیید کلمه عبور
اگر قصد استفاده از یک کلمه عبور برای دسترسی به سرور SSH را دارید، بایستی بدانید که یکی از راههای مقابله با خطای عدممجوّز دسترسی SSH، فعالسازی کلمهعبور در فایل sshd_config است.
برای این منظور، فایل را در یک ویرایشگر متنی باز کنید. در اینجا از برنامه nano برای این منظور استفاده میکنیم.
sudo nano /etc/ssh/sshd_config
در این فایل، خط PasswordAuthentication را پیدا کرده و حتماً انتهای آن را به yes تنظیم میکنیم.
سپس گزینه ChallengeResponseAuthentication را با افزودن کلمه no غیرفعال میکنیم.
اگر خطوط به صورت کامنت یا توضیح بودند، آنها را با حذف علامت # از این حالت خارج کنید.
حالا فایل را ذخیره کرده و ببندید.
نهایتاً سرویس SSH را با کمک فرمان زیر دوباره راهاندازی نمایید.
sudo systemctl restart sshd
راهحل شماره ۲: تغییر مجوّزهای فایل سیستم
ورود مبتنی بر کلمه عبور به عنوان روش تأییدیه SSH، به دلیل نگرانیهای امنیتی که ایجاد میکند توصیه نمیشود. بر این اساس، راهحل زیر که روش تأیید کلید عمومی را درنظر میگیرد، پیشنهاد میگردد.
برا این منظور، ابتدا فایل sshd_config را با کمک یک ویرایشگر متنی باز کنید.
sudo nano /etc/ssh/sshd_config
در این فایل، گزینههای زیر را به این صورت تنظیم کنید.
PermitRootLogin no PubkeyAuthentication yes
نکته: در مراحلی که ذکر شد، بیشترین سطح امنیتی درنظر گرفته است. در صورتی که نیاز به ورود کاربری روت دارید، خطوط مربوطه را با مقدار yes تنظیم کنید.
با اضافه کردن علامت هشتگ به ابتدای خطوط مربوط به GSSAPI، آنها را به حالت کامنت دربیاورید.
#GSSAPIAuthentication yes #GSSAPICleanupCredentials no
همچنین، حتماً خط UsePAM را با مقدار yes تنظیم کنید.
UsePAM yes
فایل را ذخیره کرده و سرویس sshd را دوباره راهاندازی کنید.
systemctl restart sshd
حالا به سراغ فولدر خانگی خود بروید و مجوّزها را بررسی کنید.
ls -ld
اگر مجوزّهای owner شما برای خواندن، نوشتن و اجرا تنظیم نشدهاند، با استفاده از فرمان chmod آنها را تغییر دهید.
chmod 0700 /home/[your-username]
حالا به فولدر .ssh بروید و دوباره مجوّزها را بررسی کنید.
ls -ld
این فولدر بایستی دارای مجوّزهای خواندن، نوشتن و اجرا برای مالک فایلها باشد. برای اِعمال این مجوّزها، دوباره از فرمان chmod استفاده کنید.
chmod 0700 /home/your_home/.ssh
فولدر .ssh حاوی فایل authorized_keys است. با کمک فرمان زیر، مجوّزهای آن را بررسی کنید.
ls –ld authorized_keys
مالک فایل باید مجوّزهای خواندن و نوشتن فایل را داشته باشد. برای تنظیم این مجوّزها داریم:
chmod 0600 /home/[username]/.ssh/authorized_keys
اکنون سعی کنید با جفت کلیدها وارد شوید. خروجی میبایست نشاندهنده یک ورود موفقیتآمیز باشد.
جمعبندی
در این آموزش، به مراحل لازم برای مواجهه با خطای عدم مجوّز دسترسی SSH پرداختیم. با تکمیل این مراحل، میتوانید بدون هیچ مشکلی، دوباره از طریق SSH به سرور خود وارد شوید. امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد.