آموزشآموزش شبکه به زبان ساده

درس ۴۱ از ۹۹، شبکه و اینترنت، حدود ۱۲ دقیقه خواندن

SSH چیست

جواب کوتاه

SSH راهی امن برای وارد شدن به یک سرور یا دستگاه دیگر از راه دور است، تا با خط فرمان با آن کار کنید، انگار جلوی خودش نشسته‌اید. همه‌ی گفت‌وگو رمز می‌شود، و شما خودتان را با رمز عبور یا بهتر، با یک جفت کلید می‌شناسانید: کلید خصوصی پیش شما می‌ماند و کلید عمومی روی سرور است. SSH روی پورت ۲۲ کار می‌کند و جای Telnet بی‌رمز را گرفته است.

سه کلمه

  • SSHکوتاه‌شده‌ی Secure Shell، یعنی «پوسته‌ی امن»: راه امن وارد شدن به یک دستگاه دیگر از راه دور و کار کردن با آن.
  • کلید خصوصیپرونده‌ای روی دستگاه خودتان که هرگز به کسی داده نمی‌شود؛ همان انگشتر مهر.
  • کلید عمومینیمه‌ی دیگر همان جفت، که روی سرور می‌گذارید؛ همان نقش مهر که نگهبان دارد. دیدنش خطری ندارد.

کار از دور، با خط فرمان

سرور یک سایت معمولا در ساختمانی دور است، شاید در شهر دیگری. صاحب سایت برای نصب یک برنامه یا خواندن گزارش‌ها لازم نیست به آنجا برود. با SSH از رایانه‌ی خودش به سرور وصل می‌شود و فرمان‌ها را تایپ می‌کند؛ سرور آن‌ها را اجرا می‌کند و جواب را برمی‌گرداند.

این گفت‌وگو از اینترنت می‌گذرد، پس باید امن باشد: هیچ کس وسط راه نباید فرمان‌ها و رمزها را ببیند یا عوض کند (درس HTTPS)، و سرور باید مطمئن شود شما همانی هستید که اجازه دارید.

سه بخش SSH

  1. کانال امن: شناختن سرور، رمز کردن، و جلوگیری از دست‌کاری؛ معمولا روی TCP (درس TCP و UDP).
  2. شناساندن کاربر: روی همان کانال امن، شما خودتان را به سرور می‌شناسانید.
  3. کانال‌های کار: درون همان تونل رمزشده چند کانال باز می‌شود؛ مهم‌ترینش پوسته‌ی فرمان است، که با آن کار می‌کنید.

انگشتر مهر

می‌شود با رمز عبور وارد شد، ولی راه امن‌تر جفت کلید است، و تنها روشی است که هر SSH باید بلد باشد. فرض کنید یک انگشتر مهر دارید که هیچ‌وقت از دستتان درنمی‌آید، و نقش مهرتان را از پیش به نگهبان ساختمان داده‌اید:

پیش از همه: انگشتر مهر، یعنی کلید خصوصی، دست شماست؛ نقش مهرتان، یعنی کلید عمومی، را از قبل به نگهبان سرور داده‌اید.
شما می‌گویید «منم»؛ نگهبان کاغذی تازه جلویتان می‌گذارد که هر بار فرق دارد.
شما با انگشترتان روی همان کاغذ مهر می‌زنید و آن را پس می‌دهید. خود انگشتر از دستتان بیرون نمی‌آید.
نگهبان مهر روی کاغذ را با نقشی که از شما دارد می‌سنجد. جور است؛ در باز می‌شود.

کاغذ هر بار تازه است، پس مهری که دیروز زده‌اید امروز به کار کسی نمی‌آید. داشتن کلید خصوصی خودش نشانه‌ی شماست؛ سرور فقط دو چیز را می‌سنجد: این کلید عمومی اجازه دارد، و امضا با آن جور است. برای همین کلید خصوصی را مثل کلید خانه نگه دارید، و اگر خواستید، با یک گذرواژه قفلش کنید.

نشان سردر ساختمان

شما باید سرور را هم بشناسید، نه فقط سرور شما را. هر سرور یک کلید میزبان دارد، مثل نشانی بر سردر ساختمان. برنامه‌ی SSH نشان هر سرور را در فهرستی روی دستگاه شما نگه می‌دارد:

بار اول: نشان سرور را نمی‌شناسید. اگر مطمئن شدید سرور همان است، نشانش در دفترچه‌ی شما ثبت می‌شود.
دفعه‌های بعد: اگر نشان با دفترچه جور نباشد، برنامه هشدار می‌دهد. شاید سرور عوض شده، شاید کسی خودش را جای آن زده؛ بی‌دلیل رد نشوید.

بار اول، برنامه معمولا «اثر انگشت» کلید را نشان می‌دهد و می‌پرسد ادامه بدهید یا نه؛ اثر انگشت نمایش کوتاه همان کلید است تا بتوانید با آنچه صاحب سرور گفته مقایسه کنید. سند SSH می‌گوید پذیرفتن بار اول بی سنجش، باز هم از شنود محافظت می‌کند، ولی در برابر کسی که خودش را جای سرور بزند، نه؛ برای همین سنجیدن اثر انگشت ارزش دارد.

دست به کار

فرمان ssh در ویندوز ۱۰ و ۱۱ (در Command Prompt یا PowerShell)، مک و لینوکس هست. برای وصل شدن، نام کاربری و نشانی سرور را با @ کنار هم می‌نویسید:

ssh ali@203.0.113.80

برای ساختن یک جفت کلید:

ssh-keygen

این فرمان دو پرونده می‌سازد: یکی کلید خصوصی، که پیش شما می‌ماند، و یکی کلید عمومی، که پایانش .pub است و آن را روی سرور در فهرست کلیدهای مجاز می‌گذارید.

چرا نه Telnet

پیش از SSH، Telnet همین کار را می‌کرد، روی پورت ۲۳؛ ولی همه‌چیز، حتی رمز عبور، آشکار می‌رفت و هر کس وسط راه بود می‌توانست بخواند (درس پورت‌های رایج). SSH جای آن را گرفته است، و سندش هم می‌گوید حتی ساده‌ترین شکل SSH بسیار امن‌تر از Telnet است.

SSH فقط برای فرمان نیست؛ روی همین کانال امن می‌شود فایل هم فرستاد، که درس بعد، «انتقال فایل»، درباره‌ی آن است.

سه اشتباه

  • «کلید خصوصی را برای سرور می‌فرستند تا مرا بشناسد.»کلید خصوصی هرگز از دستگاه شما بیرون نمی‌رود؛ فقط امضای تازه‌ای که با آن ساخته شده فرستاده می‌شود، مثل مهر روی کاغذ.
  • «کلید عمومی را باید مثل رمز پنهان کرد.»کلید عمومی برای همین است که روی سرور بگذارید؛ دیدنش خطری ندارد. آنچه باید پنهان بماند، کلید خصوصی است.
  • «هشدار تغییر نشان سرور را می‌شود همیشه نادیده گرفت.»این هشدار یعنی سرور آن نیست که دفعه‌ی پیش بود؛ شاید عوض شده، شاید کسی خودش را جای آن زده. اول بفهمید چرا.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • SSH یعنی ورود امن از راه دور و کار با خط فرمان؛ روی TCP، پورت ۲۲.
  • سه بخش: کانال امن (شناختن سرور، رمز، دست‌نخوردن)، شناساندن کاربر، و کانال‌های کار.
  • ورود با کلید: کلید خصوصی پیش شما، کلید عمومی روی سرور؛ امضای تازه فرستاده می‌شود، نه خود کلید.
  • هر سرور کلید میزبان دارد؛ بار اول ثبت می‌شود و دفعه‌های بعد سنجیده می‌شود.
  • فرمان ssh و ssh-keygen در ویندوز ۱۰ و ۱۱، مک و لینوکس هست.
  • Telnet همه‌چیز را آشکار می‌فرستاد؛ SSH جایش را گرفته است.

خودتان را بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را می‌بینید: چند درست، چند نادرست.

خودتان را بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها تازه است.
  • تا آخر، درست یا نادرست بودن جواب‌ها گفته نمی‌شود؛ می‌توانید برگردید و جوابی را عوض کنید.
  • آخرش کارنامه می‌گیرید: چند پرسش درست و چند نادرست.
  • هر وقت بستید، دوباره که باز کنید از همان‌جا ادامه می‌دهید.

فصل‌های این درس

درس بعد