SSH چیست و چگونه به سرور وصل شویم؟

تاریخ انتشار:

17 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
فرمان ⁦ssh user@server.example⁩، تونلی با برچسب‌های ⁦TCP 22⁩، KEX، HOST KEY و AUTH، پرسش کلید میزبان و نشان قفل

یک سرور ابری کوچک اجاره می‌کنید و ایمیل خوش‌آمدگویی سه چیز در خود دارد: یک آدرس آی‌پی، یک نام کاربری و سطر SSH port: 22. یا دفترچه راهنمای یک دستگاه ذخیره‌سازی در شبکه خانگی‌تان از شما می‌خواهد ترمینال را باز کنید و ssh admin@192.168.1.50 را تایپ کنید. هر دو یک چیز را از شما انتظار دارند: از راه SSH وارد آن دستگاه شوید و روی خط فرمان آن کار کنید، گویی روبه‌روی خود آن نشسته‌اید.

این نوشته توضیح می‌دهد SSH چیست، هنگام اتصال چه اتفاقی می‌افتد و چگونه از ویندوز، macOS و لینوکس وصل شوید. سپس به پرسش کلید میزبان، مقایسه کلید SSH با رمز عبور، تونل‌ها، تفاوت SSH با TLS و VPN، و اینکه SSH کی می‌تواند جای یک پروکسی را بگیرد می‌پردازیم.

SSH چیست؟

SSH، کوتاه‌شده Secure Shell (پوسته امن)، یک پروتکل شبکه است که از راه یک اتصال رمزگذاری‌شده، خط فرمان یک رایانه دوردست را در اختیارتان می‌گذارد. پوسته (shell) برنامه‌ای است که فرمان‌هایی را که تایپ می‌کنید می‌خواند و اجرا می‌کند، مانند Bash در لینوکس یا PowerShell در ویندوز؛ SSH این گفت‌وگو را از میان شبکه عبور می‌دهد، طوری که هیچ‌کس در میانه راه نتواند آن را بخواند یا تغییر دهد.

دو برنامه در این کار شرکت دارند. کلاینت SSH روی رایانه شما اجرا می‌شود و اتصال را آغاز می‌کند؛ سرور SSH، برنامه‌ای پس‌زمینه که معمولاً sshd نام دارد، روی دستگاه دوردست اجرا می‌شود و به‌طور پیش‌فرض روی پورت TCP شماره 22 گوش می‌دهد. ⁦RFC 4251⁩، سند معماری نسخه کنونی این پروتکل، SSH را پروتکلی «برای ورود امن از راه دور و دیگر سرویس‌های امن شبکه روی یک شبکه ناامن» می‌نامد.

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

اتصال SSH چگونه کار می‌کند؟

اتصال SSH با ترتیبی ثابت برقرار می‌شود: دو طرف بر سر رمزنگاری توافق می‌کنند، سرور ثابت می‌کند کیست و فقط پس از آن شما وارد می‌شوید. پس از اجرای ssh user@server.example این اتفاق‌ها می‌افتد:

  1. اتصال TCP. کلاینت شما به سرور وصل می‌شود، روی پورت 22، مگر اینکه پورت دیگری را نام ببرید.
  2. تبادل نسخه. هر طرف سطری می‌فرستد که با SSH-2.0- آغاز می‌شود و نام نرم‌افزارش را می‌گوید.
  3. تبادل کلید. دو طرف الگوریتم‌هایی را که پشتیبانی می‌کنند فهرست می‌کنند، الگوریتم‌های مشترک را برمی‌گزینند و یک راز یکسان را محاسبه می‌کنند، بی‌آنکه هرگز آن را بفرستند. کلیدهای نشست که از این پس همه‌چیز را رمزگذاری می‌کنند از همین راز به دست می‌آیند.
  4. احراز هویت سرور. سرور نتیجه را با بخش خصوصی کلید میزبان (host key) خود امضا می‌کند. کلاینت شما امضا را بررسی می‌کند و کلید را با کلیدی که پیش‌تر ذخیره کرده مقایسه می‌کند، یا اگر سرور تازه باشد از شما می‌پرسد.
  5. احراز هویت کاربر. درون اتصال رمزگذاری‌شده وارد می‌شوید، با رمز عبور یا با ثابت کردن اینکه یک کلید SSH در اختیار دارید.
  6. کانال‌ها. پوسته شما، انتقال فایل‌ها و پورت‌های هدایت‌شده به‌صورت کانال‌های جداگانه درون همان یک اتصال اجرا می‌شوند.

⁦RFC 4253⁩، مشخصات لایه انتقال، گام‌های 1 تا 4 را تعریف می‌کند و پورت 22 را پورت اختصاص‌یافته به SSH ثبت می‌کند. چون هر اتصال کلیدهای نشست تازه می‌گیرد، کسی که امروز ترافیک شما را ضبط کند و بعدها کلید میزبان سرور را بدزدد، باز هم نمی‌تواند آن ضبط را رمزگشایی کند.

چگونه با SSH به سرور وصل شویم؟

فرمان ssh، سپس نام کاربری روی سرور، نشانه @ و آدرس سرور را تایپ کنید و هر وقت خواسته شد وارد شوید:

bash
ssh user@server.example

منظور از user حسابی روی سرور است، نه روی رایانه شما، و server.example جای یک نام میزبان یا یک آدرس آی‌پی مانند 203.0.113.10 را می‌گیرد. برای پورتی غیر از 22، گزینه -p را اضافه کنید: ssh -p 2222 user@server.example. پس از پرسش کلید میزبان، که در ادامه توضیح داده می‌شود، نوبت رمز عبور است؛ هنگام تایپ آن چیزی روی صفحه دیده نمی‌شود. وقتی اعلان خط فرمان به چیزی مانند user@server:~$ تغییر کند، فرمان‌های شما روی سرور اجرا می‌شوند و exit شما را برمی‌گرداند.

در ویندوز

ویندوز 10 (از بیلد 1809) و ویندوز 11 یک کلاینت OpenSSH دارند، پس ssh در PowerShell، Command Prompt (خط فرمان) و Windows Terminal کار می‌کند. برای بررسی، ssh -V را اجرا کنید. روی رایانه آزمایشی ما با ویندوز 11 این خروجی چاپ شد:

text
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2

اگر ssh شناخته نشد، ⁦Settings > System > Optional features⁩ (تنظیمات > سیستم > ویژگی‌های اختیاری) را باز کنید، View features (مشاهده ویژگی‌ها) را انتخاب کنید، OpenSSH Client (کلاینت OpenSSH) را جست‌وجو کنید و آن را اضافه کنید؛ در برخی نسخه‌های ویندوز 11 این صفحه زیر ⁦Settings > Apps⁩ (تنظیمات > برنامه‌ها) قرار دارد. راهنمای مایکروسافت با عنوان شروع کار با OpenSSH در ویندوز این گام‌ها و نخستین اتصال را نشان می‌دهد.

در macOS و لینوکس

هر دو یک کلاینت SSH همراه خود دارند. در مک، Terminal (ترمینال) را از راه Spotlight یا از مسیر ⁦Applications > Utilities⁩ (برنامه‌ها > ابزارها) باز کنید و همان فرمان را تایپ کنید. اگر یک سیستم لینوکسی ssh نداشت، بسته کلاینت OpenSSH آن را نصب کنید که معمولاً openssh-client یا openssh نام دارد.

چرا SSH در نخستین اتصال از شما تأیید می‌خواهد؟

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

OpenSSH پیام The authenticity of host … can't be established را چاپ می‌کند، یعنی اصالت این میزبان قابل تأیید نیست. سپس نوع کلید و اثر انگشت (fingerprint) آن را نشان می‌دهد، یعنی یک چکیده کوتاه مانند SHA256: به‌علاوه 43 نویسه، و با سطر Are you sure you want to continue connecting (yes/no/[fingerprint])? می‌پرسد آیا مطمئن هستید که می‌خواهید اتصال را ادامه دهید. اگر پاسخ دهید yes، کلاینت کلید را در فایل known_hosts درون پوشه .ssh پروفایل کاربری‌تان ذخیره می‌کند و در هر اتصال بعدی آن را بررسی می‌کند.

پیش از پاسخ دادن، اثر انگشت را با اثر انگشتی مقایسه کنید که از راه دیگری به دست آورده‌اید: برخی ارائه‌دهندگان سرور ابری آن را در خروجی کنسول سرور نشان می‌دهند و مدیر سرور می‌تواند آن را روی خود سرور با ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub چاپ کند. پذیرفتن کلید بدون بررسی، شما را در برابر حمله مرد میانی (MITM) بی‌دفاع می‌گذارد؛ حمله‌ای که در آن کسی میان شما و سرور، خود را به‌جای سرور جا می‌زند و رمز عبورتان را می‌خواند.

اگر سروری آشنا ناگهان پیام WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! را نشان داد، یعنی شناسه میزبان دوردست تغییر کرده است. دست نگه دارید و پیش از پاک کردن مدخل قدیمی از کسی که سرور را اداره می‌کند بپرسید؛ سروری که از نو نصب شده بی‌خطر است، اما یک جاعل نه. هرگز این پرسش را با StrictHostKeyChecking no ساکت نکنید: این کار تنها بررسی‌ای را حذف می‌کند که به شما می‌گوید چه کسی در آن سوی اتصال است.

چگونه یک کلید SSH بسازیم؟

جفت کلید SSH را با ssh-keygen می‌سازید که همراه کلاینت SSH عرضه می‌شود:

bash
ssh-keygen -t ed25519 -C "you@laptop"

گزینه -t ed25519 نوع ⁦Ed25519⁩ را انتخاب می‌کند که در نسخه‌های کنونی OpenSSH از پیش پیش‌فرض است، و -C توضیحی برای شناختن کلید اضافه می‌کند. فرمان می‌پرسد کلید کجا ذخیره شود (با زدن Enter، پوشه .ssh در پروفایل کاربری شما پذیرفته می‌شود) و یک عبارت عبور (passphrase) می‌خواهد، یعنی رمزی که فایل کلید خصوصی را رمزگذاری می‌کند. حتماً یکی تعیین کنید: بدون آن، هر کسی که فایل را کپی کند می‌تواند به نام شما وارد شود.

روی رایانه آزمایشی ما با ویندوز 11، یک کلید یک‌بارمصرف را با -f demo_ed25519 در یک پوشه آزمایشی ذخیره کردیم و پس از آن پاکش کردیم. خروجی، بدون مسیر پوشه:

text
Generating public/private ed25519 key pair.
Your identification has been saved in demo_ed25519
Your public key has been saved in demo_ed25519.pub
The key fingerprint is:
SHA256:lkosA9+FmCGq1dOjgIoIqQKwHR/jAMjzf+GsngbbGCc you@laptop

فایل بدون پسوند کلید خصوصی است: هرگز از رایانه شما بیرون نمی‌رود. فایل .pub کلید عمومی است، یک سطر که می‌توانید آزادانه به دیگران بدهید. راهنمای ssh-keygen همه گزینه‌ها را فهرست می‌کند، از جمله روش تغییر عبارت عبور.

برای ورود با کلید، سطر کلید عمومی باید در فایل ~/.ssh/authorized_keys حساب شما روی سرور قرار بگیرد. بسیاری از ارائه‌دهندگان سرور ابری هنگام ساختن سرور آن را از شما می‌خواهند و خودشان آنجا قرارش می‌دهند. در macOS و لینوکس، ssh-copy-id user@server.example پس از یک بار ورود با رمز عبور آن را کپی می‌کند؛ در ویندوز، فایل .pub را در Notepad (دفترچه یادداشت) باز کنید، سطر را کپی کنید، یک بار با رمز عبور وارد شوید و آن را در همان فایل روی سرور بچسبانید.

رمز عبور یا کلید SSH: با کدام وارد شویم؟

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

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

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

تونل SSH چیست؟

تونل SSH یک اتصال شبکه دیگر را درون نشست رمزگذاری‌شده SSH شما جابه‌جا می‌کند تا برنامه‌ای روی رایانه شما بتواند به سرویسی روی سرور یا نزدیک آن برسد، گویی آن سرویس محلی است. به این کار هدایت پورت (port forwarding) می‌گویند و ssh سه نوع آن را ارائه می‌کند.

هدایت محلی (-L) رایج‌ترین نوع است. اگر روی سرورتان پایگاه داده‌ای اجرا می‌شود که فقط روی 127.0.0.1 خود سرور گوش می‌دهد، با ssh -L 5432:localhost:5432 user@server.example یک ابزار پایگاه داده روی لپ‌تاپ شما به localhost:5432 وصل می‌شود و SSH آن را به پایگاه داده روی سرور می‌رساند. هدایت راه دور (-R) پورتی روی سرور باز می‌کند که به رایانه شما برمی‌گردد. هدایت پویا (-D) کلاینت را به یک پروکسی SOCKS کوچک تبدیل می‌کند که در بخش بعد به آن می‌پردازیم.

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

آیا SSH می‌تواند مانند پروکسی SOCKS5 کار کند؟

بله: ssh -D 1080 -N user@server.example یک پروکسی SOCKS5 روی پورت 1080 رایانه خودتان راه می‌اندازد و هر چه وارد آن شود را از راه سرورتان بیرون می‌فرستد؛ -N هیچ پوسته‌ای باز نمی‌کند و فقط تونل را برقرار می‌کند. پروکسی SOCKS5 اتصال‌های یک برنامه را بی‌آنکه بخواند به هر آدرس و پورتی منتقل می‌کند، همان‌طور که در نوشته پروکسی SOCKS5 چیست؟ توضیح داده شده است.

اگر مرورگری را روی پروکسی SOCKS5 با آدرس 127.0.0.1 و پورت 1080 تنظیم کنید، وب‌سایت‌ها به‌جای آی‌پی اتصال خانگی شما آی‌پی سرورتان را می‌بینند. ابزارهای خط فرمان معمولاً پروکسی را از متغیرهای محیطی می‌گیرند که طرز کارشان در نوشته تنظیمات پروکسی در لینوکس آمده است.

این برای کارهای خودتان مفید است، مثلاً بررسی سایتتان از موقعیت سرور. محدودیت‌هایش هم همراهش می‌آیند: یک آی‌پی خروجی، یک آدرس دیتاسنتر در یک شهر، سروری که نگهداری‌اش با خودتان است، و فقط TCP، در حالی که یک پروکسی SOCKS5 می‌تواند UDP را هم منتقل کند.

وقتی کاری به بیش از یک آدرس نیاز دارد، سرویس پروکسی SOCKS5 ما با همان تنظیمات در همان برنامه‌ها کار می‌کند و آی‌پی‌های مسکونی و موبایل را در کشورهای بسیار، با هدف‌گیری بر اساس کشور و شهر، ارائه می‌دهد.

برای یک آدرس ثابت، پروکسی دیتاسنتر بی‌آنکه سروری را اداره کنید آدرس‌های ⁦IPv4⁩ اختصاصی در بیش از 50 کشور در اختیارتان می‌گذارد.

تفاوت SSH، SSL/TLS و VPN چیست؟

هر سه ترافیک را رمزگذاری می‌کنند، اما از چیزهای متفاوتی محافظت می‌کنند: SSH از یک ورود و اتصال‌هایی که از راه آن باز می‌شوند محافظت می‌کند، TLS از یک اتصال برنامه مانند یک صفحه وب، و VPN از همه چیزهایی که یک دستگاه می‌فرستد.

SSHSSL/TLSVPN
از چه محافظت می‌کندنشست شما روی یک سروریک اتصال، مانند HTTPSهمه ترافیک دستگاه
سرور چگونه بررسی می‌شودکلید میزبان، ذخیره‌شده در نخستین استفادهگواهی امضاشده به دست یک مرجع صدوربه پروتکل VPN بستگی دارد
کاربرد رایجمدیریت سرور، انتقال فایلوب‌سایت‌ها، ایمیل، APIهاشبکه اداره، وای‌فای عمومی
پورت پیش‌فرض22443 برای HTTPSبه پروتکل بستگی دارد

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

چگونه دسترسی SSH به سرورتان را امن نگه داریم؟

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

  • از کلید همراه با عبارت عبور استفاده کنید، برای هر نفر یک کلید، تا بتوانید یکی را بدون دست زدن به بقیه حذف کنید.
  • وقتی ورود با کلید کار کرد، ورود با رمز عبور را خاموش کنید: PasswordAuthentication no در /etc/ssh/sshd_config روی سرور لینوکسی خودتان. هنگام آزمایش یک نشست را باز نگه دارید تا یک اشتباه دسترسی شما را قطع نکند.
  • با رمز عبور به‌عنوان root وارد نشوید. پیش‌فرض OpenSSH از قبل ورود root را فقط با کلید مجاز می‌داند؛ از یک حساب عادی و sudo استفاده کنید.
  • به‌روزرسانی‌ها را نصب کنید، هم برای سیستم‌عامل و هم برای سرور SSH.
  • از کلید خصوصی مانند یک رمز عبور محافظت کنید: هرگز آن را در یک گفت‌وگو، یک تیکت پشتیبانی یا یک مخزن کد نچسبانید.

انتقال SSH به پورتی دیگر فقط شلوغی گزارش‌ها (لاگ‌ها) را کم می‌کند؛ محافظت واقعی از کلیدها و به‌روزرسانی‌ها می‌آید.

کجا با SSH روبه‌رو می‌شوید؟

  • سرورهای ابری و سرورهای مجازی (VPS)، که معمولاً از روز اول با SSH مدیریت می‌شوند.
  • هاست اشتراکی، که بسیاری از سرویس‌های آن SSH را در کنار مدیر فایل ارائه می‌دهند.
  • Git، که در آن آدرس‌هایی مانند git@host:team/project.git کد را با کلید شما ارسال (push) و دریافت (pull) می‌کنند.
  • انتقال فایل با scp و sftp که روی SSH اجرا می‌شوند و در ویندوز هم وجود دارند.
  • دستگاه‌های خانگی مانند ذخیره‌سازهای شبکه‌ای و روترها.
  • مک خودتان، که وقتی Remote Login (ورود از راه دور) در ⁦System Settings > General > Sharing⁩ (تنظیمات سیستم > عمومی > اشتراک‌گذاری) روشن باشد، رایانه‌های دیگر می‌توانند از راه SSH به آن برسند؛ اپل یادآوری می‌کند که این کار ممکن است امنیت مک را کاهش دهد.

اشتباه‌های رایج

  • تایپ yes در پرسش نخستین اتصال بدون مقایسه اثر انگشت.
  • ساکت کردن هشدارهای کلید میزبان با StrictHostKeyChecking no، به‌جای اینکه بفهمید چرا کلید تغییر کرده است.
  • فرستادن کلید خصوصی به‌جای فایل .pub، وقتی کسی «کلید SSH شما» را می‌خواهد.
  • خاموش کردن ورود با رمز عبور پیش از آنکه ورود با کلید کار کند، و سپس از دست دادن دسترسی به سرور.
  • استفاده از نام کاربری نادرست. بسیاری از ایمیج‌های ابری به‌جای root حسابی مانند ubuntu یا admin دارند و نام نادرست به پیام Permission denied ختم می‌شود.
  • انتظار اینکه متغیرهای محیطی پروکسی روی ssh اثر بگذارند. اثری ندارند؛ SSH تنظیمات خود را در ~/.ssh/config دارد.

راهنمای انتخاب

نیاز شماچه باید کرد
ورود به یک سرور برای نخستین بارssh user@server.example، اثر انگشت را مقایسه کنید، سپس yes را وارد کنید
سرور از پورت دیگری استفاده می‌کند-p و شماره پورت را اضافه کنید
رهایی از تایپ رمز عبوربا ssh-keygen کلید بسازید و سطر .pub را به authorized_keys اضافه کنید
دسترسی به پایگاه داده‌ای که فقط روی خود سرور گوش می‌دهدهدایت محلی با -L
مرور وب با آی‌پی سرور خودتانssh -D 1080 -N، سپس SOCKS5 روی 127.0.0.1:1080
چندین موقعیت یا آی‌پی‌های مسکونییک سرویس پروکسی به‌جای یک سرور

پرسش‌های متداول

آیا SSH امن است؟

بله، اگر در نخستین اتصال کلید میزبان را بررسی کنید و از ورود خود محافظت کنید. نقاط ضعف، رمزهای عبور قابل حدس، کلیدهای بدون عبارت عبور و اثر انگشت‌هایی هستند که بدون بررسی پذیرفته می‌شوند، نه خود رمزنگاری.

پورت 22 چیست؟

پورت 22 پورت TCP است که سرورهای SSH به‌طور پیش‌فرض روی آن گوش می‌دهند و به‌طور رسمی به SSH اختصاص یافته است. سرور می‌تواند از پورت دیگری استفاده کند؛ در آن صورت با ssh -p 2222 user@server.example وصل می‌شوید یا آن را با یک سطر Port در ~/.ssh/config ذخیره می‌کنید.

آیا می‌توانم روی گوشی از SSH استفاده کنم؟

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

خطای Permission denied (publickey) یعنی چه؟

یعنی سرور فقط ورود با کلید را می‌پذیرد و هیچ‌یک از کلیدهایی که کلاینت شما عرضه کرده برای آن کاربر ثبت نشده است. نام کاربری را بررسی کنید، ببینید کلید درست به کار رفته است یا نه (ssh -i یک کلید مشخص را انتخاب می‌کند)، و مطمئن شوید سطر .pub آن در ~/.ssh/authorized_keys همان حساب قرار دارد.

تفاوت SSH، SFTP و SCP چیست؟

SSH خود پروتکل و ورود از راه دور است؛ SFTP و SCP ابزارهای انتقال فایل هستند که درون یک اتصال SSH اجرا می‌شوند. فرمان sftp نشستی باز می‌کند که در آن میان پوشه‌ها حرکت می‌کنید، scp فایل‌ها را با یک فرمان کپی می‌کند و هر دو از همان ورود و همان کلیدهای ssh استفاده می‌کنند.

چگونه یک نشست SSH را ببندیم؟

فرمان exit را تایپ کنید، یا اگر سرور لینوکس یا macOS اجرا می‌کند Ctrl+D را فشار دهید. اگر نشست قفل شد، Enter را بزنید و سپس ~. (تیلدا و نقطه) را تایپ کنید: کلاینت این را یک دنباله گریز (escape sequence) می‌داند و اتصال را از سمت شما می‌بندد.

خلاصه

SSH یک خط فرمان رمزگذاری‌شده روی یک رایانه دوردست به شما می‌دهد: کلاینت شما روی پورت 22 وصل می‌شود، سرور با کلید میزبان هویت خود را ثابت می‌کند و شما با رمز عبور یا، بهتر از آن، با کلیدی که با ssh-keygen ساخته‌اید وارد می‌شوید. اثر انگشت را یک بار بررسی کنید، هرگز بررسی کلید میزبان را خاموش نکنید و فقط جایی از تونل استفاده کنید که اجازه‌اش را دارید. وقتی به آدرس‌های خروجی بیشتری از آنچه یک سرور می‌دهد نیاز دارید، محصولات پروکسی ما را مقایسه کنید.

پرسش از ChatGPTپرسش از Claude