فهرست محتوا
مقدمه:
SSH Key یا همان کلید عمومی/خصوصی، یکی از مطمئنترین روشها برای ورود امن به سرورهای مجازی است. اگر شما مدیر یک سایت هستید یا با سرورهای لینوکسی کار میکنید، احتمالاً بارها با چالش ورود امن به سرور مواجه شدهاید. در دنیای امروز که حملات سایبری با سرعت و تنوع بالا در حال گسترشاند، استفاده از رمز عبور دیگر بهتنهایی کافی نیست.
اینجاست که SSH Key بهعنوان جایگزینی بسیار امن و حرفهای وارد میدان میشود. در این مقاله، ابتدا به زبانی ساده توضیح میدهیم که SSH Key چیست، چرا به آن نیاز داریم، چه تفاوتی با رمز عبور دارد، و در نهایت گامبهگام نحوه ساخت، استفاده و مدیریت آن را آموزش خواهیم داد.
چرا امنیت در اتصال به سرور مهم است؟
وقتی شما به یک سرور مجازی (VPS) متصل میشوید، در واقع به قلب وبسایت یا اپلیکیشن خود دسترسی پیدا میکنید. اگر این اتصال ایمن نباشد، مهاجمان میتوانند با حملاتی مثل Brute Force یا شنود اطلاعات (Man-in-the-Middle) وارد سرور شوند و به اطلاعات حیاتی شما دسترسی پیدا کنند. این اتفاق میتواند منجر به سرقت داده، خاموش شدن سرویسها یا حتی باجگیری شود.
راهحل ساده این است که از روشهای امن برای ورود استفاده کنیم؛ یعنی بهجای تایپ رمز عبور، از SSH Key بهره ببریم که نه قابل حدس زدن است و نه روی شبکه قابل شنود.
جایگاه SSH Key در برابر رمز عبور (Password)
رمز عبور، هرچند رایج است، اما معمولاً ضعیف انتخاب میشود و قابل کشف است. حتی اگر از یک رمز قوی استفاده کنید، همچنان ممکن است در معرض حملات دیکشنری یا لو رفتن از طریق بدافزار باشید. در مقابل، SSH Key یک جفت کلید رمزنگاریشده تولید میکند: یکی کلید خصوصی (Private Key) که روی سیستم شما ذخیره میشود و دیگری کلید عمومی (Public Key) که روی سرور قرار میگیرد.
وقتی سعی میکنید به سرور وصل شوید، سیستم شما با استفاده از کلید خصوصی ثابت میکند که شما صاحب کلید عمومی هستید. حتی اگر کسی بخواهد به زور وارد شود، بدون داشتن کلید خصوصی هیچ کاری از پیش نمیبرد. به همین دلیل، SSH Key در دنیای حرفهای، استانداردی برای اتصال امن محسوب میشود.
SSH Key چیست؟
SSH Key یک روش احراز هویت رمزنگاریشده برای ورود امن به سرورهای لینوکسی و مجازی (VPS) است. بهجای وارد کردن دستی رمز عبور، از یک جفت کلید دیجیتال استفاده میشود تا هویت کاربر تأیید شود. این کلیدها بین کاربر و سرور رد و بدل میشوند و تنها در صورتی اتصال برقرار میشود که هر دو کلید با یکدیگر تطابق داشته باشند.
در واقع، SSH Key روشی امنتر، سریعتر و حرفهایتر برای اتصال به سرور است که نهتنها امنیت را افزایش میدهد، بلکه دردسرهای مربوط به رمز عبور را نیز حذف میکند.
تعریف کلید عمومی (Public Key) و کلید خصوصی (Private Key)
یک جفت SSH Key از دو بخش اصلی تشکیل شده است:
- کلید عمومی (Public Key)
این کلید را باید روی سرور قرار دهید. سرور فقط این کلید را نگه میدارد و از آن برای تأیید اتصالها استفاده میکند. کلید عمومی بهتنهایی ارزش امنیتی ندارد و قابل اشتراکگذاری است. -
کلید خصوصی (Private Key)
این کلید فقط روی سیستم شخصی شما باقی میماند و هرگز نباید در اختیار دیگران قرار گیرد. هنگام اتصال به سرور، نرمافزار SSH از این کلید برای رمزگشایی اطلاعات و احراز هویت استفاده میکند.
زمانی که شما با SSH به سرور متصل میشوید، سیستم شما از کلید خصوصی استفاده میکند تا به سرور (که کلید عمومی شما را در اختیار دارد) ثابت کند که شما مالک قانونی این جفت کلید هستید. اگر کلیدها با هم تطابق داشته باشند، اتصال برقرار میشود؛ در غیر اینصورت، سرور اجازه ورود نمیدهد.
مزایای استفاده از SSH Key نسبت به رمز عبور
استفاده از SSH Key بهجای رمز عبور مزایای قابلتوجهی دارد، از جمله:
-
افزایش امنیت
بر خلاف رمز عبور که ممکن است ضعیف باشد یا توسط بدافزارها سرقت شود، SSH Key از رمزنگاری قوی (RSA یا Ed25519) استفاده میکند که عملاً غیرقابل شکستن است. -
محافظت در برابر حملات Brute Force
حتی اگر کسی بارها سعی کند وارد سرور شود، بدون داشتن کلید خصوصی هیچ کاری از پیش نمیبرد. -
ورود بدون نیاز به وارد کردن رمز
پس از تنظیم SSH Key، میتوانید بدون تایپ رمز وارد سرور شوید. این موضوع هم زمان شما را صرفهجویی میکند و هم امنیت را بالا میبرد. -
امکان تعریف سطح دسترسی
میتوانید در سرور برای هر کلید عمومی دسترسی خاصی تعریف کنید یا آن را محدود به آدرس IP خاصی نمایید. -
سازگاری با اتوماسیون
در اسکریپتها و سیستمهای اتوماسیون (مثل CI/CD)، استفاده از SSH Key بهجای رمز عبور امنیت و راحتی بیشتری فراهم میکند.
ساخت کلید SSH در سیستمهای مختلف
برای استفاده از SSH Key در اتصال به سرور مجازی (VPS)، ابتدا باید یک جفت کلید عمومی و خصوصی تولید کنید. این فرآیند تنها چند ثانیه زمان میبرد اما نقش بسیار مهمی در افزایش امنیت دارد.
در ادامه، روش ساخت SSH Key را برای سیستمعاملهای پرکاربرد بررسی میکنیم:
ساخت SSH Key در لینوکس و macOS با دستور ssh-keygen
در سیستمعاملهای لینوکس و macOS، ابزار پیشفرض و داخلی برای ساخت SSH Key، دستور ssh-keygen
است. برای ایجاد کلید، کافیست ترمینال را باز کرده و دستور زیر را وارد کنید:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
توضیح گزینهها:
-
-t rsa
نوع کلید را مشخص میکند. (میتوانید ازed25519
هم استفاده کنید) -
-b 4096
طول کلید را تعیین میکند (هرچه طول بیشتر، امنیت بیشتر) -
-C
یک توضیح برای کلید (معمولاً ایمیل شما)
پس از اجرای دستور، از شما پرسیده میشود که فایل کلید در کجا ذخیره شود. بهطور پیشفرض مسیر زیر پیشنهاد میشود:
/home/youruser/.ssh/id_rsa
سپس میتوانید (اختیاری) برای کلید خود یک passphrase تعریف کنید که در صورت گم شدن کلید خصوصی، همچنان امنیت برقرار بماند.
بعد از پایان مراحل، دو فایل ایجاد میشود:
-
id_rsa
← کلید خصوصی (محرمانه) -
id_rsa.pub
← کلید عمومی (برای قرار دادن روی سرور)
ساخت SSH Key در ویندوز با ابزار PuTTYgen یا WSL
در ویندوز، دو روش پرکاربرد برای ساخت SSH Key وجود دارد:
روش ۱: استفاده از PuTTYgen
-
ابتدا نرمافزار PuTTYgen را نصب و اجرا کنید.
-
در قسمت Key type گزینه
RSA
یاEd25519
را انتخاب کنید. -
روی دکمه Generate کلیک کنید و در حین ساخت، نشانگر موس را در پنجره حرکت دهید.
-
پس از تولید کلید، میتوانید:
-
کلید عمومی را کپی کرده و در فایل
authorized_keys
سرور قرار دهید. -
کلید خصوصی را با فرمت
.ppk
ذخیره کنید.
-
-
همچنین میتوانید یک passphrase برای افزایش امنیت تعیین کنید.
توجه: PuTTY (و WinSCP) از کلیدهای با فرمت
.ppk
پشتیبانی میکند. اگر میخواهید از کلید در OpenSSH (مثلاً در سرور لینوکسی یا GitHub) استفاده کنید، باید کلید را به فرمت OpenSSH تبدیل کنید.
روش ۲: استفاده از WSL (Windows Subsystem for Linux)
اگر WSL را روی ویندوز نصب کردهاید، دقیقاً مانند لینوکس میتوانید از دستور ssh-keygen
استفاده کنید:
ssh-keygen -t ed25519 -C "[email protected]"
مسیر پیشفرض کلید در WSL:
/home/youruser/.ssh/id_ed25519
پس از ساخت کلید، بهسادگی میتوانید از طریق WSL به سرور متصل شوید یا کلید عمومی را به سرور منتقل کنید.
نحوه افزودن SSH Key به سرور مجازی (VPS)
پس از ساخت SSH Key روی سیستم خود، باید کلید عمومی (Public Key) را به سرور مجازی منتقل کنید تا بتوانید بدون نیاز به رمز عبور، بهصورت امن وارد سرور شوید. در این مرحله، شما تنها نیاز دارید کلید id_rsa.pub
یا id_ed25519.pub
(بسته به نوع کلیدی که ساختید) را به فایل مربوطه در سرور اضافه کنید.
دو روش رایج برای افزودن SSH Key به VPS وجود دارد:
روش اول: استفاده از دستور ssh-copy-id
(ساده و سریع)
اگر روی سیستمعامل شما ابزار ssh-copy-id
نصب باشد (معمولاً در لینوکس و macOS موجود است)، میتوانید تنها با یک دستور، SSH Key خود را به سرور منتقل کنید:
ssh-copy-id user@server_ip
توضیح:
-
user
نام کاربری سرور (مثلاً:root
یاubuntu
) -
server_ip
آدرس IP سرور شما
پس از وارد کردن رمز عبور سرور برای آخرین بار، کلید شما در مسیر مناسب قرار میگیرد و دفعه بعد میتوانید بدون رمز به سرور وصل شوید.
روش دوم: انتقال دستی کلید عمومی به سرور
اگر از ویندوز استفاده میکنید یا ssh-copy-id
در دسترس نیست، میتوانید بهصورت دستی این کار را انجام دهید:
-
محتوای کلید عمومی را کپی کنید.
با اجرای دستور زیر، محتوای فایل کلید عمومی را ببینید:cat ~/.ssh/id_rsa.pub
وارد سرور شوید با رمز عبور:
ssh user@server_ip
اگر پوشه
.ssh
وجود ندارد، آن را ایجاد کنید:mkdir -p ~/.ssh chmod 700 ~/.ssh
کلید عمومی را در فایل
authorized_keys
قرار دهید:میتوانید با یک ویرایشگر مثل
nano
یاvi
این کار را انجام دهید:nano ~/.ssh/authorized_keys
-
محتوای کلید را در آن Paste کرده و ذخیره کنید.
-
دسترسیهای فایل را تنظیم کنید:
chmod 600 ~/.ssh/authorized_keys
اتصال تستی بدون رمز را انجام دهید:
ssh user@server_ip
اگر همه مراحل درست باشد، بدون نیاز به رمز عبور وارد سرور خواهید شد.
-
مسیر قرارگیری SSH Key در سرور
در سرورهای لینوکسی، SSH Keyها باید در مسیر زیر قرار بگیرند:
~/.ssh/authorized_keys
این فایل میتواند چندین کلید عمومی را شامل شود، به ازای هر کاربر یا دستگاهی که مجاز به اتصال است. بنابراین شما میتوانید برای هر همکار، سیستم یا پروژهای، یک SSH Key متفاوت اضافه کنید و دسترسیها را کنترل نمایید.
اتصال به سرور با استفاده از SSH Key
پس از ساخت و انتقال SSH Key به سرور، حالا نوبت آن است که با استفاده از این کلید، بدون نیاز به رمز عبور وارد سرور مجازی (VPS) شوید. اتصال با SSH Key نهتنها امنتر است، بلکه سرعت و راحتی بیشتری نسبت به روش سنتی دارد.
در این بخش دو روش مرسوم برای اتصال به سرور با SSH Key را بررسی میکنیم:
اتصال با استفاده از دستور ssh -i
اگر کلید خصوصی شما در محل پیشفرض (~/.ssh/id_rsa
) ذخیره شده باشد، کافیست با یک دستور ساده وارد سرور شوید:
ssh user@server_ip
اما اگر کلید شما در مسیر دیگری قرار دارد یا نام آن متفاوت است، باید از پارامتر -i
برای مشخصکردن مسیر کلید خصوصی استفاده کنید:
ssh -i /path/to/private_key user@server_ip
در این مثال:
-
~/.ssh/myserver_key
← مسیر کلید خصوصی (Private Key) -
root
← نام کاربری روی سرور -
192.168.1.100
← آدرس IP سرور
اگر هنگام ساخت SSH Key، یک passphrase برای آن تنظیم کرده باشید، هنگام اتصال از شما خواسته میشود آن را وارد کنید.
تنظیم فایل ~/.ssh/config
برای سهولت اتصال
اگر با چند سرور کار میکنید یا از کلیدهای مختلف برای پروژههای مختلف استفاده میکنید، بهتر است فایل پیکربندی SSH را ویرایش کنید تا مجبور نباشید هر بار مسیر کلید و اطلاعات را وارد نمایید.
برای این کار:
-
فایل زیر را باز یا ایجاد کنید:
nano ~/.ssh/config
برای هر سرور یک بلاک مانند نمونه زیر اضافه کنید:
Host myserver HostName 192.168.1.100 User root IdentityFile ~/.ssh/myserver_key
توضیح:
-
Host
← نام مستعار برای سرور (هر چیزی میتوانید بگذارید) -
HostName
← آدرس IP یا دامنه سرور -
User
← نام کاربری روی سرور -
IdentityFile
← مسیر کلید خصوصی SSH Key
-
حالا برای اتصال فقط کافیست بنویسید:
-
ssh myserver
این روش برای مدیریت چند سرور، اسکریپتنویسی یا استفاده روزمره بسیار کاربردی است.
استفاده از SSH Key برای اتصال به سرور نهتنها امنیت را افزایش میدهد، بلکه با پیکربندی صحیح میتوانید تجربهای سریع، حرفهای و بدون دردسر از مدیریت سرور داشته باشید. چه از طریق دستور ssh -i
و چه با استفاده از فایل ~/.ssh/config
، روش اتصال کاملاً در اختیار شماست.
افزایش امنیت با SSH Key
استفاده از SSH Key بهتنهایی گام بزرگی در جهت امنسازی اتصال به سرور است. اما اگر بخواهید امنیت را به سطح بالاتری ببرید، میتوانید چند اقدام مهم و کاربردی انجام دهید که در ادامه به آنها میپردازیم.
غیرفعال کردن ورود با رمز (PasswordAuthentication no)
وقتی مطمئن شدید که اتصال با SSH Key روی سرور شما بهدرستی کار میکند، توصیه میشود قابلیت ورود با رمز عبور را بهطور کامل غیرفعال کنید. این کار باعث میشود حتی اگر مهاجمی سعی کند با Brute Force به سرور نفوذ کند، هیچ شانسی برای ورود نداشته باشد.
مراحل:
-
با SSH وارد سرور شوید.
-
فایل تنظیمات SSH را باز کنید:
sudo nano /etc/ssh/sshd_config
مقادیر زیر را پیدا کرده و تغییر دهید:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
سرویس SSH را ریاستارت کنید:
sudo systemctl restart sshd
قبل از اعمال این تنظیمات، حتماً اطمینان حاصل کنید که SSH Key شما روی سرور تنظیم شده و کار میکند، در غیر اینصورت ممکن است دسترسی به سرور را از دست بدهید.
استفاده از کلیدهای رمزنگاریشده با Passphrase
هنگام ساخت SSH Key با دستور
ssh-keygen
، از شما خواسته میشود یک Passphrase (عبارت رمز) برای کلید خصوصی تعیین کنید. این رمز، مثل قفل دوم عمل میکند و در صورتیکه کلید خصوصی بهدست فردی بیفتد، بدون رمز هیچ فایدهای نخواهد داشت.مزایا:
-
جلوگیری از سوءاستفاده در صورت دزدیده شدن لپتاپ یا فایل کلید
-
افزایش امنیت در استفاده از SSH Key در سیستمهای اشتراکی یا قابلدسترس
اگر از passphrase استفاده کنید، هنگام اتصال به سرور باید رمز کلید خصوصی را وارد کنید. البته میتوانید با استفاده از ssh-agent رمز را یکبار وارد کنید تا در همان نشست (session) ذخیره شود.
تعیین محدودیت IP در فایل authorized_keys (پیشرفته)
برای آن دسته از کاربران حرفهای که نیاز به کنترل دقیقتر دارند، میتوان در فایل
authorized_keys
تعریف کرد که یک SSH Key فقط از IP خاصی مجاز به اتصال باشد.نحوه انجام:
در سرور، فایل زیر را باز کنید:
nano ~/.ssh/authorized_keys
سپس قبل از کلید عمومی، شرط
from=
را اضافه کنید:from="192.168.1.10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ...
توضیح:
با این تنظیم، حتی اگر کسی کلید خصوصی شما را داشته باشد، فقط از IP مجاز میتواند به سرور متصل شود.میتوانید چند IP یا رنج شبکه هم تعریف کنید:
from="192.168.1.10,192.168.1.20/24" ...
با انجام اقدامات زیر:
-
استفاده از SSH Key به جای رمز
-
غیرفعالسازی ورود با رمز عبور
-
تعریف Passphrase برای کلید خصوصی
-
و محدودسازی IP در سطح کلید
میتوانید امنیت اتصال به سرورهای مجازی خود را به بالاترین سطح ممکن برسانید.
-
مدیریت و نگهداری کلیدها
داشتن یک SSH Key امن، پایان کار نیست. مانند هر ابزار امنیتی دیگر، نگهداری و مدیریت درست آن نقش مهمی در حفظ امنیت سرور شما دارد. در این بخش به چند نکته مهم برای مدیریت کلیدهای SSH اشاره میکنیم:
تهیه نسخه پشتیبان از کلیدها
اگر کلید خصوصی (Private Key) خود را از دست بدهید و به سرور هم دسترسی نداشته باشید، عملاً راهی برای ورود نخواهید داشت. برای جلوگیری از این مشکل، لازم است:
-
یک نسخه رمزنگاریشده از کلید خصوصی خود را در جای امن نگه دارید (مثلاً یک فلش آفلاین یا فضای ابری امن با رمز دو مرحلهای).
-
از ذخیره کلید روی سیستمهای اشتراکی یا عمومی خودداری کنید.
-
اگر برای کلیدتان Passphrase تعیین کردهاید، آن را نیز در محل امنی یادداشت یا ذخیره کنید.
🛑 توجه: هرگز کلید خصوصی را در ایمیل یا فضای عمومی (مثل تلگرام یا گوگل درایو بدون رمز) به اشتراک نگذارید.
حذف یا تغییر کلیدهای قدیمی از سرور
اگر کلیدی قدیمی دارید که دیگر استفاده نمیشود، یا فردی که قبلاً به سرور دسترسی داشته دیگر نیازی به آن ندارد، باید سریعاً آن SSH Key را از فایل authorized_keys
حذف کنید.
مراحل:
-
وارد سرور شوید.
-
فایل کلیدهای مجاز را باز کنید:
nano ~/.ssh/authorized_keys
-
ردیفی که مربوط به کلید قدیمی یا شخص موردنظر است را پیدا کرده و حذف کنید.
-
فایل را ذخیره کرده و خارج شوید.
جمعبندی
در این مقاله، با یکی از مؤثرترین روشهای امنسازی اتصال به سرور مجازی آشنا شدیم: SSH Key. این روش، بهجای رمز عبور از کلیدهای رمزنگاریشده استفاده میکند و به دلایل زیر مورد اعتماد متخصصان است:
✅ مزایای کلیدی SSH Key:
-
امنیت بسیار بالا در برابر حملات Brute Force
-
عدم نیاز به وارد کردن رمز در هر اتصال
-
امکان محدودسازی اتصال بر اساس IP یا سطح دسترسی
-
مناسب برای استفاده در سیستمهای اتوماسیون و DevOps
🧭 گامهای کلیدی برای استفاده از SSH Key:
-
ساخت SSH Key با
ssh-keygen
یا PuTTYgen -
انتقال کلید عمومی به سرور (با
ssh-copy-id
یا دستی) -
اتصال امن با دستور
ssh -i
یا از طریق فایل~/.ssh/config
-
غیرفعال کردن ورود با رمز برای امنیت بیشتر
-
نگهداری، بکاپگیری و حذف کلیدهای غیرضروری
با رعایت نکاتی که گفته شد، میتوانید مطمئن باشید که اتصال شما به سرور نهتنها سریع و راحت، بلکه در بالاترین سطح امنیتی ممکن قرار دارد.