ایجاد SSH Key در Ubuntu؛ آموزش ساخت و استفاده از کلید SSH

اتصال به سرور از طریق SSH یکی از روشهای اصلی مدیریت سیستمهای لینوکسی است. در حالت معمول، کاربر برای ورود به سرور نام کاربری و رمز عبور خود را وارد میکند؛ اما استفاده از کلید SSH (SSH Key) روش امنتر و مناسبی برای احراز هویت است. در این روش به جای ارسال رمز عبور، یک جفت کلید رمزنگاریشده برای شناسایی کاربر استفاده میشود.
در این مقاله نحوه ایجاد کلید SSH در اوبونتو، اضافه کردن کلید عمومی به سرور و اتصال به سرور با استفاده از آن را بررسی میکنیم. همچنین با تفاوت کلید خصوصی و عمومی، محل ذخیره آنها و نکات مهم برای محافظت از کلید خصوصی آشنا میشویم.
SSH Key چیست و چگونه کار میکند؟
کلید SSH معمولا از یک جفت کلید شامل کلید خصوصی (Private Key) و کلید عمومی (Public Key) تشکیل میشود. این دو کلید بهصورت ریاضی با یکدیگر مرتبط هستند، اما کاربرد یکسانی ندارند. کلید عمومی روی سرور قرار میگیرد و کلید خصوصی باید فقط در اختیار صاحب آن باقی بماند.
هنگام برقراری اتصال، سرور وجود کلید عمومی مربوط به حساب کاربری را بررسی میکند. اگر کاربر کلید خصوصی متناظر را در اختیار داشته باشد، فرایند احراز هویت انجام میشود و نیازی به وارد کردن رمز عبور حساب سرور نیست.
این ساختار باعث میشود بتوان بدون ارسال رمز عبور از طریق شبکه، هویت کاربر را تایید کرد. البته امنیت این روش به نگهداری صحیح کلید خصوصی وابسته است؛ زیرا هر فردی که به کلید خصوصی دسترسی داشته باشد، در صورت فراهم بودن شرایط لازم میتواند برای احراز هویت در سرور از آن استفاده کند.
پیشنیازهای ایجاد کلید SSH در Ubuntu
ابزارهای لازم برای ساخت کلید SSH معمولا بهصورت پیشفرض در نسخههای جدید اوبونتو در دسترس هستند. برای بررسی وجود ابزار ssh-keygen میتوانید ترمینال را باز کنید و دستور زیر را اجرا کنید:
ssh-keygen -V
اگر دستور در سیستم شما موجود باشد، اطلاعات مربوط به نسخه یا نحوه استفاده از آن نمایش داده میشود. در بیشتر نصبهای استاندارد اوبونتو نیازی به نصب نرمافزار جداگانه برای ایجاد کلید نیست.
آموزش ایجاد SSH Key در Ubuntu
برای ساخت کلید SSH، از ابزار ssh-keygen استفاده میشود. این ابزار امکان تولید انواع مختلف کلیدهای مورد استفاده در SSH را فراهم میکند.
برای ایجاد یک کلید جدید، دستور زیر را اجرا کنید:
ssh-keygen -t ed25519
در این دستور، گزینه -t نوع کلید را مشخص میکند و ed25519 الگوریتم مورد استفاده است. Ed25519 یکی از گزینههای مناسب و مدرن برای استفاده عمومی از SSH است و در نسخههای جدید OpenSSH پشتیبانی میشود.
پس از اجرای دستور، اوبونتو از شما میخواهد محل ذخیره کلید را مشخص کنید. معمولا مسیر پیشنهادی به شکل زیر است:
/home/username/.ssh/id_ed25519
اگر کلید دیگری با همین نام در این مسیر وجود نداشته باشد، میتوانید با فشردن Enter از مسیر پیشفرض استفاده کنید. در غیر این صورت، باید مشخص کنید که کلید جدید با نام دیگری ذخیره شود یا کلید قبلی جایگزین شود.
تعیین Passphrase برای کلید SSH
در مرحله بعد، سیستم از شما میخواهد یک عبارت عبور (Passphrase) برای کلید تعیین کنید. این عبارت عبور از خود کلید خصوصی محافظت میکند و بهتر است برای آن یک مقدار مناسب انتخاب کنید.
میتوانید کلید را بدون عبارت عبور نیز ایجاد کنید، اما در این حالت اگر فایل کلید خصوصی به دست فرد دیگری برسد، لایه محافظتی اضافی مربوط به Passphrase وجود نخواهد داشت. بنابراین برای سیستمهای شخصی و محیطهایی که امنیت اهمیت دارد، استفاده از Passphrase توصیه میشود.
پس از تکمیل مراحل، معمولا دو فایل در پوشه .ssh ایجاد میشود:
~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
فایل اول کلید خصوصی و فایل دوم کلید عمومی است.
تفاوت کلید خصوصی و عمومی
کلید خصوصی مهمترین بخش این جفت کلید است و نباید در اختیار افراد دیگر قرار بگیرد. این فایل معمولا بدون پسوند .pub ذخیره میشود؛ برای مثال:
~/.ssh/id_ed25519
در مقابل، کلید عمومی دارای پسوند .pub است و میتوان آن را روی سرور قرار داد:
~/.ssh/id_ed25519.pub
کلید عمومی بهتنهایی برای ورود به سرور کافی نیست و انتشار آن مشکلی ایجاد نمیکند. با این حال، کلید خصوصی باید با دقت محافظت شود و نباید از طریق پیامرسان، ایمیل یا روشهای ناامن برای دیگران ارسال شود.
برای مشاهده کلید عمومی میتوانید از دستور زیر استفاده کنید:
cat ~/.ssh/id_ed25519.pub
خروجی این دستور یک خط طولانی است که معمولا با ssh-ed25519 شروع میشود. این همان مقداری است که باید در تنظیمات حساب کاربری سرور قرار گیرد.
اضافه کردن SSH Key به سرور
پس از ساخت کلید، باید کلید عمومی را به سروری که قصد اتصال به آن را دارید اضافه کنید. سادهترین روش، استفاده از دستور ssh-copy-id است؛ البته این ابزار باید روی سیستم شما در دسترس باشد.
فرض کنید نام کاربری سرور root و آدرس آن 192.0.2.10 باشد. دستور زیر کلید عمومی را به حساب کاربری موردنظر اضافه میکند:
ssh-copy-id root@192.0.2.10
در اولین استفاده، معمولا رمز عبور حساب کاربری سرور از شما درخواست میشود. پس از وارد کردن رمز عبور، کلید عمومی در فایل authorized_keys مربوط به حساب کاربری قرار میگیرد.
اگر ssh-copy-id روی سیستم شما وجود نداشته باشد، میتوانید کلید عمومی را به روش دستی نیز اضافه کنید. برای این کار ابتدا محتوای کلید عمومی را با دستور cat مشاهده و آن را کپی کنید. سپس در سرور، فایل مربوط به کلیدهای مجاز کاربر را باز کنید:
nano ~/.ssh/authorized_keys
کلید عمومی را در یک خط جدید قرار دهید و فایل را ذخیره کنید. پوشه .ssh و فایل authorized_keys باید مجوزهای مناسبی داشته باشند تا سرویس SSH بتواند آنها را بهدرستی استفاده کند.
اتصال به سرور با SSH Key
پس از قرار گرفتن کلید عمومی روی سرور، میتوانید با دستور معمول SSH به آن متصل شوید:
ssh root@192.0.2.10
اگر کلید خصوصی در مسیر پیشفرض قرار داشته باشد، SSH معمولا آن را بهصورت خودکار پیدا میکند. در صورتی که کلید را با نام یا مسیر دیگری ذخیره کرده باشید، میتوانید مسیر آن را با گزینه -i مشخص کنید:
ssh -i ~/.ssh/my_server_key root@192.0.2.10
اگر برای کلید خصوصی Passphrase تعیین کرده باشید، هنگام استفاده از آن باید عبارت عبور را وارد کنید.
استفاده از ssh-agent برای مدیریت کلید
اگر از چند کلید SSH استفاده میکنید یا نمیخواهید Passphrase کلید خصوصی را در هر اتصال وارد کنید، میتوانید از ssh-agent استفاده کنید. این سرویس کلید خصوصی را در طول نشست کاربر مدیریت میکند و امکان استفاده از آن را بدون وارد کردن مکرر Passphrase فراهم میکند.
برای اجرای عامل SSH میتوانید از دستور زیر استفاده کنید:
eval "$(ssh-agent -s)"
سپس کلید خصوصی خود را به آن اضافه کنید:
ssh-add ~/.ssh/id_ed25519
پس از وارد کردن Passphrase، کلید در اختیار ssh-agent قرار میگیرد و در اتصالهای بعدی میتوان از آن استفاده کرد.
تنظیم دسترسیهای کلید SSH
دسترسیهای فایل کلید خصوصی باید محدود باشد. برای تغییر مجوز آن میتوانید از دستور زیر استفاده کنید:
chmod 600 ~/.ssh/id_ed25519
این تنظیم باعث میشود فقط مالک فایل امکان خواندن و نوشتن آن را داشته باشد. برای کلید عمومی محدودیت مشابهی وجود ندارد، اما پوشه .ssh نیز بهتر است با مجوز مناسب نگهداری شود.
chmod 700 ~/.ssh
رعایت این مجوزها علاوه بر افزایش امنیت، از بروز خطاهای مربوط به دسترسی در OpenSSH نیز جلوگیری میکند.
اگر کلید SSH کار نکرد چه کنیم؟
اگر بعد از اضافه کردن کلید همچنان سرور رمز عبور درخواست میکند، ابتدا مطمئن شوید کلید عمومی به حساب کاربری صحیح اضافه شده است. همچنین بررسی کنید که کلید عمومی بهصورت کامل و در یک خط داخل فایل authorized_keys قرار گرفته باشد.
مسیر کلید خصوصی نیز باید درست باشد. اگر از مسیر پیشفرض استفاده نمیکنید، هنگام اتصال مسیر دقیق آن را با گزینه -i مشخص کنید.
برای بررسی جزئیات فرایند اتصال نیز میتوانید SSH را در حالت verbose اجرا کنید:
ssh -v root@192.0.2.10
در این حالت اطلاعات بیشتری درباره مراحل برقراری اتصال و احراز هویت نمایش داده میشود و میتوان متوجه شد که مشکل در کدام مرحله رخ داده است.
نکات امنیتی مهم هنگام استفاده از SSH Key
مهمترین نکته این است که کلید خصوصی را مانند یک رمز عبور بسیار حساس در نظر بگیرید. این فایل نباید روی سرورهای عمومی، مخازن کد یا سرویسهای اشتراک فایل قرار گیرد. همچنین ارسال مستقیم کلید خصوصی برای فرد دیگر روش مناسبی برای واگذاری دسترسی نیست.
استفاده از Passphrase یک لایه امنیتی اضافی ایجاد میکند. در این حالت حتی اگر فایل کلید خصوصی از روی سیستم شما کپی شود، برای استفاده از آن همچنان به عبارت عبور نیاز خواهد بود.
اگر احتمال میدهید کلید خصوصی در اختیار فرد دیگری قرار گرفته است، نباید صرفا فایل را از سیستم خود حذف کنید. باید کلید عمومی مربوط به آن را از فایل authorized_keys سرور نیز حذف کنید و در صورت نیاز یک جفت کلید جدید بسازید.
مدیریت چند کلید برای سرورهای مختلف
در صورت مدیریت چند سرور مجازی لینوکسی، بهتر است برای سرویسها یا محیطهای حساس از کلیدهای جداگانه استفاده کنید. این کار باعث میشود در صورت افشای یک کلید، نیازی به تغییر دسترسی تمام سرورها نباشد.
همچنین میتوانید کلیدهای مختلف را با نامهای مشخص در پوشه .ssh ذخیره و هنگام اتصال، کلید موردنظر را با گزینه -i انتخاب کنید.
استفاده از SSH Key؛ روشی امنتر برای مدیریت سرور
ایجاد کلید SSH در اوبونتو فرایند پیچیدهای نیست و ابزار ssh-keygen تمام مراحل اصلی تولید کلید را در اختیار کاربر قرار میدهد. پس از ساخت جفت کلید، کافی است کلید عمومی را روی سرور قرار دهید تا بتوانید بدون ارسال رمز عبور، احراز هویت را انجام دهید.
با این حال، امنیت این روش به حفاظت از کلید خصوصی وابسته است. انتخاب Passphrase مناسب، تنظیم مجوزهای صحیح فایل، استفاده از کلیدهای جداگانه برای سرورهای مختلف و حذف کلیدهای بلااستفاده، اقداماتی ساده هستند که میتوانند امنیت دسترسی SSH را به شکل قابل توجهی افزایش دهند.
سوالات متداول
SSH Key یک روش احراز هویت برای اتصال امن به سرور از طریق SSH است که به جای رمز عبور از یک جفت کلید خصوصی و عمومی استفاده میکند.
با اجرای دستور ssh-keygen -t ed25519 در ترمینال میتوان یک کلید SSH جدید ایجاد کرد. پس از اجرای دستور، مسیر ذخیره کلید و Passphrase از شما پرسیده میشود.
در حالت پیشفرض، کلید خصوصی در فایل ~/.ssh/id_ed25519 ذخیره میشود و نباید آن را در اختیار افراد دیگر قرار دهید.
در صورت پیکربندی و نگهداری صحیح، احراز هویت با کلید SSH میتواند امنیت بیشتری نسبت به استفاده از رمز عبور داشته باشد؛ بهخصوص اگر برای کلید خصوصی یک Passphrase مناسب تعیین شود.
ابتدا مسیر کلید خصوصی، حساب کاربری، محتوای فایل authorized_keys و مجوزهای دسترسی را بررسی کنید. همچنین میتوانید اتصال را با گزینه -v اجرا کنید تا اطلاعات بیشتری درباره علت خطا نمایش داده شود.




























شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.