SSH چیست و چرا به آن نیاز داریم؟
مفهوم کلید SSH، تفاوت اتصال HTTPS و SSH به گیتهاب و اینکه چرا SSH روش امنتر و راحتتری است.
مشکل: احراز هویت در هر push
وقتی میخواهید کدتان را به گیتهاب بفرستید (push)، گیتهاب باید مطمئن شود واقعاً شما هستید. دو راه اصلی برای این کار وجود دارد: HTTPS و SSH.
HTTPS — روش پیشفرض
آدرس مخزن به شکل https://github.com/user/repo.git است. هر بار push یا pull:
- نام کاربری و رمز میخواهد
- اما گیتهاب دیگر رمز معمولی قبول نمیکند — باید Personal Access Token (PAT) بسازید (یک رمز طولانی مخصوص)
- توکنها تاریخ انقضا دارند و باید مرتب تمدید شوند
SSH — روش حرفهای
آدرس مخزن به شکل git@github.com:user/repo.git است. با کلید SSH کار میکند:
- یک بار تنظیم میکنید و برای همیشه راحت هستید
- بدون وارد کردن رمز در هر push
- امنیت بالاتر با رمزنگاری کلید عمومی/خصوصی
کلید SSH چطور کار میکند؟
SSH از جفت کلید استفاده میکند:
| کلید | کجاست؟ | نقش |
|---|---|---|
| خصوصی (Private) | روی کامپیوتر شما — مخفی بماند! 🔒 | هویت شما را اثبات میکند |
| عمومی (Public) | به گیتهاب میدهید — آزاد است | قفلِ باز کردن هویت شما |
تشبیه معروف: کلید عمومی مثل قفل است و کلید خصوصی مثل کلید واقعی. هر کسی میتواند قفل را ببیند، اما فقط شما کلید باز کردنش را دارید. گیتهاب با قفل (کلید عمومی) پیام رمزی میفرستد که فقط کلید شما میتواند جوابش را بدهد — بدون اینکه هیچ رمزی رد و بدل شود!
مقایسه HTTPS و SSH
| ویژگی | HTTPS | SSH |
|---|---|---|
| راهاندازی | سریع (از اول هست) | یک بار تنظیم لازم دارد |
| احراز هویت | توکن در هر عملیات (کش میشود) | خودکار و بیدردسر ⭐ |
| امنیت | خوب | عالی ⭐ |
| پشت فایروال/پروکسی | معمولاً بدون مشکل ⭐ | گاهی پورت ۲۲ بسته است |
| برای چه کسانی؟ | شروع سریع، محیطهای محدود | کار روزمره و حرفهای ⭐ |
SSH فقط برای گیت نیست!
SSH (Secure Shell) یک پروتکل عمومی برای اتصال امن به سرورهاست — مدیران سرور با آن به سرورهای لینوکسی وصل میشوند. ما فقط از قابلیت احراز هویت با کلید آن برای گیتهاب استفاده میکنیم.
نقشه راه راهاندازی SSH
- بررسی کلیدهای موجود — شاید از قبل داشته باشید
- ساخت جفت کلید جدید با
ssh-keygen - افزودن کلید عمومی به گیتهاب
- تست اتصال
این مراحل را در مبحث بعدی قدمبهقدم انجام میدهیم!
خلاصه
- برای push به گیتهاب باید هویتان تأیید شود: HTTPS یا SSH
- HTTPS = توکن (PAT) که مرتب تمدید میخواهد
- SSH = کلید عمومی/خصوصی — یک بار تنظیم، همیشه راحت
- کلید خصوصی را هرگز با کسی به اشتراک نگذارید!
این مبحث بخشی از دوره آموزش کامل Git است.