هشدار چه میگوید
سرور هویت خود را با کلید میزبان اثبات میکند. وقتی کلید با آنچه کلاینت قبلاً ذخیره کرده تفاوت دارد، OpenSSH پیام REMOTE HOST IDENTIFICATION HAS CHANGED را نشان میدهد و اتصال را رد میکند. کلاینت نمیتواند تغییر بیخطر را از حمله تشخیص دهد؛ بنابراین تا زمانی که بررسی نکردهاید، هشدار را حلنشده بدانید.
علتهای رایج
علتهای معمول عبارتاند از نصب مجدد سرور، بازیابی یا همسانسازی یک ماشین مجازی از ایمیج، واگذاری نشانی به دستگاهی دیگر و توزیعکنندهٔ باری که شما را به گرههای متفاوت میفرستد. مهاجمی که اتصال را رهگیری کند نیز همین هشدار را ایجاد میکند. اگر انتظار تغییری نداشتید، متوقف شوید و گذرواژه وارد نکنید.
اثر انگشتها را مقایسه کنید
اثر انگشت واقعی را روی سرور از کانالی بخوانید که به این اتصال SSH وابسته نیست، مانند کنسول ارائهدهنده یا کنسول هایپروایزر. دستور ssh-keyscan فقط آنچه شبکه به شما ارائه میکند نشان میدهد و بهتنهایی چیزی را اثبات نمیکند. تنها کاربرد آن مقایسه با مقداری است که از کنسول گرفتهاید.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh-keyscan -t ed25519 server.example | ssh-keygen -lf -ورودی قدیمی را جایگزین کنید
تنها پس از یکسان بودن اثر انگشتها، ورودی قدیمی را حذف کنید و دوباره متصل شوید. پورت غیراستاندارد ورودی مخصوص خود را دارد که با براکت نوشته میشود. ssh-keygen فایل قبلی را با نام known_hosts.old نگه میدارد. StrictHostKeyChecking را خاموش نکنید و کل فایل known_hosts را حذف نکنید، زیرا با این کار حفاظت از همهٔ سرورهای خود را از بین میبرید.
ssh-keygen -R server.example
ssh-keygen -R '[server.example]:2222'
ssh user@server.exampleپس از نصب مجدد از هشدار جلوگیری کنید
اگر قصد بازسازی سرور را دارید و میخواهید هویتش حفظ شود، از کلیدهای میزبان در /etc/ssh بهصورت امن پشتیبان بگیرید و آنها را با همان مالک و مجوزها بازیابی کنید. برای نسخههای همسانسازیشده برعکس عمل کنید: هر دستگاه ساختهشده از یک ایمیج به کلیدهای میزبان مخصوص خود نیاز دارد؛ وگرنه چند سرور هویت مشترک خواهند داشت.
کلیدهای میزبان در CH-J Server Manager
برنامه اثر انگشتهای SHA-256 کلیدهای میزبان را در خزانهٔ رمزگذاریشدهٔ خود، جدا از فایل known_hosts مربوط به OpenSSH ذخیره میکند. هنگام تغییر، اتصال را مسدود میکند و اثر انگشت شناختهشده و جدید را نشان میدهد. ورودی فقط با تأیید شما جایگزین میشود و لغو کردن چیزی را تغییر نمیدهد. در Alpha 0.1.1 بررسی شامل تکتک میزبانهای واسط نیز میشود و با تغییر کلید، انتقال در حال اجرا متوقف میشود. برنامه نمیتواند اثر انگشت جدید را بهجای شما تأیید کند، پس بررسی از کانالی دیگر همچنان وظیفهٔ شماست.