مقدمه
استفاده از پروتکل SSH یک کانال امن را روی یک شبکه ناامن در معماری سرویس گیرنده-سرور فعال می کند و یک کلاینت SSH را با یک سرور SSH متصل می کند. ایجاد یک مجموعه کلید SSH یک کلید عمومی و یک کلید خصوصی را در اختیار شما قرار می دهد. می توانید کلید عمومی را روی یک سرور قرار دهید و سپس با کلاینتی که کلید خصوصی مربوطه را دارد به آن متصل شوید. اگر کلیدهای عمومی و خصوصی SSH مطابقت داشته باشند، بدون نیاز به رمز عبور وارد سیستم خواهید شد.
این به طور کلی امن ترین و راحت ترین روش اتصال است.
این راهنما نحوه پیکربندی کلیدهای SSH را در دستگاه محلی خود برای اتصالات ایمن به سرورهای راه دور توضیح می دهد.
پیش نیازها
- دسترسی به کنترل پنل OVHcloud
- یک سرور اختصاصی یا یک VPS در حساب OVHcloud شما
- یک برنامه کلاینت SSH (خط فرمان یا رابط کاربری گرافیکی)
- دسترسی اداری (sudo) از طریق SSH به سرور شما
این راهنما برای نصب ویندوز سرور استاندارد قابل اجرا نیست زیرا آنها برای اتصالات به پروتکل دسکتاپ از راه دور (RDP) متکی هستند. اتصالات SSH برای حالت نجات OVHcloud استفاده می شود. می توانید اطلاعات بیشتری را در بخش Go more این راهنما بیابید.
ایجاد یک جفت کلید SSH
دستورالعمل های زیر دو روش استفاده از کلیدهای SSH را پوشش می دهد:
- ایجاد یک جفت کلید Open SSH و اتصال به سرور از سرویس گیرنده خط فرمان SSH
- ایجاد یک جفت کلید PuTTY و اتصال به سرور از سرویس گیرنده PuTTY SSH
میتوانید از هر دو روش در کنار هم استفاده کنید، اما به خاطر داشته باشید که PuTTY فایلهای کلیدی را در قالب خاصی ذخیره میکند که باعث میشود آنها با فایلهای کلیدی SSH ایجاد شده با کلاینت Open SSH ناسازگار باشند. این بدان معنی است که یک کلید خصوصی ایجاد شده با سرویس گیرنده خط فرمان SSH باید ابتدا به فرمت PuTTY تبدیل شود و بالعکس.
ایجاد یک جفت کلید SSH از خط فرمان
از رایانه Mac یا دستگاهی با سیستم عامل لینوکس نصب شده، برنامه خط فرمان (ترمینال) را باز کنید.
بررسی کنید که پوشه ای به نام .ssh در پوشه $HOME خود دارید. اگر پوشه وجود ندارد، آن را ایجاد کنید:
mkdir ~/.ssh
در سیستم عامل ویندوز فعلی، Command Prompt را با تایپ “cmd” در نوار جستجو باز کنید (یا PowerShell را از منو باز کنید).
به دایرکتوری .ssh برای کاربر فعال ویندوز خود بروید (به طور پیش فرض: C:\Users\WindowsUsername\.ssh):
cd .ssh
برای ایجاد یک کلید RSA 4096 بیتی از دستور زیر استفاده کنید:
ssh-keygen -b 4096
استفاده از گزینه -t با این دستور به شما امکان می دهد یک روش رمزگذاری متفاوت را مشخص کنید، به عنوان مثال:
ssh-keygen -t ed25519 -a 256
خط فرمان از شما می خواهد که کلید جدید ایجاد شده را در فایل استاندارد ذخیره کنید:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
میتوانید با Enter تأیید کنید که نام فایل پیشنهادی را بپذیرید یا نام فردی را وارد کنید. اگر بیش از یک جفت کلید در دایرکتوری .ssh قرار داده شود، این موضوع مرتبط است. می توانید اطلاعات بیشتری در مورد این موضوع در بخش مدیریت کلیدهای چندگانه SSH بیابید.
این مثال از نام های استاندارد فایل id_rsa و id_rsa.pub استفاده می کند.
در اعلان بعدی می توانید از کلید SSH خود با یک عبارت عبور محافظت کنید. این برای امنیت بیشتر توصیه می شود.
دسترسی از راه دور به سرور شما فقط به اندازه دستگاه مشتری که کلید خصوصی را ذخیره می کند امن است. بنابراین هنگام استفاده از کلیدهای SSH، محافظت از دستگاه و فایلهای شما در برابر دسترسی غیرمجاز بسیار مهم است.
برای راحتی و اهداف امنیتی، از یک مدیر رمز عبور در دستگاه خود استفاده کنید، مانند راه حل منبع باز KeePass.
تمام کلیدهای SSH باید در پوشه .ssh ذخیره شوند. فایل های کلید عمومی دارای .pub به نام فایل خواهند بود.
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MRk+Y0zCOoOkferhkTvMpcMsYspj212lK7sEauNap user@hostname
The key's randomart image is:
+---[RSA 4096]----+
| .. o |
| . .= o |
| o o X |
|. . . . |
|. .=.o .S. |
| =o.o. . . |
|o + . . o .. |
|.. . . oEoo . |
|o. .o+oo |
+----[SHA256]-----+
برای مشاهده و صادر کردن کلید عمومی خود، از دستور cat در فایل کلید pub. خود استفاده کنید. رشته کامل کلید را در کلیپ بورد کپی کنید تا بعداً آن را به سرور خود اضافه کنید.
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8teh2NJ42qYZV98gTNhumO1b6rMYIkAfRVazl
k6dSS3xf2MXJ4YHsDacdjtJ+evXCFBy/IWgdkFtcvsGAMZ2N1RdvhDyQYcy6NDaJCBYw1K6Gv5fJ
SHCiFXvMF0MRRUSMneYlidxUJg9eDvdygny4xOdC6c1JrPrSgOc2nQuKeMpOoOWLINIswg1IIFVk
kFMPrFivP8Z6tidzVpAtbr1sXmJGZazYWrU3FoK2a1sF1zEWrmlMOzX81zEWrmlMOzX8CpZW8Rae
i4ANmLy7NULWK36yU0Rp9bFJ4o0/4PTkZiDCsK0QyHhAJXdLN7ZHpfJtHIPCnexmwIMLfIhCWhO5
user@hostname
در ترمینال MacOS میتوانید از دستورات pbcopy و pbpaste برای مدیریت سریعتر رشتههای کلیدی استفاده کنید. به عنوان مثال، از این دستور برای کپی کردن کلید از فایل id_rsa.pub در کلیپ بورد استفاده کنید:
pbcopy < ~/.ssh/id_rsa.pub
در سیستم عامل ویندوز، می توانید فایل را با برنامه Notepad از File Explorer باز کنید (روی فایل کلیک راست کرده و Open with را انتخاب کنید) یا از یکی از دستورات زیر استفاده کنید (در \Users\WindowsUsername\.ssh):
cmd
more id_rsa.pub
powershell
cat id_rsa.pub
رشته کامل کلید را در کلیپ بورد کپی کنید تا بعداً آن را به سرور خود اضافه کنید.
استفاده از کلیپ بورد
هنگام کار از یک خط فرمان ویندوز، با کلیک راست، محتوای کلیپ بورد خود را در پنجره خط فرمان قرار دهید. برای کپی کردن یک رشته از پنجره خط فرمان، آن را برجسته کنید، سپس Enter را فشار دهید. همچنین می توانید این عملکردها را از طریق کلیک راست بر روی نوار منو پیدا کنید.
ایجاد یک جفت کلید SSH با PuTTY
PuTTY یک نرم افزار کلاینت منبع باز SSH با رابط کاربری گرافیکی است که برای ویندوز و سایر سیستم عامل ها در دسترس است. این یک نرم افزار همراه برای ایجاد کلیدهای SSH ارائه می دهد: PuTTY Key Generator (PuTTYgen).
هدف اصلی PuTTY مدیریت اتصالات SSH از دستگاه سرویس گیرنده ویندوز به سرور گنو/لینوکس است. PuTTY فایلهای کلیدی را در قالب خاصی ذخیره میکند که باعث میشود آنها با فایلهای کلیدی SSH ایجاد شده با کلاینت Open SSH که بهطور بومی در اکثر سیستمعاملهای مدرن موجود است، ناسازگار باشند.
در صورت لزوم، کلیدهای تولید شده از خط فرمان همانطور که در بالا توضیح داده شد می توانند به فرمت PPK تبدیل شوند تا از آنها با مشتری PuTTY استفاده شود. برای راحتترین استفاده از کلیدهای SSH، یک گزینه را انتخاب کنید و به آن پایبند باشید (کلیدهای خصوصی SSH یا کلیدهای خصوصی PuTTY).
اگر قبلاً نصب نشده است (لیست برنامه های خود را بررسی کنید یا از عملکرد جستجو استفاده کنید)، PuTTY را از وب سایت رسمی دانلود کنید. بسته نصب استاندارد توصیه شده حاوی PuTTYgen است اما به عنوان یک فایل مستقل در وب سایت نیز موجود است.
PuTTYgen را باز کنید و یک الگوریتم رمزگذاری پشتیبانی شده را انتخاب کنید. این مثال از RSA استفاده می کند. 4096 را به عنوان تعداد بیت ها در گوشه پایین سمت راست وارد کنید، سپس بر روی دکمه Generate کلیک کنید.
نشانگر ماوس خود را آزادانه در ناحیه زیر نوار پیشرفت حرکت دهید:
وقتی نوار پیشرفت پر شد، کلید آماده است.
رشته کامل کلید را در کلیپ بورد کپی کنید تا آن را به سرور خود اضافه کنید. با کلیک بر روی دکمههای مربوطه، هر دو کلید را بهعنوان فایل ذخیره کنید و برای محافظت از آنها یک عبارت عبور وارد کنید.
دسترسی از راه دور به سرور شما فقط به اندازه دستگاه مشتری که کلید خصوصی را ذخیره می کند امن است. بنابراین هنگام استفاده از کلیدهای SSH، محافظت از دستگاه و فایلهای شما در برابر دسترسی غیرمجاز بسیار مهم است.
برای راحتی و اهداف امنیتی، از یک مدیر رمز عبور در دستگاه خود استفاده کنید، مانند راه حل منبع باز KeePass.
یکی از مزایای استفاده از PuTTY امکان ذخیره اتصالات مختلف به عنوان Sessions است. اطلاعات بیشتر را در زیر در بخش مدیریت چندین کلید SSH در دستگاه محلی خود بیابید.
می توانید در راهنماهای «شروع به کار» و در معرفی SSH ما درباره اتصالات SSH اطلاعات بیشتری کسب کنید.
اضافه کردن کلیدهای SSH به سرور شما
انتقال کلیدهای عمومی ایجاد شده بر روی سیستم های مبتنی بر GNU/Linux، MacOS یا BSD
اگر جفتهای کلید SSH خود را روی یک سیستم مبتنی بر گنو/لینوکس، MacOS یا BSD ایجاد کردهاید، میتوانید از دستور ssh-copy-id برای اضافه کردن کلیدهای عمومی به سرور خود استفاده کنید.
ابزار ssh-copy-id کلیدهای عمومی را در فایل ~/.ssh/authorized_keys در سرور راه دور مشخص شده کپی می کند و در صورت لزوم فایل را به طور خودکار در این فهرست ایجاد می کند.
ssh-copy-id user@IP_ADDRESS
بهطور پیشفرض، ssh-copy-id سعی میکند همه کلیدهای عمومی را داخل فهرست ~/.ssh کاربر محلی شما منتقل کند. برای افزودن یک کلید عمومی، می توانید این فایل کلید را با گزینه -i و سپس مسیر فایل مشخص کنید:
ssh-copy-id -i ~/.ssh/KeyFileName user@IP_ADDRESS
مثال:
ssh-copy-id -i ~/.ssh/VPS_rsa.pub [email protected]
رمز عبور کاربر از شما خواسته می شود. در صورت موفقیت آمیز بودن فرآیند، پیامی مشابه تصویر زیر دریافت خواهید کرد.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@server-ip'"
and check to make sure that only the key(s) you wanted were added.
اگر به جای آن یک پیام خطا دریافت کردید، همیشه می توانید کلیدهای عمومی خود را به صورت دستی با دنبال کردن مراحل توضیح داده شده در زیر اضافه کنید.
به عنوان بهترین روش و به دلایل امنیتی، یک جفت کلید نباید توسط چندین کاربر استفاده شود. از آنجایی که هر کاربر در سیستمهای گنو/لینوکس فایل autorized_keys خود را در ~/.ssh/ دارد، میتوانید از دستور ssh-copy-id همانطور که در بالا نشان داده شده است استفاده کنید و پس از ایجاد جفت کلید، KeyFileName و کاربر را تطبیق دهید.
افزودن کلیدهای عمومی به سرور به صورت دستی
به سرور خود متصل شوید و مطمئن شوید که در دایرکتوری $HOME کاربر خود هستید. پوشه .ssh را ایجاد کنید (اگر وجود ندارد):
mkdir ~/.ssh
برای ذخیره کلید برای کاربر فعلی، فایل authorized_keys را با ویرایشگر متن دلخواه خود باز کنید (یا ایجاد کنید) (نانو در این مثال استفاده شده است):
nano ~/.ssh/authorized_keys
کلید عمومی خود را در این فایل قرار دهید. فایل را ذخیره کرده و از ویرایشگر خارج شوید. سرور خود را مجددا راه اندازی کنید (sudo reboot) یا فقط سرویس OpenSSH را با یکی از دستورات زیر راه اندازی مجدد کنید (دستور مناسب ممکن است بسته به سیستم عامل شما متفاوت باشد):
sudo systemctl restart ssh
sudo systemctl restart sshd
برای اطمینان از اینکه کلید شما به درستی تنظیم شده است، با دستور زیر به سرور خود متصل شوید. «user» را با نام کاربری که کلیدها برای آن ایجاد شدهاند و «IP_ADDRESS» را با آدرس IP (یا نام میزبان) سروری که میخواهید به آن دسترسی داشته باشید، جایگزین کنید:
ssh user@IP_ADDRESS
مثال:
اضافه کردن کلیدهای عمومی اضافی به سرور شما
برای افزودن کلیدهای SSH برای سایر کاربرانی که به سرور شما دسترسی دارند، مراحل ایجاد کلید را تکرار کنید، اما از پوشه $HOME مناسب یا دایرکتوری Windows Users کاربر مورد نظر برای ایجاد و ذخیره کلیدهای SSH (یا اجرای دستورات در دستگاه اختصاصی این شخص) استفاده کنید. . سپس کلید عمومی جدید را همانطور که در بالا توضیح داده شد در authorized_keys به سرور اضافه کنید.
حذف کلیدهای عمومی از سرور شما
فایل authorized_keys را همانطور که در بالا توضیح داده شد باز کنید و رشته کلید مربوط به کاربر را که دسترسی او لغو شده است را حذف کنید.
فایل را ذخیره کرده و از ویرایشگر خارج شوید.
مدیریت چندین کلید SSH در دستگاه محلی شما
ممکن است بخواهید از چندین جفت کلید SSH برای اتصال به هاست های راه دور مختلف استفاده کنید. (اگر از PuTTY استفاده می کنید، به بخش مربوطه در زیر بروید.)
از آنجایی که همه کلیدها باید در پوشه .ssh دستگاه محلی شما قرار گیرند، نام فایل ها باید متفاوت باشد. هنگامی که یک جفت کلید جدید ایجاد می کنید و از شما خواسته می شود نام فایل را ارائه دهید، نام دلخواه خود را وارد کنید. برای مثال آن را با نام سرور خود مطابقت دهید.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): KeyFileName_rsa
Your identification has been saved in /home/user/.ssh/KeyFileName_rsa.
Your public key has been saved in /home/user/.ssh/KeyFileName_rsa.pub.
هنگام اتصال به سرور مربوطه، علاوه بر مشخصات کاربر و سرور، نام فایل کلید را نیز مشخص کنید:
ssh -i ~/.ssh/KeyFileName user@IP_ADDRESS
مثال:
ssh -i ~/.ssh/myVPS_rsa [email protected]
همانطور که در بخشهای قبلی ذکر شد، دستورالعملهای مشابه روی کلاینت ویندوز کار میکنند. فقط ~/ را با مسیر فایل پوشه کاربر ویندوز خود جایگزین کنید، به طور پیش فرض C:\Users\WindowsUsername\. (مثال: ssh -i C:\Users\Username\.ssh/myVPS_rsa [email protected])
با استفاده از فایل “config”.
جایگزینی برای اضافه کردن گزینه -i در هر بار ویرایش فایلی به نام config در داخل پوشه ~/.ssh (\Users\Username\.ssh برای ویندوز) است. می توانید از آن برای پیکربندی جزئیات برای اتصالات مختلف (نام کاربری، پورت، فایل کلید، پارامترهای اختیاری و غیره) استفاده کنید.
اگر این فایل در داخل .ssh وجود داشته باشد، احتمالاً قبلاً حاوی اطلاعاتی است. بسته به محیط کاری خود، ابتدا یک نسخه پشتیبان از نسخه اصلی ایجاد کنید.
نمونه ای از محتوای پوشه .ssh:
ls ~/.ssh/
config id_rsa id_rsa.pub known_hosts known_hosts.old
با فایل پیکربندی، چندین اتصال SSH را می توان به همراه پارامترهای جداگانه آنها، علاوه بر مقادیر استاندارد، ذخیره کرد. استفاده از پتانسیل کامل این فایل می تواند پیچیده شود، زیرا برای کاربران با تجربه ای که به طور منظم چندین سرور را مدیریت می کنند بسیار مفید است.
در زیر یک مثال ساده برای توضیح نحوه پیکربندی اتصال SSH به VPS آورده شده است.
فایل را باز کنید و خطوط زیر را در بالا اضافه کنید:
Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa
سپس می توانید با نام مستعاری که به عنوان Host تعریف کرده اید به VPS متصل شوید:
ssh ubuntu@vps
فقط IP سرور و فایل کلید در مثال قبلی مشخص شد اما جزئیات بیشتری را می توان اضافه کرد. برای پیکربندی اتصال SSH به سرور دوم با نام کاربری “rocky”، پورت SSH تغییر یافته “49160” و کلید خصوصی در فایل “myserver_rsa”، محتوای فایل را همانطور که در این مثال نشان داده شده است گسترش دهید:
Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa
Host dedicated_server
HostName 203.0.113.101
User rocky
Port 49160
IdentityFile ~/.ssh/myserver_rsa
سپس می توانید با وارد کردن زیر به این سرور متصل شوید:
ssh dedicated_server
برای اطلاعات بیشتر می توانید صفحه مرد مربوطه را مطالعه کنید.
استفاده از PuTTY
اگر دستورالعملهای بخش ایجاد یک جفت کلید SSH با PuTTY و افزودن کلیدهای SSH به سرور خود را دنبال کردهاید، یک جفت کلید دارید که میتوانید از آن برای اتصال به سرور خود استفاده کنید.
PuTTY می تواند اعتبارنامه ها و پارامترهای یک اتصال SSH را به عنوان Session ذخیره کند. این همچنین شما را قادر می سازد تا با استفاده از کلیدهای جداگانه به سرورهای مختلف متصل شوید.
PuTTY را باز کنید و زیربخش SSH را در منوی سمت چپ باز کنید، سپس روی Auth and Credentials کلیک کنید.
بر روی دکمه Browse کلیک کنید و فایل کلید خصوصی PuTTY (keyfile.ppk) را از پوشه ای که در آن ذخیره کرده اید انتخاب کنید.
فایل کلید اکنون با جلسه SSH فعلی مرتبط است. در منوی سمت چپ به Session بروید و اعتبار ورود به سیستم خود را برای سرور وارد کنید (username@IPv4_address).
یک نام برای این اتصال در قسمت Saved Sessions وارد کنید و روی Save کلیک کنید تا به لیست اضافه شود.
از این پس می توانید روی این آیتم Session کلیک کرده و یک اتصال به سرور خود را باز کنید. برای تست آن بر روی Open کلیک کنید. اگر فایل کلید را با عبارت عبور محافظت کرده اید، باید آن را در این مرحله وارد کنید.
برای پیکربندی اتصال سرور دیگر، مراحل را تکرار کنید:
- جفت کلید را ایجاد کنید.
- کلید عمومی را به سرور خود اضافه کنید.
- جزئیات سرور را وارد کنید و فایل کلید را در PuTTY اضافه کنید.