مبانی SSH: کار با سرورها، کلاینتها و کلیدهای SSH
۲۱ بهمن ۱۴۰۳
SSH یک پروتکل امن و پر کاربرد برای اتصال از راه دور به سرور های لینوکسی است. این پروتکل یک رابط متنی قدرتمند فراهم میکند که از طریق آن میتوان یک شل (Shell) از راه دور راهاندازی کرد و دستورات را مستقیما روی سرور اجرا کرد.
پس از برقراری اتصال، تمام دستورات شما در ترمینال محلی مستقیما به سرور راه دور ارسال شده و در آنجا اجرا میشوند. این ویژگی SSH را به یک ابزار حیاتی برای مدیریت سرور ها، اجرای دستورات و انتقال داده های امن تبدیل کرده است.
در این راهنمای جامع SSH، روش های رایج اتصال به سرور، مدیریت کلاینت ها و پیکربندی کلید های SSH بررسی شده است. این مقاله یک مرجع سریع و کاربردی است برای کسانی که میخواهند با بهترین شیوه های مدیریت و ایمن سازی اتصالات SSH آشنا شوند؛ با لیارا همراه باشید.
مروری بر SSH
رایج ترین روش برای اتصال به یک سرور لینوکسی از راه دور، استفاده از SSH است. SSH که مخفف Secure Shell (شل امن) است، یک روش امن و مطمئن برای اجرای دستورات، اعمال تغییرات و پیکربندی سرویسها به صورت از راه دور را فراهم میکند. هنگامی که از طریق 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-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 پورت جدید را مشخص کنید.
برای این کار میتوانید از گزینه -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 به سرور راه دور برقرار میشود. سپس در سرور راه دور، یک اتصال به یک آدرس شبکه خارجی (یا داخلی) که توسط کاربر داده شده است برقرار شده و ترافیک به این مکان از طریق یک پورت خاص به کامپیوتر محلی شما تونل میشود.
این روش معمولاً برای عبور از یک محیط شبکهای با محدودیت کمتر از طریق فایروالها استفاده میشود. یکی دیگر از استفادههای رایج آن دسترسی به یک رابط وب که تنها برای “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 محلی خود تعامل داشته باشیم.
قطع ارتباط اجباری از سمت کلاینت (نحوه خروج از یک جلسه گیر کرده یا منجمد)
یکی از ویژگیهای مفید 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 کمک کند.