SSH یا Secure Shell یک پروتکل امن برای دسترسی از راه دور به سیستمهای کامپیوتری است. این پروتکل امکان برقراری یک ارتباط رمزنگاری شده بین کاربر و سیستم مقصد را به گونهای فراهم میکند که دادههای ارسالی و دریافتی در برابر تهدیدات امنیتی مانند حملات جعل هویت و رصد ترافیک شبکه محافظت میشوند. کاربران میتوانند از طریق SSH به ترمینال سیستم مقصد متصل شده و دستورات را اجرا کنند، فایلها را جابجا کرده و از خدمات شبکه استفاده کنند. SSH با رمزگذاری قدرتمند و پروتکلهای احراز هویت مطمئن، یک روش امن برای مدیریت از راه دور سیستمهای کامپیوتری محسوب میشود.
فهرست محتوا
SSH چیست و چه کاربردهایی دارد؟
SSH یا Secure Shell یک پروتکل رایج و پرکاربرد برای برقراری ارتباط امن میان سیستمهای کامپیوتری در شبکه است. این پروتکل که در سال 1995 معرفی شد، امروزه یکی از استانداردهای اصلی در زمینه دسترسی از راه دور و انتقال امن دادهها به شمار میرود. SSH یک لایه رمزنگاری قوی را بر روی ترافیک شبکه اعمال میکند تا از دادهها در برابر تهدیدات امنیتی مانند حملات جعل هویت (Spoofing)، رصد ترافیک (Sniffing) و حملات مرد میانی (Man in the Middle) محافظت کند. این پروتکل از الگوریتمهای رمزنگاری قدرتمند مانند RSA ،DSA و الگوریتمهای هش مانند SHA-2 استفاده میکند.
کاربردهای SSH
SSH در زمینههای مختلف از جمله مراکز داده، زیرساختهای ابری، مدیریت سیستمها، توسعه نرمافزارها و امنیت شبکه، کاربردهای گستردهای دارد. برخی از این کاربردها عبارتند از:
- دسترسی از راه دور به ترمینال (Remote Terminal Access): یکی از کاربردهای اصلی SSH، دسترسی امن به ترمینال سیستمهای راه دور است. کاربران میتوانند از طریق SSH به ترمینال سیستمهای لینوکس، مک و حتی ویندوز متصل شوند و دستورات را در آن سیستم اجرا کنند.
- انتقال امن فایلها (Secure File Transfer): با استفاده از پروتکلهای جانبی مانند SCP و SFTP، کاربران قادرند فایلها را به صورت رمزنگاری شده میان سیستمهای مختلف منتقل کنند.
- تونل امن (Secure Tunneling): این ابزار میتواند به عنوان یک تونل امن برای انتقال ترافیک شبکه سایر پروتکلها مانند HTTP ،VNC و غیره مورد استفاده قرار گیرد. این ویژگی در محیطهای با امنیت بالا، مانند مراکز داده، کاربرد فراوانی دارد.
- اجرای از راه دور دستورات (Remote Command Execution): با استفاده از SSH میتوان دستورات را در سیستمهای راه دور اجرا کرد. این ویژگی در خودکارسازی فرایندهای مدیریت سیستم و زیرساختهای بزرگ بسیار مفید است.
- پیادهسازی Virtual Private Network: با استفاده از SSH میتوان به راحتی یک شبکه خصوصی مجازی (VPN) ایجاد کرد و دسترسی امن به شبکههای داخلی را فراهم آورد.
نصب SSH در لینوکس
در اکثر توزیعهای لینوکس، نرمافزار OpenSSH Server از قبل نصب شده است. اما در صورت نصب نبودن این نرمافزار، میتوانید با استفاده از دستورات زیر آن را نصب کنید. برای مثال در Ubuntu و توزیعهای مبتنی بر Debian میتوانید از دستور زیر استفاده کنید:
sudo apt-get update
sudo apt-get install openssh-server
در سیستمهای لینوکس، کلاینت SSH نیز معمولاً از قبل نصب شده است. اما در صورت نصب نبودن آن، میتوانید آن را با دستورات زیر نصب کنید:
sudo apt-get update
sudo apt-get install openssh-client
پس از نصب SSH، این سرویس را با استفاده از دستورات زیر میتوانید فعال کنید:
sudo systemctl enable –now ssh
sudo systemctl start ssh
تنظیم فایروال برای استفاده از SSH در لینوکس
در سیستم عاملهای لینوکس، فایروال نقش مهمی در کنترل ترافیک ورودی و خروجی ایفا میکند. برای استفاده از SSH که یک پروتکل امن برای دسترسی از راه دور است، باید پورت مربوطه در فایروال باز شود.
تنظیم UFW برای SSH
UFW یک فایروال کاربرپسند و ساده برای توزیعهای مبتنی بر Debian مانند Ubuntu است. برای باز کردن پورت SSH در UFW، میتوانید از دستور زیر استفاده کنید:
sudo ufw allow ssh
این دستور، پورت 22 (پورت پیشفرض SSH) را در فایروال باز میکند و به ترافیک SSH از هر آدرس IP اجازه عبور میدهد.
اگر میخواهید فقط آدرسهای IP خاصی امکان دسترسی به SSH را داشته باشند، میتوانید از دستور زیر استفاده کنید:
sudo ufw allow from ip_address to any port 22
در دستور بالا باید عبارت ip_address را با آدرس IP مورد نظر خود جایگزین کنید. پس از اعمال تغییرات، میتوانید وضعیت UFW را با دستور زیر بررسی کنید:
sudo ufw status
بررسی وضعیت SSH در لینوکس
اولین گام در بررسی وضعیت SSH، اطمینان حاصل کردن از فعال بودن این سرویس است. برای این کار میتوانید از دستور زیر استفاده کنید:
sudo systemctl status ssh
این دستور، وضعیت سرویس SSH را نشان میدهد. اگر سرویس در حال اجرا باشد، خروجی دستور شامل متن Active خواهد بود.
برای مشاهده کاربران فعلی که از طریق SSH به سیستم متصل هستند، میتوانید از دستور who استفاده کنید:
who
این دستور، لیستی از کاربران متصل، زمان ورود آنها، آدرس IP یا نام میزبانی که از آن متصل شدهاند را نشان میدهد.
فایلهای لاگ SSH میتوانند اطلاعات مفیدی در مورد تلاشهای ورود، اتصالات موفق و رویدادهای مرتبط با SSH را ارائه دهند. مکان این فایلهای لاگ بسته به توزیع لینوکس شما متفاوت است، اما معمولاً در مسیر var/log قرار دارند. برای مثال، در Ubuntu میتوانید از دستور زیر استفاده کنید:
sudo tail /var/log/auth.log
این دستور، آخرین رویدادهای لاگ شده در فایل auth.log را نشان میدهد که شامل رویدادهای مرتبط با SSH نیز میشود.
تغییر پورت پیشفرض SSH
پورت پیشفرض SSH، پورت ۲۲ است. تغییر این پورت به یک پورت دیگر میتواند از حملات و تلاشهای نفوذ جلوگیری کند، زیرا بسیاری از ابزارهای نفوذ فقط پورت ۲۲ را اسکن میکنند. برای تغییر پورت SSH، کافیست در فایل etc/ssh/sshd_config گزینه Port را ویرایش کنید.
اتصال به سرور از طریق SSH در لینوکس
SSH یا Secure Shell یکی از پرکاربردترین ابزارها برای برقراری ارتباط از راه دور با سیستمها و سرورها است. برای اتصال به سرور مورد نظر از طریق سیستم کلاینت (مانند ویندوز، لینوکس یا macOS)، میتوانید از دستور زیر در محیط ترمینال استفاده کنید:
ssh username@server_ip_address
username نام کاربری شما در سرور و server_ip_address آدرس IP سرور است. در صورتی که پورت SSH تغییر کرده باشد، باید آن را با استفاده از دستور زیر مشخص کنید:
ssh username@server_ip_address -p custom_port
در دستور بالا به جای عبارت custom_port باید پورت مورد نظر خود را وارد کنید. سپس رمز عبور کاربری خود را وارد کنید. پس از ورود، میتوانید به اجرای دستورات در سرور بپردازید.
غیر فعال كردن SSH در لینوکس
در برخی موارد ممکن است نیاز باشد تا سرویس SSH را به دلایل امنیتی غیرفعال کنید. برای غیرفعال کردن SSH در اوبونتو یا سایر توزیعهای مبتنی بر دبیان، میتوانید از دستور systemctl استفاده کنید:
sudo systemctl stop ssh
sudo systemctl disable ssh
اگر بعد از اجرای دستورات بالا سعی کنید از طریق SSH به سیستم متصل شوید، با خطای “Connection refused” مواجه خواهید شد که نشان میدهد سرویس SSH با موفقیت غیرفعال شده است.
در صورتی که بعداً بخواهید SSH را دوباره فعال کنید، میتوانید از دستورات زیر استفاده کنید:
sudo systemctl start ssh
sudo systemctl enable ssh