ممکن است شما نیز هنگام تلاش برای زدن SSH به یک سرور ریموت Ubuntu 20.04 LTS، با اخطار WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED روبه‌رو شده باشید. در این آموزش، چگونگی رفع این خطا ارائه شده است.

 

فرض کنید، دستور زیر را وارد می‌نمایید:

$ ssh ostechnix@192.168.225.52

و خروجی زیر را دریافت می‌کنید:

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@    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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:K/jEKNQCYYOilJxOZc7qAWlu4xu0nW+MD09DfJL7+gc.
Please contact your system administrator.
Add correct host key in /home/sk/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/sk/.ssh/known_hosts:11
  remove with:
  ssh-keygen -f "/home/sk/.ssh/known_hosts" -R "192.168.225.52"
ECDSA host key for 192.168.225.52 has changed and you have requested strict checking.
Host key verification failed.

 

این مطلب نیز ممکن است برای شما مفید باشد: ویرایش فایل های ریموت با Vim در لینوکس

 

این در واقع پیام خطا نیست؛ بلکه تنها یک هشدار امنیتی است که نشان می‌دهد، کلید میزبان ECDSA برای آن سیستم ریموت نسبت به آخرین اتصال شما تغییر کرده است.

همانطور که می‌دانید، وقتی برای اولین بار از طریق SSH از یک سیستم محلی به یک سیستم ریموت دسترسی پیدا می‌کنید، یک اثر انگشت برای کلید ECDSA ارسال شده توسط آن میزبان ریموت در فایل HOME/.ssh/known_hosts$ در سیستم محلی شما ذخیره و نگهداری می‌شود.

هنگامی‌که شناسه (اثر انگشت) پس از نصب مجدد سیستم ریموت تغییر می‌کند؛ یا یک آدرس IP مشابه برای چندین سیستم ریموت اختصاص می‌یابد، پیام اخطار فوق نشان داده می‌شود.

به منظور رفع این مشکل کافیست، با استفاده از دستور زیر، کلید ذخیره شده برای آدرس IP را در سیستم محلی حذف نمایید:

$ ssh-keygen -R 192.168.225.52

خروجی اجرای این دستور به صورت زیر خواهد بود:

# Host 192.168.225.52 found: line 11
/home/sk/.ssh/known_hosts updated.
Original contents retained as /home/sk/.ssh/known_hosts.old

 

شما همچنین می‌توانید، به طور صریح مسیر فایل known_hosts را با پرچم f- بصورت زیر مشخص کنید.

$ ssh-keygen -f "/home/sk/.ssh/known_hosts" -R "192.168.225.52"

دستور فوق، کلیه کلیدهای متعلق به میزبان ریموت را از فایل known_hosts سیستم محلی حذف می‌نماید. سپس محتویات قدیمی فایل known_hosts در فایلی با نام known_hosts.old نگهداری می‌شوند.

اگر از پورت SSH مختلف استفاده می‌کنید، لازم است بصورت زیر به صراحت آن را ذکر نمایید:

$ ssh-keygen -R 192.168.225.52:1234

در اینجا، 1234 شماره پورت SSH است. آن را با شماره پورت SSH واقعی خود جایگزین کنید.

 

پس از حذف کلیدها، با استفاده از دستور زیر، مجدداً به سیستم ریموت خود SSH بزنید:

$ ssh ostechnix@192.168.225.52

عبارت yes را تایپ کرده و برای افزودن کلید میزبان ریموت در سیستم محلی خود، ENTER را بزنید:

The authenticity of host '192.168.225.52 (192.168.225.52)' can't be established.
ECDSA key fingerprint is SHA256:K/jEKNQCYYOilJxOZc7qAWlu4xu0nW+MD09DfJL7+gc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.225.52' (ECDSA) to the list of known hosts.
ostechnix@192.168.225.52's password:

اکنون می‌توانید از طریق SSH به سیستم ریموت خود دسترسی پیدا کنید.

 

 

منبع:

ostechnix