شما ممکن است تا به حال هنگام اتصال اس اس اچ به سرور با خطای عدم شناسایی توسط سرور مقصد برخورد کرده باشید. عموما منشا ثابتی برای بروز این خطا وجود ندارد. ممکن است شما در سیستم شخصی خود تغییراتی داده باشید و یا اینکه در معرض یک حمله man-in-the-middle یا مرد میانی قرار گرفته باشید. در هر یک از این حالات و یا حالت های مشابه شما به خطایی مشابه تصویر زیر برخورد خواهید داشت:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Please contact your system administrator. Add correct host key in /home/scott/.ssh/known_hosts to get rid of this message. Offending key in /home/scott/.ssh/known_hosts:15 RSA host key for 1.2.3.4 has changed and you have requested strict checking. Host key verification failed. |
برای رفع این مشکل شما میبایست کلید یا کلیدهای مربوط به هاست مورد نظر خود را از روی فایل known_hosts پاک کنید.
نکته: توجه داشته باشید که اگر سیستم شما مورد حمله مرد میانی باشد باید با مدیریت هاست خود در تماس باشید. اما اگر مشکل بوجود آمده یک مورد امنیتی نباشد گره رفع این خطا در سیستم کلاینت(مبتنی بر یونیکس) شما باز خواهد شد.
روش های حل مشکل
برای این کار راههای زیادی وجود دارد که ما به سه روش آن اشاره میکنیم:
۱) حذف تمامی کلیدهای مربوط به هاست مقصد از روی سیستم و مشخصا از فایل known-hosts مربوط به یوزر خود:
1 |
ssh-keygen -R [your domain name or IP address] |
در دستور ذکر شده باید از سوئیچ R- جهت حذف تمامی کلیدهای مربوط به هاست مقصد از روی کلاینت خود استفاده کنید.
۲) حذف تنها کلید مربوط به هاستی که باعث بروز خطا شده از روی سیستم خود و مشخصا از فایل known-hosts مربوط به یوزر خود:
1 2 |
sed -i '15d' ~/.ssh/known_hosts perl -pi -e 's/\Q$_// if ($. == 15);' ~/.ssh/known_hosts |
در این روش شما با استفاده از دستورات پیش فرض لینوکس میتوانید اقدام به حذف کلیدی باشید که باعث بروز خطا شده است.
توجه داشته باشید که دستورات بالا را میبایست به ترتیب وارد کنید و عدد “۱۵” اشاره شده در دستورات میبایست متناسب با پیغام خطای شما تغییر کند. بعوان مثال اگر به پیغام خطای نمونه ای که در بالا آورده شده است توجه کنید(نمونه ی زیر نمایانگر شماره خطی ست که خطا در آن رخ داده است)، میتوانید مشکل را رفع نمائید.
1 |
Offending key in /home/scott/.ssh/known_hosts:15 |
۳) روش سوم نادیده گرفتن کلید اس اس اچ(ssh key) هنگام برقراری ارتباط ssh می باشد که طبیعتا این روش ی درمان موقت خواهد بود:
1 |
ssh -o 'StrictHostKeyChecking no' user@ipaddress |
در این روش شما برای ارتباط خود در همان لحظه کلید ssh را نادیده گرفته و میبایست هنگام برقراری ارتباط، رمز عبور سرور خود را وارد نمائید.