در این مقاله، به شما آموزش داده می‌شود که چگونه خطای "sign_and_send_pubkey: signing failed: agent refused operation Permission denied (publickey)" مربوط به ssh را در لینوکس رفع کنید.

 

در برخی مواقع زمانی که می‌خواهید از طریق SSH به سرور ریموت خود متصل شوید، ممکن است با خطای permission denied (رد شدن مجوز) روبرو شوید. این خطا ممکن است به دلایل مختلفی اتفاق افتاده و نحوه رفع آن نیز وابسته به دلایل آن متفاوت است.

 

این مطلب نیز ممکن است برای شما مفید باشد: اجرای ادامه یک فرایند یا دستور پس از قطع نشست SSH

 

فرض کنید کلیدهای عمومی و خصوصی‌تان در دسکتاپ اوبونتو 16.04 ذخیره شده است و می‌خواهید آن را به نسخه جدیدتر ارتقا دهید.

بنابراین، ابتدا از پوشه‌های اصلی دایرکتوری home؛ از جمله پوشه ssh. که دارای کلیدهای عمومی و خصوصی برروی دیسک خارجی است، یک نسخه پشتیبان ایجاد می‌نماییم.

پس از نصب، ssh را در اوبونتو 18.04 فعال کرده و همه چیز از جمله کلیدهای ssh را بازیابی می‌کنیم.

 

اکنون، اگر بخواهیم با استفاده از ssh به سرور ریموت متصل شویم، اگرچه یک نسخه از همان کلیدهای عمومی و خصوصی را داریم؛ ولیکن، با خطای ssh زیر رو برو می‌شویم:

sign_and_send_pubkey: signing failed: agent refused operation
root@xxx.xxx.xxx.xx: Permission denied (publickey).

اگر شما نیز در موقعیت مشابهی قرار دارید و کلیدهای ssh خود را از منبع دیگری کپی کرده‌اید، مطالب زیر را دنبال کنید تا چگونگی رفع این خطای ssh را یاد بگیرید.

 

رفع خطای Permission denied (publickey)

همانطور که مشخص شد، مشکل اینجا مربوط به مجوزهای فایل است. وقتی فایل‌ها را کپی کردیم، فرمت فایل USB بصورت FAT مایکروسافت بود. این فایل از مجوزهای فایل UNIX / Linux پشتیبانی نمی‌کند. از این رو، مجوزهای کلیدهای ssh کپی شده به 777 تغییر یافته است.

برای SSH، مجوزهای فایل، آزاد هستند و به سادگی داشتن مجوز 777 برروی کلیدهای عمومی یا خصوصی مجاز نیست. به همین دلیل SSH از برقراری ارتباط بدین صورت خودداری می‌کند.

ls -l .ssh
-rwxrwxrwx 1 abhishek abhishek 1766 Nov 12  2017 id_rsa
-rwxrwxrwx 1 abhishek abhishek  398 Nov 12  2017 id_rsa.pub
-rwxrwxrwx 1 abhishek abhishek 4214 Sep 21 21:39 known_hosts

 

کلید خصوصی باید مجوزهای خواندن و نوشتن را تنها برای کاربر داشته باشد و مجوزهای دیگر را برای گروه کاربر و دیگران نداشته باشد.

بنابراین، شما باید مجوز را با استفاده از دستور chmod تغییر دهید:

chmod 600 ~/.ssh/id_rsa

به طور مشابه، کلید عمومی نباید مجوزهای نوشتن و اجرا را برای گروه و افراد دیگر داشته باشد.

chmod 644 ~/.ssh/id_rsa.pub

اکنون که مجوزهای صحیح را قرار داده‌اید، می‌توانید دوباره به ssh وصل شوید. در اینجا، از شما رمز عبور ادمین‌تان را برای باز کردن کلید می‌خواهد. رمزعبور ادمین خود را وارد کرده و سپس بدون هیچ مشکلی فعالیت خود را در سرور ریموت خود ادامه دهید.

 

 

منبع:

linuxhandbook