تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

مبانی SSH: کار با سرور‌ها، کلاینت‌ها و کلیدهای SSH


۲۱ بهمن ۱۴۰۳

SSH یک پروتکل امن و پر کاربرد برای اتصال از راه دور به سرور های لینوکسی است. این پروتکل یک رابط متنی قدرتمند فراهم می‌کند که از طریق آن می‌توان یک شل (Shell) از راه دور راه‌اندازی کرد و دستورات را مستقیما روی سرور اجرا کرد.

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

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

مروری بر SSH

رایج ترین روش برای اتصال به یک سرور لینوکسی از راه دور، استفاده از SSH است. SSH که مخفف Secure Shell (شل امن) است، یک روش امن و مطمئن برای اجرای دستورات، اعمال تغییرات و پیکربندی سرویس‌ها به صورت از راه دور را فراهم می‌کند. هنگامی که از طریق SSH به سرور متصل می‌شوید. با استفاده از یک حساب کاربری که در سرور راه دور وجود دارد، وارد می‌‌شوید.

نحوه عملکرد SSH

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

نحوه عملکرد SSH

اتصال SSH به صورت مدل کلاینت-سرور پیاده سازی شده است. برای برقراری اتصال، سرور راه دور باید نرم افزار SSH Daemon را اجرا کند. این نرم افزار به صورت مداوم به دنبال اتصالات SSH می‌گردد و درخواست های اتصال را احراز هویت کرده و محیط مناسب را برای کاربر فراهم می‌کند.

کاربران می‌توانند با استفاده از پسورد یا کلید SSH وارد سیستم شوند. در حالی که ورود با پسورد نسبتا ساده است. اما امنیت کمتری دارد و احتمال حملات Brute-force را افزایش می‌دهد. به همین دلیل، استفاده از احراز هویت مبتنی بر کلید SSH توصیه می‌شود، زیرا این روش بسیار امن تر است.

کلید های SSH شامل یک کلید عمومی و یک کلید خصوصی هستند، کلید عمومی می‌تواند به صورت آزادانه به اشتراک گذاشته شود، اما کلید خصوصی باید به طور امن نگهداری شود. برای احراز هویت SSH، کلید عمومی باید در فایل ~/.ssh/authorized_keys روی سرور قرار گیرد.

چگونه SSH کاربران را احراز هویت می‌کند؟

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

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

بیشتر بخوانید: SSH چیست؟

تولید و کار با کلید های SSH

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

تولید یک جفت کلید SSH

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

برای تولید یک جفت کلید RSA روی کامپیوتر محلی خود، دستور زیر را وارد کنید.

ssh-keygen

پیام زیر ظاهر می‌شود.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):

این پیام از شما می‌خواهد تا محلی را برای ذخیره کلید خصوصی RSA خود انتخاب کنید. با زدن کلید ENTER، محل پیش‌فرض انتخاب می‌شود که کلیدها در دایرکتوری مخفی .ssh در پوشه خانگی شما ذخیره می‌شوند. اگر همین محل را انتخاب کنید، کلاینت SSH به‌طور خودکار کلیدها را پیدا خواهد کرد.

سپس از شما خواسته می‌شود که یک پس‌عبارت وارد کنید (برای افزودن یک لایه امنیتی اضافی)

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

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

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

خروجی

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:e9:7c:fa:bf:c4:e5:9c:c9:b8:60:1f:fe:1c:d3:8a root@here
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| + |
| o S . |
| o . * + |
| o + = O . |
| + = = + |
| ....Eo+ |
+-----------------+

این فرایند یک جفت کلید SSH RSA در دایرکتوری .ssh در پوشه خانگی شما تولید کرده است.

  • ~/.ssh/id_rsa: کلید خصوصی. هرگز این فایل را به اشتراک نگذارید!
  • ~/.ssh/id_rsa.pub: کلید عمومی که می‌توان آن را آزادانه به اشتراک گذاشت.

توجه: برای ایجاد کلید SSH در macOS یا Windows Subsystem می‌توانید به راهنمای ما مراجعه کنید.

تولید جفت کلید SSH با تعداد بیت بیشتر

کلیدهای SSH به‌طور پیش‌فرض ۲۰۴۸ بیت دارند که معمولاً برای امنیت کافی هستند، اما می‌توانید تعداد بیت‌ها را بیشتر کنید تا امنیت بیشتری داشته باشید.

برای این کار، از آرگومان -b همراه با تعداد بیت مورد نظر استفاده کنید. اکثر سرورها از کلیدهایی با طول حداقل ۴۰۹۶ بیت پشتیبانی می‌کنند. کلیدهای طولانی‌تر ممکن است به دلیل حفاظت از حملات DDoS پذیرفته نشوند.

ssh-keygen -b 4096

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

Overwrite (y/n)?

اگر “بله” را انتخاب کنید، کلید قبلی شما بازنویسی می‌شود و دیگر نمی‌توانید از آن برای ورود به سرور استفاده کنید. بنابراین، این کار را با احتیاط انجام دهید.

تولید و کار با کلید های SSH

حذف یا تغییر پس‌عبارت روی کلید خصوصی

اگر برای کلید خصوصی خود پس‌عبارتی تنظیم کرده‌اید و می‌خواهید آن را تغییر دهید یا حذف کنید، به راحتی می‌توانید این کار را انجام دهید.

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

برای تغییر یا حذف پس‌عبارت، دستور زیر را وارد کنید.

ssh-keygen -p

سپس از شما خواسته می‌شود که محل کلید را وارد کنید.

Enter file in which the key is (/root/.ssh/id_rsa):

اگر محل کلید صحیح است، می‌توانید با زدن کلید ENTER آن را تایید کنید. در غیر این صورت، مسیر جدید را وارد کنید.

در مرحله بعد، از شما خواسته می‌شود که پس‌عبارت قبلی خود را وارد کنید. سپس می‌توانید پس‌عبارت جدید وارد کنید یا برای حذف آن، فقط کلید ENTER را فشار دهید.

نمایش انگشت‌نگاری کلید SSH

هر جفت کلید SSH یک “انگشت‌نگاری” رمزنگاری منحصر به فرد دارد که می‌توان از آن برای شناسایی کلیدها استفاده کرد. این ویژگی می‌تواند در بسیاری از موارد مفید باشد.

برای مشاهده انگشت‌نگاری یک کلید SSH، دستور زیر را وارد کنید.

ssh-keygen -l

سپس از شما خواسته می‌شود که محل کلید را وارد کنید.

Enter file in which the key is (/root/.ssh/id_rsa):

اگر محل کلید صحیح است، می‌توانید با زدن کلید ENTER آن را تایید کنید، در غیر این صورت مسیر جدید را وارد کنید.

در نهایت، یک رشته نمایش داده می‌شود که شامل طول بیت کلید، انگشت‌نگاری، حساب کاربری و میزبان مربوطه و الگوریتم استفاده شده است.

کپی کردن کلید عمومی SSH به سرور با استفاده از SSH-Copy-ID

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

اگر هم‌اکنون دسترسی SSH مبتنی بر پس‌ورد به سرور دارید و ابزار ssh-copy-id نصب است، این فرایند بسیار ساده است. ابزار ssh-copy-id به‌طور پیش‌فرض در بسیاری از توزیع‌های لینوکس نصب است.

برای استفاده از این ابزار، دستور زیر را وارد کنید.

ssh-copy-id username@remote_host

سپس از شما خواسته می‌شود که رمز عبور حساب کاربری در سرور راه دور را وارد کنید.

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

پس از وارد کردن رمز عبور، محتویات فایل ~/.ssh/id_rsa.pub شما به انتهای فایل ~/.ssh/authorized_keys حساب کاربری در سرور اضافه می‌شود.

بعد از این مرحله، می‌توانید بدون رمز عبور وارد سرور شوید.

ssh username@remote_host

کپی کردن کلید عمومی SSH به سرور بدون استفاده از SSH-Copy-ID

اگر ابزار ssh-copy-id در دسترس نیست، اما هنوز دسترسی SSH مبتنی بر پس‌ورد به سرور دارید، می‌توانید محتویات کلید عمومی خود را به روش دیگری کپی کنید.

برای این کار، ابتدا محتویات کلید را با دستور زیر مشاهده کرده و آن را به دستور SSH منتقل کنید.

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

پس از وارد کردن رمز عبور، کلید شما به سرور منتقل می‌شود و می‌توانید بدون رمز عبور وارد آن شوید.

ssh username@remote_host

کپی کردن کلید عمومی SSH به سرور به‌صورت دستی

اگر دسترسی SSH مبتنی بر پس‌ورد به سرور ندارید، باید کلید عمومی خود را به‌طور دستی به سرور اضافه کنید.

ابتدا محتویات کلید عمومی خود را با دستور زیر مشاهده کنید.

cat ~/.ssh/id_rsa.pub

سپس این محتوا را کپی کرده و در مکان مناسب روی سرور قرار دهید. برای این کار باید از روش‌های دیگر (مثل کنسول وب DigitalOcean) وارد سرور شوید.

در سرور راه دور، اگر دایرکتوری ~/.ssh وجود ندارد، آن را ایجاد کنید.

mkdir -p ~/.ssh

سپس می‌توانید محتویات کلید را به فایل ~/.ssh/authorized_keys اضافه کنید.

echo public_key_string >> ~/.ssh/authorized_keys

اکنون می‌توانید بدون رمز عبور وارد سرور شوید.

دستورالعمل های ابتدایی برای اتصال به سرور با SSH

این بخش به برخی از مباحث ابتدایی در خصوص نحوه اتصال به یک سرور با استفاده از SSH پرداخته است.

اتصال به یک سرور از راه دور

برای اتصال به یک سرور از راه دور و باز کردن یک جلسه شل (Shell) در آن، می‌توانید از دستور ssh استفاده کنید.

ساده‌ترین فرم این دستور این‌گونه است که فرض می‌شود نام کاربری شما در ماشین محلی همانند نام کاربری شما در سرور از راه دور است. در این صورت می‌توانید به راحتی از دستور زیر استفاده کنید.

ssh remote_host

اگر نام کاربری شما در سرور از راه دور متفاوت است، باید نام کاربری را به این صورت وارد کنید.

ssh username@remote_host

بار اول که به یک میزبان جدید متصل می‌شوید، پیامی مشابه این نمایش داده می‌شود.

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

برای تأسیس اتصال، تایپ yes کنید تا اصالت میزبان از راه دور را بپذیرید.

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

اجرای یک دستور واحد در سرور از راه دور

اگر قصد دارید به جای ایجاد یک جلسه شل، یک دستور خاص را روی سرور از راه دور اجرا کنید، می‌توانید دستور را پس از اطلاعات اتصال وارد کنید.

ssh username@remote_host command_to_run

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

دستور العمل های ابتدایی برای اتصال به سرور با SSH

ورود به سرور با پورت متفاوت

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

برای این کار می‌توانید از گزینه -p استفاده کنید.

ssh -p port_num username@remote_host

برای جلوگیری از وارد کردن پورت هر بار که وارد سرور می‌شوید، می‌توانید یک فایل پیکربندی در دایرکتوری ~/.ssh داخل دایرکتوری خانگی سیستم محلی خود ایجاد یا ویرایش کنید.

برای ویرایش یا ایجاد فایل پیکربندی، دستور زیر را وارد کنید.

nano ~/.ssh/config

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

Host remote_alias
HostName remote_host
Port port_num

با این کار، می‌توانید بدون نیاز به وارد کردن پورت در هر بار اتصال، وارد سرور شوید.

افزودن کلیدهای SSH به SSH Agent برای جلوگیری از تایپ مجدد پس‌عبارت

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

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

این موضوع به ویژه زمانی مهم است که نیاز دارید اعتبارنامه‌های SSH خود را به جلو منتقل کنید (که در بخش‌های بعدی توضیح داده می‌شود).

برای شروع SSH Agent، دستور زیر را وارد کنید.

eval $(ssh-agent)

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

ssh-add

سپس پس‌عبارت کلید خود را وارد کنید (اگر پس‌عبارتی برای آن تنظیم کرده‌اید)

Enter passphrase for /home/demo/.ssh/id_rsa:
Identity added: /home/demo/.ssh/id_rsa (/home/demo/.ssh/id_rsa)

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

همینطور بخوانید: نحوه شخصی‌سازی اتصال به سرور مجازی لینوکس (VPS) با SSH

انتقال اعتبارنامه‌های SSH برای استفاده در سرور

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

برای شروع، باید SSH Agent را اجرا کرده و کلید SSH خود را به آن اضافه کرده باشید (مطابق با توضیحات قبلی). پس از این، باید از گزینه -A برای اتصال به سرور اول استفاده کنید. این گزینه، اعتبارنامه‌های شما را برای این جلسه به سرور ارسال می‌کند.

ssh -A username@remote_host

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

گزینه های پیکربندی سمت سرور

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

غیرفعال کردن احراز هویت با رمز عبور

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

برای این کار، به سرور از راه دور متصل شوید و فایل /etc/ssh/sshd_config را با دسترسی روت یا با استفاده از sudo باز کنید.

sudo nano /etc/ssh/sshd_config

درون این فایل، به دنبال دستور PasswordAuthentication بگردید. اگر آن را کامنت کرده‌اید، کامنت را بردارید. مقدار آن را به “no” تغییر دهید تا ورود با رمز عبور غیرفعال شود.

PasswordAuthentication no

پس از انجام تغییرات، فایل را ذخیره کرده و ببندید. برای اعمال تغییرات، سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

اکنون، تمام حساب‌های کاربری در سیستم نمی‌توانند با استفاده از رمز عبور وارد SSH شوند.

تغییر پورت اجرای سرویس SSH

برخی از مدیران سیستم پیشنهاد می‌دهند که پورت پیش‌فرض سرویس SSH را تغییر دهید. این کار می‌تواند کمک کند تا تعداد تلاش‌های احراز هویت که سرور شما از ربات‌های خودکار دریافت می‌کند کاهش یابد.

برای تغییر پورت سرویس SSH، باید به سرور از راه دور وارد شوید. فایل sshd_config را با دسترسی روت باز کنید.

sudo nano /etc/ssh/sshd_config

درون فایل، به دنبال مشخصه Port 22 بگردید و آن را تغییر دهید تا پورت مورد نظر شما را نشان دهد. به عنوان مثال، برای تغییر پورت به 4444، این تغییر را انجام دهید.

#Port 22
Port 4444

پس از انجام تغییرات، فایل را ذخیره کرده و ببندید. برای اعمال تغییرات، سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

پس از ریستارت سرویس، برای اتصال باید شماره پورت را مشخص کنید.

محدود کردن کاربران مجاز برای اتصال از طریق SSH

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

به سرور از راه دور وارد شوید و فایل /etc/ssh/sshd_config را با دسترسی روت یا sudo باز کنید.

sudo nano /etc/ssh/sshd_config

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

AllowUsers user1 user2

فایل را ذخیره کرده و ببندید. سپس سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

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

AllowGroups sshmembers

سپس، گروه جدید را ایجاد کنید.

sudo groupadd -r sshmembers

و کاربران مورد نظر را به این گروه اضافه کنید.

sudo usermod -a -G sshmembers user1
sudo usermod -a -G sshmembers user2

در نهایت، سرویس SSH را ریستارت کنید.

گزینه های پیکر بندی سمت سرور

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

غیرفعال کردن ورود روت

معمولاً پس از پیکربندی یک حساب کاربری SSH با دسترسی sudo، بهتر است ورود به حساب کاربری روت را از طریق SSH غیرفعال کنید.

برای این کار، فایل پیکربندی SSH را با دسترسی روت یا sudo باز کنید.

sudo nano /etc/ssh/sshd_config

درون فایل، به دنبال دستور PermitRootLogin بگردید. اگر کامنت شده است، آن را از حالت کامنت خارج کرده و مقدار آن را به “no” تغییر دهید.

PermitRootLogin no

فایل را ذخیره کرده و ببندید. برای اعمال تغییرات، سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

مجاز کردن دسترسی روت برای دستورهای خاص

در برخی موارد ممکن است بخواهید دسترسی روت را به طور کلی غیرفعال کنید، اما اجازه دهید که برخی برنامه‌ها به درستی اجرا شوند. یک مثال از این می‌تواند روتین پشتیبان‌گیری باشد.

این کار را می‌توان از طریق فایل authorized_keys کاربر روت انجام داد که در آن کلیدهای SSH مجاز برای استفاده از حساب روت ذخیره شده‌اند.

کلید مورد نظر از کامپیوتر محلی خود را به فایل authorized_keys کاربر روت در سرور اضافه کنید. این کار را با دستور ssh-copy-id انجام دهید، اما می‌توانید از هر روش دیگری که در بخش‌های دیگر شرح داده‌ایم استفاده کنید.

ssh-copy-id root@remote_host

پس از آن، وارد سرور شوید و فایل authorized_keys را با دسترسی روت یا sudo باز کنید.

sudo nano /root/.ssh/authorized_keys

در ابتدای خطی که کلید را وارد کرده‌اید، دستور command= را اضافه کنید که دستور مجاز برای این کلید را مشخص می‌کند. این دستور باید شامل مسیر کامل اجرایی و هر آرگومان‌های لازم باشد.

command="/path/to/command arg1 arg2" ssh-rsa ...

فایل را ذخیره کرده و ببندید.

سپس، فایل sshd_config را با دسترسی روت یا sudo باز کنید.

sudo nano /etc/ssh/sshd_config

دستور PermitRootLogin را پیدا کرده و مقدار آن را به forced-commands-only تغییر دهید. این کار فقط اجازه می‌دهد که کلیدهای SSH وارد شوند و تنها زمانی که دستور برای کلید مشخص شده باشد، از دسترسی روت استفاده کنند.

PermitRootLogin forced-commands-only

فایل را ذخیره کرده و ببندید. برای اعمال تغییرات، سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

انتقال نمایش برنامه‌های X به کلاینت

سرویس SSH می‌تواند به طور خودکار نمایش برنامه‌های X در سرور را به سیستم کلاینت منتقل کند. برای این کار، سیستم کلاینت باید دارای سیستم پنجره X باشد.

برای فعال کردن این عملکرد، به سرور از راه دور وارد شوید و فایل sshd_config را با دسترسی روت یا sudo ویرایش کنید:

sudo nano /etc/ssh/sshd_config

به دنبال دستور X11Forwarding بگردید. اگر آن را کامنت کرده‌اید، کامنت را بردارید و یا در صورت لزوم، آن را ایجاد کنید و مقدار آن را “yes” قرار دهید.

X11Forwarding yes

فایل را ذخیره کرده و ببندید. برای اعمال تغییرات، سرویس SSH را ریستارت کنید.

برای اوبونتو/دبیان

sudo service ssh restart

برای سنت‌اواس/فدورا

sudo service sshd restart

برای اتصال به سرور و انتقال نمایش برنامه، هنگام اتصال از گزینه -X استفاده کنید.

ssh -X username@remote_host

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

تنظیمات پیکربندی سمت کلاینت

بر روی کامپیوتر محلی خود، می‌توانید پیکربندی‌های جداگانه‌ای برای برخی یا تمامی سرورهایی که به آن‌ها متصل می‌شوید، تعریف کنید. این تنظیمات می‌توانند در فایل ~/.ssh/config ذخیره شوند که توسط کلاینت SSH هر بار که اجرا می‌شود، خوانده می‌شود.

برای ایجاد یا باز کردن این فایل، از ویرایشگر متن خود استفاده کنید.

nano ~/.ssh/config

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

مثال پیکربندی به این صورت خواهد بود.

~/.ssh/config
Host testhost
HostName your_domain
Port 4444
User demo

حالا می‌توانید با تایپ کردن دستور زیر به راحتی به سرور متصل شوید.

ssh testhost

همچنین می‌توانید از کاراکترهای wildcard برای مطابقت با چندین سرور استفاده کنید. توجه داشته باشید که تطابق‌های بعدی می‌توانند تطابق‌های قبلی را لغو کنند. بنابراین، بهتر است که تطابق‌های کلی را در ابتدا قرار دهید. به عنوان مثال، می‌توانید اتصال به تمامی سرورها را به‌طور پیش‌فرض برای عدم اجازه‌ی ارسال X Forwarding تنظیم کرده و سپس برای سرور your_domain استثنا قائل شوید.

~/.ssh/config
Host *
ForwardX11 no

Host testhost
HostName your_domain
ForwardX11 yes
Port 4444
User demo

فایل را ذخیره کرده و ببندید.

حفظ اتصال فعال برای جلوگیری از تایم‌اوت

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

می‌توانید کلاینت خود را به‌گونه‌ای پیکربندی کنید که هر از گاهی یک بسته به سرور ارسال کند تا از این وضعیت جلوگیری کند.

تنظیمات پیکر بندی سمت کلاینت

برای این کار، می‌توانید پیکربندی را برای تمامی اتصالات در فایل ~/.ssh/config تنظیم کنید. آن را باز کنید.

nano ~/.ssh/config

اگر فایلی وجود ندارد، در ابتدای فایل، یک بخش تعریف کنید که برای تمام سرورها مطابقت داشته باشد. دستور ServerAliveInterval را به مقدار “120” تنظیم کنید تا هر دو دقیقه یک بسته به سرور ارسال شود. این مقدار کافی خواهد بود تا سرور از قطع اتصال جلوگیری کند.

~/.ssh/config
Host *
ServerAliveInterval 120

فایل را ذخیره کرده و ببندید.

غیرفعال‌سازی بررسی میزبان

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

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

در شرایط خاص، ممکن است بخواهید این ویژگی را غیرفعال کنید. توجه داشته باشید که این می‌تواند یک خطر امنیتی بزرگ باشد، بنابراین اگر سیستم خود را به این صورت پیکربندی می‌کنید، باید کاملاً مطمئن باشید که چه کاری انجام می‌دهید.

برای اعمال این تغییرات، فایل ~/.ssh/config را باز کنید.

nano ~/.ssh/config

اگر فایلی وجود ندارد، در ابتدای فایل، یک بخش تعریف کنید که برای تمام سرورها مطابقت داشته باشد. دستور StrictHostKeyChecking را بر روی مقدار no تنظیم کنید تا میزبان‌های جدید به‌طور خودکار به فایل known_hosts اضافه شوند. دستور UserKnownHostsFile را بر روی /dev/null تنظیم کنید تا از نمایش هشدارهای جدید یا تغییر یافته جلوگیری شود.

~/.ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

می‌توانید بررسی میزبان را به‌طور موردی برای سرورهای دیگر فعال کنید.

~/.ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Host testhost
HostName your_domain
StrictHostKeyChecking ask
UserKnownHostsFile /home/demo/.ssh/known_hosts

استفاده از Multiplexing در SSH بر روی یک اتصال TCP واحد

در برخی موارد، ایجاد یک اتصال TCP جدید ممکن است زمان‌بر باشد. اگر چندین بار به همان ماشین متصل می‌شوید، می‌توانید از multiplexing استفاده کنید.

Multiplexing SSH به شما این امکان را می‌دهد که از همان اتصال TCP برای چندین جلسه SSH استفاده کنید. این کار برخی از عملیات لازم برای برقراری یک جلسه جدید را حذف کرده و ممکن است سرعت را افزایش دهد. همچنین محدود کردن تعداد اتصالات ممکن است برای دلایل دیگر مفید باشد.

برای راه‌اندازی multiplexing، می‌توانید اتصالات را به‌صورت دستی تنظیم کنید یا می‌توانید کلاینت خود را پیکربندی کنید تا به‌طور خودکار از multiplexing استفاده کند. در اینجا گزینه دوم را نشان خواهیم داد.

برای پیکربندی multiplexing، فایل پیکربندی کلاینت SSH را در کامپیوتر محلی خود ویرایش کنید.

nano ~/.ssh/config

اگر در ابتدای فایل یک تعریف wildcard از میزبان ندارید، یکی ایجاد کنید (Host *). در اینجا مقادیر ControlMaster، ControlPath و ControlPersist را برای پیکربندی multiplexing تنظیم خواهیم کرد.

مقدار ControlMaster باید به auto تنظیم شود تا به‌طور خودکار اگر امکان multiplexing وجود داشته باشد، از آن استفاده کند. ControlPath مسیر به سوکت کنترل را مشخص خواهد کرد. اولین جلسه این سوکت را ایجاد خواهد کرد و جلسات بعدی می‌توانند آن را پیدا کنند زیرا با نام کاربری، میزبان و پورت شناسایی شده است.

تنظیم ControlPersist به مقدار 1 به این معناست که اتصال اصلی به‌طور خودکار پس از یک ثانیه از بسته شدن آخرین جلسه SSH قطع می‌شود.

~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/multiplex/%r@%h:%p
ControlPersist 1

فایل را ذخیره کرده و ببندید. حالا باید دایرکتوری که در مسیر کنترل مشخص کرده‌ایم را ایجاد کنید.

mkdir ~/.ssh/multiplex

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

اگر به دلایلی نیاز دارید که موقتا از پیکربندی multiplexing صرف‌نظر کنید، می‌توانید این کار را با استفاده از پرچم -S و تنظیم آن به none انجام دهید.

ssh -S none username@remote_host

تنظیم تونل های SSH

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

پیکربندی تونل محلی به یک سرور

اتصالات SSH می‌توانند برای تونل کردن ترافیک از پورت‌های سیستم محلی به پورت‌های یک سرور راه دور استفاده شوند.

تنظیم تونل های SSH

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

این روش معمولاً برای عبور از یک محیط شبکه‌ای با محدودیت کمتر از طریق فایروال‌ها استفاده می‌شود. یکی دیگر از استفاده‌های رایج آن دسترسی به یک رابط وب که تنها برای “localhost” قابل دسترسی است، از یک مکان راه دور است.

برای ایجاد یک تونل محلی به سرور راه دور خود، باید از پارامتر -L هنگام اتصال استفاده کنید و سه قطعه اطلاعات اضافی وارد کنید.

  • پورت محلی که می‌خواهید به اتصال تونل دسترسی پیدا کنید.
  • هاست مورد نظر که می‌خواهید سرور راه دور به آن متصل شود.
  • پورتی که می‌خواهید سرور راه دور به آن متصل شود.

این سه پارامتر به‌ترتیب (با دو نقطه به‌عنوان جداکننده) به عنوان آرگومان به پرچم -L داده می‌شوند. همچنین از پرچم -f برای این‌که SSH به پس‌زمینه برود قبل از اجرای دستور و پرچم -N که مانع از باز شدن شل یا اجرای برنامه‌ای در سرور راه دور می‌شود، استفاده خواهیم کرد.

برای مثال، برای اتصال به your_domain در پورت 80 روی سرور راه دور و در دسترس قرار دادن این اتصال روی کامپیوتر محلی شما در پورت 8888، می‌توانید دستور زیر را وارد کنید.

ssh -f -N -L 8888:your_domain:80 username@remote_host

اکنون، اگر مرورگر محلی خود را به آدرس 127.0.0.1:8888 هدایت کنید، باید محتوای موجود در your_domain در پورت 80 را مشاهده کنید.

راهنمای کلی‌تر برای این دستور به‌صورت زیر است.

ssh -L your_port:site_or_IP_to_access:site_port username@host

چون اتصال در پس‌زمینه است، برای قطع آن باید PID فرآیند را پیدا کنید. برای این‌کار می‌توانید با جستجو برای پورت فوروارد شده این کار را انجام دهید.

ps aux | grep 8888

خروجی به‌صورت زیر خواهد بود.

1001      5965  0.0  0.0  48168  1136 ?        Ss   12:28   0:00 ssh -f -N -L 8888:your_domain:80 username@remote_host
1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888

سپس می‌توانید فرآیند را با هدف قرار دادن PID، که در ستون دوم خط تطبیق یافته با دستور SSH شما قرار دارد، قطع کنید.

kill 5965

روش دیگری این است که اتصال را بدون پرچم -f شروع کنید. این کار اتصال را در پیش‌زمینه نگه می‌دارد و از شما می‌خواهد که از ترمینال برای مدت زمان فورواردینگ استفاده نکنید. مزیت این روش این است که می‌توانید تونل را با زدن CTRL-C به‌راحتی قطع کنید.

پیکربندی تونل راه دور به سرور

اتصالات SSH می‌توانند برای تونل کردن ترافیک از پورت‌های کامپیوتر محلی به پورت‌های سرور راه دور نیز استفاده شوند.

در یک تونل راه دور، ابتدا به یک سرور راه دور متصل می‌شوید. در حین ایجاد تونل، یک پورت راه دور مشخص می‌شود. این پورت روی سرور راه دور سپس به ترکیب هاست و پورت خاصی که از کامپیوتر محلی به آن متصل است تونل می‌شود. این کار به کامپیوتر راه دور این امکان را می‌دهد که از طریق کامپیوتر محلی به یک هاست دسترسی پیدا کند.

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

برای ایجاد یک تونل راه دور به سرور راه دور خود، باید از پارامتر -R هنگام اتصال استفاده کنید و سه قطعه اطلاعات اضافی را وارد کنید.

  • پورت که کامپیوتر راه دور می‌تواند به آن تونل متصل شود.
  • هاستی که می‌خواهید کامپیوتر محلی شما به آن متصل شود.
  • پورتی که می‌خواهید کامپیوتر محلی شما به آن متصل شود.

این سه پارامتر به‌ترتیب (با دو نقطه به‌عنوان جداکننده) به عنوان آرگومان به پرچم -R داده می‌شوند. همچنین از پرچم -f و -N استفاده خواهیم کرد.

برای مثال، برای اتصال به your_domain در پورت 80 روی کامپیوتر محلی و در دسترس قرار دادن این اتصال روی سرور راه دور در پورت 8888، می‌توانید دستور زیر را وارد کنید.

ssh -f -N -R 8888:your_domain:80 username@remote_host

اکنون، اگر در سرور راه دور مرورگر وب خود را به آدرس 127.0.0.1:8888 هدایت کنید، باید محتوای موجود در your_domain در پورت 80 را مشاهده کنید.

راهنمای کلی‌تر برای این دستور به‌صورت زیر است.

ssh -R remote_port:site_or_IP_to_access:site_port username@host

چون اتصال در پس‌زمینه است، برای قطع آن باید PID فرآیند را پیدا کنید. برای این‌کار می‌توانید با جستجو برای پورت فوروارد شده این کار را انجام دهید.

ps aux | grep 8888

سپس می‌توانید فرآیند را با هدف قرار دادن PID، که در ستون دوم خط تطبیق یافته با دستور SSH شما قرار دارد، قطع کنید.

kill 5965

روش دیگری این است که اتصال را بدون پرچم -f شروع کنید. این کار اتصال را در پیش‌زمینه نگه می‌دارد و از شما می‌خواهد که از ترمینال برای مدت زمان فورواردینگ استفاده نکنید. مزیت این روش این است که می‌توانید تونل را با زدن CTRL-C به‌راحتی قطع کنید.

پیکربندی تونل دینامیک به سرور راه دور

اتصالات SSH می‌توانند برای تونل کردن ترافیک از پورت‌های کامپیوتر محلی به پورت‌های سرور راه دور استفاده شوند.

یک تونل دینامیک مشابه تونل محلی است به این معنی که این امکان را می‌دهد که کامپیوتر محلی از طریق یک سرور راه دور به منابع دیگر متصل شود. تونل دینامیک این کار را تنها با مشخص کردن یک پورت محلی انجام می‌دهد. برنامه‌هایی که می‌خواهند از این پورت برای تونل کردن استفاده کنند باید قادر به ارتباط با استفاده از پروتکل SOCKS باشند تا بسته‌ها به‌درستی در طرف دیگر تونل هدایت شوند.

ترافیک که به این پورت محلی منتقل می‌شود به سرور راه دور ارسال می‌شود. از آنجا، پروتکل SOCKS برای برقراری اتصال به مقصد مورد نظر تفسیر می‌شود. این روش به برنامه‌های SOCKS-آگاه این امکان را می‌دهد که به هر تعدادی از مکان‌ها از طریق سرور راه دور متصل شوند، بدون نیاز به تونل‌های ایستا متعدد.

برای برقراری اتصال، باید از پرچم -D به همراه پورت محلی که می‌خواهید به تونل دسترسی پیدا کنید، استفاده کنید. همچنین از پرچم -f و -N استفاده خواهیم کرد.

برای مثال، برای ایجاد یک تونل روی پورت 7777، می‌توانید دستور زیر را وارد کنید.

ssh -f -N -D 7777 username@remote_host

از اینجا، می‌توانید برنامه‌ای که از SOCKS پشتیبانی می‌کند (مثل مرورگر وب) را به پورت انتخابی خود هدایت کنید. برنامه اطلاعات خود را به یک سوکت مرتبط با پورت ارسال خواهد کرد.

روش هدایت ترافیک به پورت SOCKS بسته به برنامه متفاوت خواهد بود. به‌عنوان مثال، در فایرفاکس، مسیر کلی عبارت است از: Preferences > Advanced > Settings > Manual proxy configurations. در کروم، می‌توانید برنامه را با استفاده از پرچم --proxy-server= شروع کنید.

چون اتصال در پس‌زمینه است، برای قطع آن باید PID فرآیند را پیدا کنید. برای این‌کار می‌توانید با جستجو برای پورت فوروارد شده این کار را انجام دهید.

ps aux | grep 8888

سپس می‌توانید فرآیند را با هدف قرار دادن PID، که در ستون دوم خط تطبیق یافته با دستور SSH شما قرار دارد، قطع کنید.

kill 5965

روش دیگری این است که اتصال را بدون پرچم -f شروع کنید. این کار اتصال را در پیش‌زمینه نگه می‌دارد و از شما می‌خواهد که از ترمینال برای مدت زمان فورواردینگ استفاده نکنید. مزیت این روش این است که می‌توانید تونل را با زدن CTRL-C به‌راحتی قطع کنید.

استفاده از کدهای فرار SSH برای کنترل اتصالات

استفاده از کدهای فرار SSH برای کنترل اتصالات

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

قطع ارتباط اجباری از سمت کلاینت (نحوه خروج از یک جلسه گیر کرده یا منجمد)

یکی از ویژگی‌های مفید OpenSSH که به طور عمده نادیده گرفته می‌شود، امکان کنترل جنبه‌های خاصی از نشست از داخل آن است.

این دستورات را می‌توان با شروع کد کنترل ~ در داخل یک نشست SSH اجرا کرد. دستورات کنترل فقط در صورتی تفسیر می‌شوند که اولین چیزی که پس از یک خط جدید تایپ می‌کنید، این دستورات باشند. بنابراین همیشه یک یا دو بار دکمه ENTER را فشار دهید قبل از اینکه از این دستورات استفاده کنید.

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

برای قطع اتصال از سمت کلاینت، از کد کنترل (~) به همراه نقطه (.) استفاده کنید. اگر اتصال شما با مشکل مواجه است، احتمالاً در یک نشست ترمینال گیر کرده به نظر می‌رسید. این دستورات را بدون بازخورد تایپ کنید تا قطع اتصال از سمت کلاینت انجام شود.

[ENTER]
~.

اتصال باید بلافاصله قطع شده و شما را به نشست شل محلی بازمی‌گرداند.

قرار دادن یک نشست SSH در پس‌زمینه

یکی دیگر از ویژگی‌های مفید OpenSSH که اغلب نادیده گرفته می‌شود، این است که می‌توان جنبه‌های خاصی از نشست را از داخل ارتباط کنترل کرد.

این دستورات را می‌توان با شروع کد کنترل ~ از داخل یک نشست SSH اجرا کرد. دستورات کنترل فقط در صورتی تفسیر می‌شوند که اولین چیزی که پس از یک خط جدید تایپ می‌کنید، این دستورات باشند. بنابراین همیشه یک یا دو بار دکمه ENTER را فشار دهید قبل از اینکه از این دستورات استفاده کنید.

یکی از قابلیت‌هایی که این امکان را می‌دهد، قرار دادن یک نشست SSH در پس‌زمینه است. برای انجام این کار، باید کد کنترل (~) را وارد کرده و سپس از میان‌بر صفحه‌کلید مرسوم برای قرار دادن یک کار در پس‌زمینه (CTRL-z) استفاده کنید:

[ENTER]
~[CTRL-z]

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

برای فعال‌سازی مجدد آخرین وظیفه‌ای که در پس‌زمینه قرار داده‌اید، می‌توانید تایپ کنید.

fg

اگر چندین وظیفه در پس‌زمینه دارید، می‌توانید با تایپ دستور زیر، وظایف موجود را مشاهده کنید.

jobs

خروجی:

[1]+  Stopped                 ssh username@some_host
[2] Stopped ssh username@another_host

سپس می‌توانید هر یک از وظایف را با استفاده از اندیس در ستون اول و علامت درصد به جلو بیاورید.

fg %2

تغییر تنظیمات فورواردینگ پورت در یک اتصال SSH موجود

یکی دیگر از ویژگی‌های مفید OpenSSH این است که می‌توانید جنبه‌های خاصی از نشست را از داخل آن کنترل کنید.

این دستورات را می‌توان با شروع کد کنترل ~ از داخل یک نشست SSH اجرا کرد. دستورات کنترل فقط در صورتی تفسیر می‌شوند که اولین چیزی که پس از یک خط جدید تایپ می‌کنید، این دستورات باشند. بنابراین همیشه یک یا دو بار دکمه ENTER را فشار دهید قبل از اینکه از این دستورات استفاده کنید.

یکی از قابلیت‌هایی که این امکان را می‌دهد این است که کاربر بتواند تنظیمات فورواردینگ پورت را پس از برقراری اتصال تغییر دهد. این امکان به شما اجازه می‌دهد تا قوانین فورواردینگ پورت را به صورت آنی ایجاد یا حذف کنید.

برای دسترسی به رابط خط فرمان SSH، که مجموعه محدودی از دستورات معتبر را دارد، باید از کد کنترل (~) و “C” استفاده کنید.

[ENTER]
~C
ssh>

اکنون یک پرامپت فرمان SSH خواهید داشت. برای مشاهده گزینه‌های موجود، می‌توانید از این پرامپت دستور -h را تایپ کنید. اگر هیچ چیزی بازنگشت، ممکن است مجبور شوید با استفاده از ~v چند بار وضوح خروجی SSH خود را افزایش دهید.

[ENTER]
~v
~v
~v
~C
-h

دستورات.

      -L[bind_address:]port:host:hostport    درخواست فورواردینگ محلی
-R[bind_address:]port:host:hostport درخواست فورواردینگ از راه دور
-D[bind_address:]port درخواست فورواردینگ داینامیک
-KL[bind_address:]port لغو فورواردینگ محلی
-KR[bind_address:]port لغو فورواردینگ از راه دور
-KD[bind_address:]port لغو فورواردینگ داینامیک

همانطور که می‌بینید، می‌توانید به راحتی هر یک از گزینه‌های فورواردینگ را با استفاده از گزینه‌های مناسب پیاده‌سازی کنید (برای اطلاعات بیشتر به بخش فورواردینگ مراجعه کنید). همچنین می‌توانید یک تونل را با دستور “kill” مشخص شده با “K” قبل از حرف نوع فورواردینگ نابود کنید. به عنوان مثال، برای نابود کردن فورواردینگ محلی (-L)، می‌توانید از دستور -KL استفاده کنید. تنها نیاز است پورت را وارد کنید.

برای تنظیم یک فورواردینگ پورت محلی، می‌توانید تایپ کنید.

[ENTER]
~C
-L 8888:127.0.0.1:80

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

[ENTER]
~C
-KL 8888
تنظیمات SSH

جمع بندی

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