---
title: "SSH چیست و چگونه به سرور وصل شویم؟"
description: "SSH (Secure Shell) راه رمزگذاری‌شده ورود به سرور و اجرای فرمان روی آن است و به‌طور پیش‌فرض روی پورت 22 کار می‌کند. طرز کار، روش اتصال و کلیدهای SSH را ببینید."
url: https://proxynet.io/fa/blog/what-is-ssh
date: 2026-11-15
author: "Acar Diveroli"
category: "آموزش‌ها, مبانی پروکسی"
lang: fa
---

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

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

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

> **نکته: پاسخ کوتاه**
>
> SSH (Secure Shell) پروتکلی برای ورود به رایانه‌ای دیگر و اجرای فرمان روی آن از راه یک اتصال رمزگذاری‌شده است. شما یک کلاینت SSH اجرا می‌کنید، مثلاً فرمان `ssh` که در ویندوز 10 و 11، macOS و لینوکس از پیش وجود دارد، و به یک سرور SSH وصل می‌شوید که به‌طور پیش‌فرض روی پورت TCP شماره 22 گوش می‌دهد: `ssh user@server.example`. سرور هویت خود را با یک کلید میزبان (host key) ثابت می‌کند و شما هویت خود را با رمز عبور یا، بهتر از آن، با یک کلید SSH ثابت می‌کنید؛ از آن پس همه‌چیز رمزگذاری‌شده منتقل می‌شود.

## SSH چیست؟

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

دو برنامه در این کار شرکت دارند. **کلاینت SSH** روی رایانه شما اجرا می‌شود و اتصال را آغاز می‌کند؛ **سرور SSH**، برنامه‌ای پس‌زمینه که معمولاً `sshd` نام دارد، روی دستگاه دوردست اجرا می‌شود و به‌طور پیش‌فرض روی پورت TCP شماره 22 گوش می‌دهد. [⁦RFC 4251⁩](https://www.rfc-editor.org/rfc/rfc4251)، سند معماری نسخه کنونی این پروتکل، 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⁩](https://www.rfc-editor.org/rfc/rfc4253)، مشخصات لایه انتقال، گام‌های 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 در ویندوز](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse) این گام‌ها و نخستین اتصال را نشان می‌دهد.

### در 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](https://man.openbsd.org/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](https://man.openbsd.org/ssh) هر گزینه را شرح می‌دهد. از تونل فقط روی سرورهایی استفاده کنید که مالک یا مدیرشان هستید و فقط در شبکه‌هایی که اجازه این کار را دارید. تونل محتوای خود را از شبکه محلی پنهان می‌کند، اما آن را مجاز نمی‌کند: اگر یک مدرسه، یک کارفرما یا یک مرجع رسمی سرویسی را مسدود کرده باشد، عبور دادن آن از راه SSH همچنان آن قواعد را نقض می‌کند.

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

بله: `ssh -D 1080 -N user@server.example` یک پروکسی SOCKS5 روی پورت 1080 رایانه خودتان راه می‌اندازد و هر چه وارد آن شود را از راه سرورتان بیرون می‌فرستد؛ `-N` هیچ پوسته‌ای باز نمی‌کند و فقط تونل را برقرار می‌کند. **پروکسی SOCKS5** اتصال‌های یک برنامه را بی‌آنکه بخواند به هر آدرس و پورتی منتقل می‌کند، همان‌طور که در نوشته [پروکسی SOCKS5 چیست؟](/fa/blog/socks5-proxy-101) توضیح داده شده است.

اگر مرورگری را روی پروکسی SOCKS5 با آدرس `127.0.0.1` و پورت 1080 تنظیم کنید، وب‌سایت‌ها به‌جای آی‌پی اتصال خانگی شما آی‌پی سرورتان را می‌بینند. ابزارهای خط فرمان معمولاً پروکسی را از متغیرهای محیطی می‌گیرند که طرز کارشان در نوشته [تنظیمات پروکسی در لینوکس](/fa/blog/linux-proxy-settings) آمده است.

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

وقتی کاری به بیش از یک آدرس نیاز دارد، سرویس [پروکسی SOCKS5](https://proxynet.io/fa/socks5-proxy) ما با همان تنظیمات در همان برنامه‌ها کار می‌کند و آی‌پی‌های مسکونی و موبایل را در کشورهای بسیار، با هدف‌گیری بر اساس کشور و شهر، ارائه می‌دهد.

برای یک آدرس ثابت، [پروکسی دیتاسنتر](https://proxynet.io/fa/datacenter-proxy) بی‌آنکه سروری را اداره کنید آدرس‌های ⁦IPv4⁩ اختصاصی در بیش از 50 کشور در اختیارتان می‌گذارد.

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

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

| | SSH | SSL/TLS | VPN |
|---|---|---|---|
| از چه محافظت می‌کند | نشست شما روی یک سرور | یک اتصال، مانند HTTPS | همه ترافیک دستگاه |
| سرور چگونه بررسی می‌شود | کلید میزبان، ذخیره‌شده در نخستین استفاده | گواهی امضاشده به دست یک مرجع صدور | به پروتکل VPN بستگی دارد |
| کاربرد رایج | مدیریت سرور، انتقال فایل | وب‌سایت‌ها، ایمیل، APIها | شبکه اداره، وای‌فای عمومی |
| پورت پیش‌فرض | 22 | 443 برای HTTPS | به پروتکل بستگی دارد |

تفاوت عملی در این است که اعتماد چگونه آغاز می‌شود. مرورگر به یک وب‌سایت اعتماد می‌کند چون یک مرجع صدور گواهی، [گواهی SSL](/fa/blog/what-is-an-ssl-certificate) آن سایت را تأیید کرده است، در حالی که 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` ساخته‌اید وارد می‌شوید. اثر انگشت را یک بار بررسی کنید، هرگز بررسی کلید میزبان را خاموش نکنید و فقط جایی از تونل استفاده کنید که اجازه‌اش را دارید. وقتی به آدرس‌های خروجی بیشتری از آنچه یک سرور می‌دهد نیاز دارید، [محصولات پروکسی ما](/fa/proxy) را مقایسه کنید.
