SSH واقعاً چه کار میکند
در حالی که Splync از HTTPS برای محافظت از مسیر بین گوشی هوشمند شما و سرور ما استفاده میکند، همچنان نیاز به محافظت از خود سرور داریم تا امنیت دادههای کاربران تضمین شود. توسعهدهندگان اپلیکیشن و مدیران سیستم نیاز دارند به سرور دسترسی پیدا کنند تا بهروزرسانیها را بهصورت امن اعمال و مدیریت کنند. اینجاست که SSH (Secure Shell) وارد عمل میشود. این پروتکلی است که به کاربران مجاز امکان ورود به رایانههای راه دور را بهطور امن و حتی در شبکههای غیرقابل اعتماد میدهد. SSH جایگزین روشهای قدیمی و ناامن نظیر Telnet میشود که نام کاربری و گذرواژهها را به صورت متن ساده ارسال میکرد.
ایده پشت "کلیدها"
SSH به یک گذرواژه معمولی متکی نیست. در عوض از کلیدهای رمزنگاری شده استفاده میکند — یک جفت کلید عمومی و خصوصی که به یکدیگر میخورند. آنها را مانند قفل و کلیدی تصور کنید که فقط به هم میخورند. کلید عمومی بر روی سرور قرار دارد و کلید خصوصی نزد کاربر باقی میماند. وقتی متصل میشوید، سرور از شما میخواهد ثابت کنید که کلید خصوصی را دارید، بدون اینکه آن را فاش کنید. این امر امکان جعل هویت شما را تقریباً غیرممکن میسازد. در حالی که گذرواژههای معمولی ممکن است حدس زده شوند، فاش شوند یا دوباره استفاده شوند، کلیدهای SSH رشتههای رمزنگاری طولانی و تصادفی هستند — عملاً غیرقابل حدس زدن. حتی اگر کسی موفق به شنود ارتباط شود، تنها نویز رمزگذاری شده را مشاهده میکند. و از آنجا که کلیدهای SSH هرگز در شبکه ارسال نمیشوند، چیزی برای سرقت در مسیر وجود ندارد.
یک کلید SSH در واقع چگونه به نظر میرسد
اگر تا به حال یک کلید SSH ندیدهاید، ممکن است انتزاعی به نظر برسد — اما در واقع فقط یک بلوک طولانی از متن کدگذاری شده است. کلید عمومی معمولاً چند صد کاراکتر طول دارد، در حالی که کلید خصوصی میتواند به بیش از هزار کاراکتر برسد. هر دو به صورت فایلهای متنی ذخیره میشوند، اما محتوای آنها شبیه نویز تصادفی است — ترکیبی از حروف، اعداد و نمادها. کلید عمومی برای اشتراکگذاری امن است؛ مانند این است که قفل خود را روی سرور قرار دهید. اما کلید خصوصی هویت دیجیتال منحصر به فرد شماست و هرگز نباید به اشتراک گذاشته شود. این کلید به صورت محلی روی رایانه شما ذخیره میشود و فقط برای اثبات هویت شما استفاده میشود — بدون اینکه خود کلید فاش شود.
کلید عمومی و کلید خصوصی
یک کلید عمومی مانند قفلی است که به خانه خود وصل میکنید. هر کسی میتواند آن را از خیابان ببیند، درست مثل قفل روی در جلوی شما. اما نگاه کردن به قفل به کسی نمیگوید چگونه آن را باز کند. به عبارت دیگر، هر کسی میتواند آن را ببیند، اما فقط کلید درست میتواند آن را باز کند. از سوی دیگر، کلید خصوصی کلیدی است که قفل را باز میکند — و بهطور ایمن با شما میماند. اگر کسی کلید خصوصی شما را به دست بیاورد، میتواند به خانه شما وارد شود گویی که شماست. به همین دلیل همیشه باید مخفی نگه داشته شود.
مکانیسم SSH
هر کلید عمومی و خصوصی یک جفت منحصربهفرد یکبهیک را تشکیل میدهند. آنها با یک فرایند ریاضی تولید میشوند تا تنها آن کلید خصوصی خاص بتواند با کلید عمومی مربوطه خود تطابق یابد. میتوانید آنها را بهعنوان قفل و کلیدی سفارشیسازی شده تصور کنید — با هم ساخته شدهاند و هیچ کلید دیگری در دنیا به آن قفل نمیخورد. حتی اگر از همان الگوریتم (مانند RSA یا Ed25519) برای تولید جفت دیگر استفاده کنید، اعداد داخلی کاملاً متفاوت خواهند بود. ریاضی که دو کلید را به هم مرتبط میکند یکطرفه است: میتوانید بهراحتی کلید عمومی را از کلید خصوصی به دست آورید، اما برعکس، برگشتپذیر نیست و پیدا کردن کلید خصوصی از کلید عمومی عملاً غیرممکن است. به همین دلیل هر جفت کلید SSH منحصر به فرد و امن است.
SSH چگونه هویت شما را ثابت میکند
وقتی با SSH وارد یک سرور میشوید، کلید خصوصی شما هرگز رایانه شما را ترک نمیکند. در عوض، سرور یک چالش تصادفی ارسال میکند — مانند یک پازل یکبار مصرف — که فقط کلید خصوصی شما میتواند آن را حل کند. رایانه شما آن چالش را بهصورت ریاضی امضا میکند و پاسخ کوتاهی تولید میکند که سرور میتواند با استفاده از کلید عمومی شما بررسی کند. اگر پاسخ صحیح باشد، سرور میداند که شما کلید خصوصی درست را دارید — بدون اینکه آن را ببیند. این جادوی رمزنگاری مدرن است: شما میتوانید هویت خود را بدون افشای راز خود ثابت کنید. احراز هویت SSH کار میکند زیرا کلید خصوصی شما حاوی تمام اطلاعات لازم برای استخراج کلید عمومی است، اما برعکس آن عملاً غیرممکن است.
توسعهدهندگان در عمل چگونه از SSH استفاده میکنند
هر بار که توسعهدهندگان کد نصب میکنند، یک پایگاه داده را بهروزرسانی میکنند یا سرویسی را راهاندازی مجدد میکنند، اغلب از طریق SSH به سرورهای راه دور خود متصل میشوند. پس از احراز هویت، یک اتصال امن خط فرمان به سرور میگیرند. از آنجا، میتوانند فایلها را مدیریت کنند، سرویسها را راهاندازی مجدد کنند یا لاگها را بررسی کنند — همه چیز از ابتدا تا انتها رمزگذاری شده است. در مورد Splync، SSH راهی است که ما سرور ابری خود را بهطور امن مدیریت میکنیم. هر عمل مدیریتی — نصب بهروزرسانیها، بررسی لاگها، پشتیبانگیری از دادهها — از طریق اتصالات SSH محافظتشده توسط کلیدهای رمزنگاری انجام میشود. هیچکس نمیتواند بدون کلید خصوصی صحیح به سرور دسترسی پیدا کند. حتی اگر کسی آدرس IP ما را بداند، بدون آن کلید، در بههیچوجه باز نمیشود.
در ادامه: رمزگذاری داخل سرور
SSH از ورودی سرور محافظت میکند و HTTPS از دادههای در حال انتقال. اما وقتی دادهها در پایگاهداده قرار گرفتند، چگونه آنها را ایمن نگه داریم؟ اینجاست که هشینگ و رمزگذاری وارد عمل میشوند — لایه نهایی دفاع.