محتوای آموزشی وبلاگ نتآرام
هنگام اجرای
apt update در اوبونتو، پیام NO_PUBKEY میبینید و فهرست یکی از مخزنها بهروز نمیشود. این پیام معمولاً یعنی apt نتوانسته با کلید مورد انتظار امضای اطلاعات آن مخزن را تأیید کند. ممکن است کلید وجود نداشته باشد، مسیر آن اشتباه باشد، مخزن کلید تازهای معرفی کرده باشد یا تنظیمات دو منبع با هم ناسازگار باشند.بررسی امضا بخشی از زنجیره اعتماد بستههاست. اجرای دستور با گزینههای «نادیدهگرفتن امضا» یا واردکردن کلید تصادفی فقط برای ناپدیدکردن هشدار، مشکل امنیتی ایجاد میکند. ابتدا مخزن واقعی و کلید معتبر همان ناشر را شناسایی میکنیم.
قدم اول: پیام کامل و نسخه سیستم را ثبت کنید
به سرور اوبونتوی متعلق به خودتان با SSH یا کنسول وارد شوید. قبل از تغییر مخزن، وضعیت پشتیبان و سیاست بهروزرسانی سرور فعال را در نظر بگیرید. این دستور نسخه سیستم را نشان میدهد:
کد / دستورcat /etc/os-release
نام نسخه و codename را یادداشت کنید؛ مثلاً تنظیم مخزن نسخهای دیگر ممکن است برای سیستم شما مناسب نباشد. سپس دستور زیر را اجرا کنید و خروجی را بخوانید:
کد / دستورsudo apt update
این فرمان فهرست بستهها را تازه میکند و خودِ آن به معنی ارتقای همه بستهها نیست. در پیام خطا نام یا نشانی مخزن و شناسهای که بعد از NO_PUBKEY آمده را پیدا کنید. اگر خطا درباره DNS، زمان انتظار، قفل dpkg یا گواهی HTTPS است، لزوماً مشکل کلید امضا نیست. راهنمای قفل apt و dpkg به مسئله متفاوت قفل میپردازد.
خروجی مخازن خصوصی میتواند نام کاربری، نشانی داخلی یا اطلاعات حساس داشته باشد؛ پیش از ارسال آن را پالایش کنید. شناسه کوتاه کلید در پیام خطا بهتنهایی هویت ناشر را ثابت نمیکند و نباید هر کلیدی با همان انتها را از منبع ناشناس پذیرفت.
قدم دوم: منبع خطادار و تنظیم کلید را پیدا کنید
فهرست فایلهای تنظیم مخازن را ببینید:
کد / دستورls -l /etc/apt/sources.list /etc/apt/sources.list.d/
در نسخههای جدید ممکن است فایلهایی با پسوند
.sources و در تنظیم قدیمیتر فایلهای .list داشته باشید. نبود فایل اصلی در بعضی پیکربندیها بهتنهایی خطا نیست. فایل مربوط به همان نشانیِ دیدهشده در پیام خطا را با یک نمایشگر فقطخواندنی، مانند cat، بخوانید. فایلها ممکن است حاوی تنظیم دسترسی خصوصی باشند؛ آنها را در چت عمومی منتشر نکنید.در قالب قدیمی، گزینه
signed-by میتواند در همان خط مخزن قرار داشته باشد. در قالب جدید ممکن است خطی با نام Signed-By: و مسیر فایل یا حتی کلید جاسازیشده ببینید. مسیر مشخص میکند apt از کدام کلید برای همان منبع استفاده کند. اگر دو ورودی برای یک مخزن با تنظیم امضای متفاوت تعریف شدهاند، خطا میتواند از تعارض باشد؛ قبل از حذف یا غیرفعالکردن هر ورودی، مالک و کاربرد آن را مشخص و از فایل پشتیبان بگیرید.اگر مسیر کلید مشخص است، وجود و مجوز خواندن آن را بدون نمایش محتوا بررسی کنید. برای مثال، فقط زمانی که فایل واقعی شما همین مسیر است:
کد / دستورls -l /etc/apt/keyrings/docker.asc
این مسیر نمونه مربوط به مخزن رسمی Docker است، نه کلید تمام مخازن. اگر
No such file دیدید، فایل در آن مسیر وجود ندارد؛ اگر مسیر دیگری در تنظیم شما آمده، همان مسیر را بررسی کنید. فرمت و پسوند فایل نیز باید با نسخه apt و مستند ناشر سازگار باشد. مسیر اشتباه را با ایجاد فایل خالی «درست» نکنید.قدم سوم: کلید را از ناشر همان مخزن بگیرید
به مستند رسمی ناشری بروید که نام دامنه و مخزن آن در خروجی خطا آمده است. درباره تغییر کلید، نسخه اوبونتو، آدرس معتبر و اثرانگشت کامل کلید راهنمای همان ناشر را بخوانید. اثرانگشت را تا حد امکان از مسیر مستقل و معتبر مقایسه کنید؛ اگر هویت کلید را نمیتوانید تأیید کنید، افزودن آن را متوقف کنید.
برای مثال، اگر مشکل واقعاً مربوط به مخزن رسمی Docker برای Ubuntu است و تنظیم
کد / دستورSigned-By شما به /etc/apt/keyrings/docker.asc اشاره میکند، مستند نصب رسمی Docker منبع کلید و ساختار فایل را معرفی میکند. برای دریافت یک نسخه آزمایشی در پوشه موقت، مدیر مجاز میتواند اجرا کند:curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /tmp/docker-key-check.asc
gpg --show-keys --with-fingerprint /tmp/docker-key-check.asc
فرمان اول کلید عمومی را با اتصال HTTPS در فایل موقت ذخیره میکند و دومی اطلاعات و اثرانگشت آن را نشان میدهد. دریافت موفق از URL بهتنهایی جای مقایسه هویت و بررسی راهنمای جاری ناشر را نمیگیرد. اگر
curl یا gpg موجود نیست، از بستههای رسمی و روال مدیریتشده سیستم استفاده کنید؛ از خاموشکردن بررسی گواهی برای دانلود کلید بپرهیزید.پس از تأیید منبع و اثرانگشت، و فقط اگر همین مسیر و فرمت در تنظیم مخزن شما موردنیاز است، نسخه قبلی فایل کلید را در محل امن نگه دارید. سپس میتوانید نسخه تأییدشده را با مجوز قابل خواندن برای apt در مسیر درست قرار دهید:
کد / دستورsudo install -m 0644 /tmp/docker-key-check.asc /etc/apt/keyrings/docker.asc
اگر پوشه وجود ندارد، مسیر و راهنمای ناشر را بررسی و پیش از نصب با
sudo install -m 0755 -d /etc/apt/keyrings آن را بسازید. فرمان install میتواند فایل موجود را جایگزین کند، پس پشتیبان و بررسی مسیر پیش از اجرا ضروری است. اگر منبع شما از فایل باینری .gpg، کلید بستهبندیشده یا مسیر دیگری استفاده میکند، این نمونه را روی آن کپی نکنید؛ دستور و فرمت درست همان ناشر را به کار ببرید. این مراحل Docker را نصب یا بهروزرسانی نمیکنند.اگر خطا مربوط به مخزن اصلی اوبونتو است
کلید رسمی اوبونتو با کلید مخزن شخص ثالث یکی نیست. فایل منبع، نسخه سیستم و بسته رسمی
ubuntu-keyring را با مستند امنیتی اوبونتو تطبیق دهید. اگر کلید بسته رسمی آسیب دیده یا قدیمی است، از مسیر رسمی و قابل اعتماد همان نسخه برای بازیابی بسته کلید استفاده کنید. نصب کلید Docker یا یک کلید تصادفی مشکل مخزن Ubuntu را حل نمیکند.اگر مخزن شخص ثالث دیگر استفاده نمیشود، مدیر میتواند پس از شناسایی وابستگیها، آن ورودی مشخص را مطابق قالب فایل و سیاست سیستم غیرفعال کند و نتیجه را بسنجد. این کار بسته نصبشده را بهخودیخود حذف نمیکند، ولی ممکن است بهروزرسانی امنیتی آن نرمافزار را متوقف کند. پاککردن همه فایلهای منبع یا همه کلیدهای سیستم راهحل نیست.
قدم پایانی: دوباره بهروزرسانی فهرست را بیازمایید
پس از اصلاح،
sudo apt update را دوباره اجرا کنید و ببینید خطای همان منبع برطرف شده است. هر هشدار جدید یا خطای منبع دیگر را جداگانه بخوانید. موفقشدن یک مخزن تضمین نمیکند همه مخازن سالماند. سپس پیش از هر ارتقای واقعی، بستههای پیشنهادی، سازگاری سرویس و زمان مناسب را بررسی کنید.اگر مشکل باقی است، نام نسخه اوبونتو، نشانی عمومی مخزن، نام فایل تنظیم، مسیر کلید و متن خطای پالایششده را به مدیر فنی بدهید. هرگز گزینه
trusted=yes یا غیرفعالکردن بررسی امضا را بهعنوان تعمیر دائمی انتخاب نکنید؛ راهنمای apt-secure نقش کلید و Signed-By را شرح میدهد. مشخصات سرور مجازی ایران نتآرام نیز در صفحه سرویس در دسترس است.برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
