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

مقاله راهنمای کامل استفاده از SSH در لینوکس است، شامل پیکربندی، امنیت، ویژگیهای پیشرفته مانند پورت فورواردینگ، و روشهای عیبیابی و بهینهسازی پرداختهایم. با استفاده از این راهنما، میتوانید اتصالات ایمن و کارآمد SSH را برای مدیریت سرورهای لینوکس خود برقرار کنید.
بخش اول: مقدمهای بر SSH در لینوکس
تاریخچه SSH
SSH در سال 1995 توسط تئاتو فن ویکو (Tatu Ylönen) به عنوان یک جایگزین امن برای پروتکلهای قدیمیتر مانند Telnet و ریموت شل (RSH) معرفی شد. این پروتکلها امنیت ضعیفی داشتند و اطلاعاتی که از طریق آنها منتقل میشدند، به راحتی قابل مشاهده یا دستکاری توسط افراد ثالث بودند. SSH به سرعت به یکی از پروتکلهای استاندارد برای اتصال به سیستمهای از راه دور تبدیل شد، به ویژه در سیستمعاملهای مبتنی بر یونیکس و لینوکس.
ویژگیهای کلیدی SSH
SSH به کاربران این امکان را میدهد که از راه دور به یک سیستم لینوکس متصل شوند و فعالیتهایی مانند مدیریت سرور، انتقال فایل، و اجرای دستورها را انجام دهند. این پروتکل برای امنیت و راحتی در مدیریت سیستمهای شبکهای طراحی شده است. برخی از ویژگیهای برجسته SSH عبارتند از:
- رمزنگاری قوی: SSH از الگوریتمهای رمزنگاری پیچیده برای اطمینان از امنیت ارتباطات استفاده میکند، بنابراین دادهها در حین انتقال محافظت میشوند.
- تأیید هویت: SSH به روشهای مختلفی میتواند هویت کاربران را تأیید کند، از جمله استفاده از رمز عبور یا کلیدهای عمومی و خصوصی. این روشها تضمین میکنند که تنها افراد مجاز به سرور دسترسی دارند.
- انتقال امن فایل: علاوه بر اتصال به سرور، SSH از پروتکلهای کمکی مانند SCP (Secure Copy Protocol) و SFTP (SSH File Transfer Protocol) برای انتقال امن فایلها نیز استفاده میکند.
- پورت فورواردینگ: SSH میتواند پورتهای شبکهای را از یک سیستم به سیستم دیگر هدایت کند، که به کاربر این امکان را میدهد که به طور ایمن به خدمات شبکهای خاص از راه دور دسترسی پیدا کند.
- گذرگاه SOCKS: SSH میتواند به عنوان یک گذرگاه SOCKS برای عبور از فایروالها و محدودیتهای شبکهای استفاده شود.
کاربردهای SSH در لینوکس

SSH در دنیای لینوکس و یونیکس به دلیل قابلیتهای امنیتی و انعطافپذیر خود در بسیاری از زمینهها کاربرد دارد:
- مدیریت سرورهای از راه دور: مدیران سیستم میتوانند از SSH برای اتصال به سرورهای لینوکس خود و انجام کارهایی مانند نصب نرمافزار، بررسی وضعیت سیستم، یا انجام پشتیبانگیری استفاده کنند.
- اتصال به محیطهای گرافیکی از راه دور: با استفاده از SSH میتوان به محیطهای گرافیکی (GUI) سرورهای لینوکس وصل شد، بهویژه با استفاده از پروتکلهایی مانند X11 forwarding.
- پشتیبانی از توسعهدهندگان: توسعهدهندگان میتوانند از SSH برای اتصال به سیستمهای از راه دور، اجرای کد، یا انتقال کد و فایلها بین سیستمهای مختلف استفاده کنند.
- امنیت شبکه: به دلیل رمزنگاری دادهها، SSH ابزاری عالی برای حفاظت از اطلاعات حساس در برابر تهدیدات خارجی است.
بخش دوم: نصب و پیکربندی SSH در لینوکس
برای استفاده از SSH در لینوکس، ابتدا باید اطمینان حاصل کنید که نرمافزار SSH بر روی سیستم شما نصب و پیکربندی شده است. در این بخش، به مراحل نصب و پیکربندی سرویس SSH برای سرور و کلاینت در سیستمعامل لینوکس خواهیم پرداخت.
1. نصب SSH بر روی سرور
برای اینکه بتوانید از SSH برای اتصال به سرور لینوکس استفاده کنید، ابتدا باید سرویس SSH را بر روی سرور خود نصب کنید. معمولاً برای نصب SSH از نرمافزار OpenSSH استفاده میشود که یکی از محبوبترین و رایجترین پیادهسازیها برای پروتکل SSH است. در اکثر توزیعهای لینوکس، OpenSSH به راحتی از مخازن رسمی قابل نصب است.
نصب OpenSSH بر روی سرور:
برای نصب OpenSSH Server در لینوکس، به بستههای openssh-server
نیاز دارید. بسته به توزیع لینوکس شما، میتوانید از دستورات زیر استفاده کنید:
Debian/Ubuntu:
sudo apt update sudo apt install openssh-server
CentOS/RHEL/Fedora:
sudo dnf install openssh-server
Arch Linux:
sudo pacman -S openssh
بعد از نصب موفقیتآمیز، سرویس SSH به طور خودکار راهاندازی میشود. برای بررسی وضعیت سرویس SSH میتوانید از دستور زیر استفاده کنید:
sudo systemctl status sshd
اگر سرویس فعال نباشد، میتوانید آن را با دستور زیر راهاندازی کنید:
sudo systemctl start sshd
برای راهاندازی خودکار سرویس SSH با بوت سیستم، از دستور زیر استفاده کنید:
sudo systemctl enable sshd
2. نصب SSH بر روی کلاینت
برای اتصال به یک سرور لینوکس از راه دور، شما باید از نرمافزار SSH در سیستم خود استفاده کنید. در بیشتر توزیعهای لینوکس، SSH به طور پیشفرض نصب شده است. اما در صورتی که SSH بر روی سیستم کلاینت شما نصب نباشد، میتوانید آن را به راحتی با استفاده از مدیر بسته نصب کنید.
نصب OpenSSH Client:
Debian/Ubuntu:
sudo apt update sudo apt install openssh-client
CentOS/RHEL/Fedora:
sudo dnf install openssh-clients
Arch Linux:
sudo pacman -S openssh
3. پیکربندی فایل SSH Server
بعد از نصب سرویس SSH، ممکن است بخواهید برخی تنظیمات امنیتی و عملکردی سرویس SSH را تغییر دهید. فایل پیکربندی اصلی برای سرویس SSH در لینوکس، معمولاً در مسیر /etc/ssh/sshd_config
قرار دارد. در این فایل میتوانید تنظیمات مختلفی مانند پورت SSH، تأیید هویت و دسترسی به کاربران را تغییر دهید.
برای ویرایش فایل پیکربندی، دستور زیر را اجرا کنید:
sudo nano /etc/ssh/sshd_config
در اینجا چند تنظیم مهم در فایل پیکربندی آورده شده است:
پورت (Port): به طور پیشفرض، SSH از پورت 22 برای ارتباط استفاده میکند. برای افزایش امنیت، میتوانید پورت دیگری را انتخاب کنید:
Port 22
تأیید هویت با کلید عمومی (PubkeyAuthentication): برای استفاده از تأیید هویت با کلید عمومی، این گزینه باید فعال باشد:
PubkeyAuthentication yes
غیرفعالسازی ورود با رمز عبور (PasswordAuthentication): برای جلوگیری از ورود با رمز عبور و فقط استفاده از کلید عمومی، این گزینه را به no
تغییر دهید:
PasswordAuthentication no
دسترسی به کاربران خاص (AllowUsers): برای محدود کردن دسترسی SSH به کاربران خاص، میتوانید این گزینه را تنظیم کنید:
AllowUsers user1 user2
بعد از اعمال تغییرات، برای اعمال تنظیمات جدید باید سرویس SSH را دوباره راهاندازی کنید:
sudo systemctl restart sshd
4. بررسی تنظیمات فایروال
اگر از فایروال برای محافظت از سرور خود استفاده میکنید، باید اطمینان حاصل کنید که پورت SSH برای دسترسی خارجی باز است. در صورتی که از ufw
(Uncomplicated Firewall) در توزیعهای مبتنی بر دبیان استفاده میکنید، میتوانید پورت SSH را با دستور زیر باز کنید:
sudo ufw allow ssh
اگر از firewalld
در سیستمهای مبتنی بر ردهت (CentOS، Fedora) استفاده میکنید، میتوانید از دستور زیر استفاده کنید:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
5. تست اتصال SSH
پس از نصب و پیکربندی سرویس SSH، باید اتصال به سرور را از طریق SSH آزمایش کنید. برای این کار، از دستور ssh
در سیستم کلاینت استفاده کنید:
ssh root@server_ip
در این دستور،root نام کاربری است که در سرور برای ورود استفاده میشود و server_ip
آدرس IP سرور است.
اگر اولین بار است که به سرور متصل میشوید، از شما خواسته میشود که کلید عمومی سرور را تأیید کنید. پس از تأیید، شما به سرور متصل خواهید شد.
بخش سوم: استفاده از کلیدهای SSH برای تأیید هویت و افزایش امنیت
یکی از ویژگیهای برجسته SSH، امکان استفاده از کلیدهای عمومی و خصوصی برای تأیید هویت است که امنیت بیشتری نسبت به ورود با رمز عبور فراهم میکند. در این بخش، نحوه ایجاد و استفاده از کلیدهای SSH برای احراز هویت، مزایا و چگونگی پیادهسازی این روش در لینوکس را بررسی خواهیم کرد.
1. ایجاد کلید SSH
برای استفاده از کلیدهای SSH، شما باید یک جفت کلید عمومی و خصوصی ایجاد کنید. کلید خصوصی در سیستم شما نگهداری میشود و باید بهطور محرمانه نگهداری شود، در حالی که کلید عمومی را میتوان به سرور مقصد منتقل کرد تا در زمان اتصال، از آن برای تأیید هویت شما استفاده شود.
مراحل ایجاد جفت کلید SSH:
- برای ایجاد جفت کلید SSH، دستور زیر را در ترمینال اجرا کنید:
ssh-keygen -t rsa -b 4096
در این دستور:-t rsa
نوع الگوریتم را مشخص میکند که در اینجا RSA است.-b 4096
تعداد بیتهای کلید را مشخص میکند که برای امنیت بیشتر از ۴۰۹۶ بیت استفاده شده است.
- پس از اجرای این دستور، از شما خواسته میشود که مسیر ذخیرهسازی کلید را وارد کنید. به طور پیشفرض، کلید در مسیر
~/.ssh/id_rsa
ذخیره میشود. اگر میخواهید از مسیر پیشفرض استفاده کنید، کافیست دکمه Enter را بزنید. - در مرحله بعد، از شما خواسته میشود که یک عبارت عبور (passphrase) برای کلید خود وارد کنید. این عبارت عبور به شما این امکان را میدهد که در صورت گم شدن یا سرقت کلید خصوصی، از دسترسی غیرمجاز جلوگیری کنید. میتوانید این مرحله را رد کنید، اما توصیه میشود که یک عبارت عبور قوی برای امنیت بیشتر انتخاب کنید.
بعد از این مراحل، جفت کلید شما ایجاد میشود. کلید خصوصی در مسیر ~/.ssh/id_rsa
و کلید عمومی در مسیر ~/.ssh/id_rsa.pub
ذخیره میشود.
2. انتقال کلید عمومی به سرور
برای استفاده از کلیدهای SSH برای تأیید هویت به جای استفاده از رمز عبور، باید کلید عمومی خود را به سرور مقصد منتقل کنید. برای این کار، میتوانید از دستور ssh-copy-id
استفاده کنید که کلید عمومی شما را به طور خودکار به فایل ~/.ssh/authorized_keys
در سرور منتقل میکند.
انتقال کلید عمومی به سرور:
- دستور زیر را برای ارسال کلید عمومی خود به سرور مقصد وارد کنید:
ssh-copy-id username@server_ip
در این دستور:username
نام کاربری سرور مقصد است.server_ip
آدرس IP سرور مقصد است.
- پس از وارد کردن دستور، از شما خواسته میشود که رمز عبور سرور را وارد کنید. پس از وارد کردن رمز عبور، کلید عمومی شما به سرور منتقل میشود و به فایل
~/.ssh/authorized_keys
اضافه خواهد شد.
3. تست اتصال با استفاده از کلید SSH
بعد از انتقال کلید عمومی به سرور، میتوانید اتصال SSH خود را بدون نیاز به وارد کردن رمز عبور آزمایش کنید. برای این کار، دستور زیر را اجرا کنید:
ssh root@server_ip
اگر کلید خصوصی شما با کلید عمومی که در سرور ذخیره شده تطابق داشته باشد، شما بدون نیاز به وارد کردن رمز عبور وارد سرور خواهید شد. این روش اتصال بسیار سریعتر و امنتر از استفاده از رمز عبور است.
4. افزایش امنیت با غیرفعالسازی ورود با رمز عبور
پس از پیکربندی احراز هویت با کلید SSH، برای افزایش امنیت، میتوانید ورود با رمز عبور را در سرور غیرفعال کنید. این کار از تلاشهای حمله به رمزهای عبور جلوگیری میکند و تنها به کاربران با کلید SSH مجاز اجازه دسترسی به سرور را میدهد.
غیرفعالسازی ورود با رمز عبور:
برای این کار، فایل پیکربندی SSH را ویرایش کنید:
sudo nano /etc/ssh/sshd_config
گزینه PasswordAuthentication
را پیدا کرده و آن را به no
تغییر دهید:
PasswordAuthentication no
پس از اعمال تغییرات، سرویس SSH را دوباره راهاندازی کنید:
sudo systemctl restart sshd
از این پس، کاربران تنها میتوانند با استفاده از کلید SSH به سرور متصل شوند و ورود با رمز عبور غیرفعال خواهد شد.
5. پیکربندی فایل authorized_keys
برای مدیریت دسترسی
در سرور، تمامی کلیدهای عمومی مجاز برای دسترسی به حسابهای کاربری مختلف در فایل ~/.ssh/authorized_keys
ذخیره میشوند. شما میتوانید این فایل را برای کنترل دسترسی و مدیریت کلیدهای مختلف تنظیم کنید.
- هر کلید عمومی در یک خط جدید قرار میگیرد.
- میتوانید تنظیمات اضافی مانند محدود کردن آدرسهای IP خاص که از آنها میتوان به سرور متصل شد یا اجرای تنها دستورات خاص از طریق SSH را در این فایل تنظیم کنید.
برای مثال، برای محدود کردن یک کلید به یک آدرس IP خاص، میتوانید تنظیم زیر را به ابتدای کلید عمومی در فایل authorized_keys
اضافه کنید:
from="192.168.1.100" ssh-rsa AAAAB3... (کلید عمومی)
6. مزایای استفاده از کلیدهای SSH
- امنیت بالا: کلیدهای SSH بسیار امنتر از رمزهای عبور هستند، زیرا حمله به کلیدهای خصوصی نیازمند دسترسی فیزیکی به فایل کلید خصوصی یا استفاده از تکنیکهای پیچیدهتر برای شکستن آنهاست.
- سادهتر و سریعتر: پس از راهاندازی، شما نیازی به وارد کردن رمز عبور برای هر اتصال نخواهید داشت و این باعث صرفهجویی در زمان و تلاش میشود.
- محافظت در برابر حملات brute-force: با غیرفعال کردن ورود با رمز عبور و استفاده از کلیدهای SSH، خطر حملات brute-force به شدت کاهش مییابد.
بخش چهارم: ویژگیهای پیشرفته SSH: پورت فورواردینگ و مدیریت دسترسی
در این بخش، به بررسی دو ویژگی پیشرفته SSH خواهیم پرداخت که میتوانند برای مدیران سیستم و کاربران پیشرفته بسیار مفید باشند. این ویژگیها عبارتند از پورت فورواردینگ SSH (که امکان دسترسی ایمن به خدمات شبکهای از راه دور را فراهم میکند) و مدیریت دسترسی به کاربران (که اجازه میدهد تا دسترسیها به صورت دقیقتر و امنتری کنترل شود).
1. پورت فورواردینگ SSH
پورت فورواردینگ (Port Forwarding) یک ویژگی قدرتمند در SSH است که به شما این امکان را میدهد که پورتهای شبکهای یک سیستم را از طریق اتصال SSH به سیستم دیگری هدایت کنید. این ویژگی برای دسترسی به سرویسهای شبکهای که در یک شبکه خصوصی یا پشت فایروال قرار دارند، بسیار مفید است. سه نوع پورت فورواردینگ SSH وجود دارد:
1.1. فورواردینگ پورت محلی (Local Port Forwarding)
این نوع فورواردینگ به شما این امکان را میدهد که پورت محلی سیستم خود را به پورت در یک سیستم از راه دور متصل کنید. به عبارت دیگر، دادههایی که به یک پورت محلی ارسال میشوند، از طریق SSH به سرور مقصد منتقل میشوند و سپس به پورت مشخصی در سرور هدایت میشوند.
مثال: فرض کنید شما میخواهید به پایگاه داده MySQL که بر روی یک سرور از راه دور در پورت 3306 در حال اجرا است، از سیستم محلی خود دسترسی پیدا کنید. برای انجام این کار، میتوانید از دستور زیر استفاده کنید:
ssh -L 3306:localhost:3306 username@server_ip
در این دستور:
-L
نشاندهنده فورواردینگ محلی است.3306:localhost:3306
به این معنی است که هر ترافیکی که به پورت 3306 در سیستم محلی ارسال شود، از طریق SSH به پورت 3306 در سرور مقصد هدایت خواهد شد.username@server_ip
نام کاربری و آدرس IP سرور مقصد است.
حالا میتوانید به جای اتصال به localhost:3306
، به سرور محلی خود وصل شوید و از طریق این تونل SSH به پایگاه داده متصل شوید.
1.2. فورواردینگ پورت از راه دور (Remote Port Forwarding)
این نوع فورواردینگ برخلاف فورواردینگ محلی است. با استفاده از آن، میتوانید پورتهای سیستم راه دور را به سیستم محلی یا سیستم دیگری هدایت کنید.
مثال: اگر بخواهید یک سرویس وب که در سیستم محلی در حال اجرا است (بهعنوان مثال در پورت 8080) را از طریق یک سرور از راه دور قابل دسترسی کنید، از دستور زیر استفاده کنید:
ssh -R 8080:localhost:8080 username@server_ip
در این دستور:
-R
نشاندهنده فورواردینگ از راه دور است.8080:localhost:8080
به این معنی است که ترافیک دریافتی از پورت 8080 در سرور مقصد به پورت 8080 سیستم محلی شما هدایت میشود.
1.3. فورواردینگ پورت دینامیک (Dynamic Port Forwarding)
این نوع فورواردینگ به شما این امکان را میدهد که از SSH بهعنوان یک گذرگاه SOCKS استفاده کنید. با استفاده از فورواردینگ پورت دینامیک، تمامی ترافیک شبکه از طریق اتصال SSH هدایت میشود و به شما این امکان را میدهد که از فایروالها یا محدودیتهای شبکه عبور کنید.
برای فعال کردن فورواردینگ دینامیک، دستور زیر را اجرا کنید:
ssh -D 1080 username@server_ip
در این دستور:
-D 1080
پورت 1080 را برای استفاده از پروکسی SOCKS تعیین میکند.username@server_ip
نام کاربری و آدرس IP سرور مقصد است.
بعد از این که تونل SOCKS ایجاد شد، میتوانید از نرمافزارهایی مانند مرورگر وب برای تنظیم پروکسی SOCKS و استفاده از این تونل ایمن برای مرور اینترنت استفاده کنید.
2. مدیریت دسترسی به کاربران SSH
یکی از ویژگیهای مهم SSH، قابلیت محدود کردن دسترسی کاربران و کنترل دقیقتر آنها است. با استفاده از تنظیمات مختلف در فایل پیکربندی SSH، میتوانید دسترسی کاربران را به سرور خود محدود کنید.
2.1. محدود کردن دسترسی به کاربران خاص
اگر میخواهید تنها به تعدادی خاص از کاربران اجازه دسترسی به سرور خود را بدهید، میتوانید از گزینه AllowUsers
در فایل پیکربندی SSH استفاده کنید. به عنوان مثال:
AllowUsers user1 user2
این دستور فقط به کاربران user1
و user2
اجازه اتصال به سرور را میدهد و سایر کاربران قادر به اتصال نخواهند بود.
2.2. محدود کردن دسترسی به گروههای خاص
اگر بخواهید دسترسی به SSH را فقط به اعضای یک گروه خاص محدود کنید، میتوانید از گزینه AllowGroups
استفاده کنید:
AllowGroups sshusers
این دستور فقط به اعضای گروه sshusers
اجازه اتصال به سرور را میدهد.
2.3. محدود کردن دسترسی از آدرسهای IP خاص
گاهی ممکن است بخواهید که تنها از یک سری آدرسهای IP خاص به سرور SSH متصل شوید. برای انجام این کار، میتوانید از گزینه from
در فایل authorized_keys
استفاده کنید. به عنوان مثال:
from="192.168.1.100" ssh-rsa AAAAB3... (کلید عمومی)
این دستور فقط به کاربران با آدرس IP 192.168.1.100
اجازه میدهد که از کلید عمومی مورد نظر برای اتصال به سرور استفاده کنند.
2.4. غیرفعال کردن دسترسی به برخی از کاربران
برای غیرفعال کردن دسترسی به یک کاربر خاص، میتوانید از گزینه DenyUsers
در فایل پیکربندی SSH استفاده کنید:
DenyUsers user3 user4
این دستور از ورود کاربران user3
و user4
جلوگیری خواهد کرد.
2.5. استفاده از محدودیتهای زمانبندی برای اتصال
یکی دیگر از راههای افزایش امنیت، محدود کردن دسترسی به SSH در ساعات خاص است. این کار به طور معمول با استفاده از ابزارهایی مانند cron
و اسکریپتهای سفارشی انجام میشود تا فقط در زمانهای خاصی به سرور SSH دسترسی داشته باشید.
3. مزایای استفاده از پورت فورواردینگ و مدیریت دسترسی
- امنیت بیشتر: پورت فورواردینگ SSH به شما این امکان را میدهد که به طور ایمن به سرویسهای شبکهای دسترسی پیدا کنید که در غیر این صورت از طریق اینترنت در دسترس نیستند. همچنین، محدود کردن دسترسی به کاربران و آدرسهای خاص باعث کاهش خطرات امنیتی میشود.
- سهولت دسترسی از راه دور: با استفاده از پورت فورواردینگ، میتوانید به راحتی به سرویسهای مختلف از راه دور متصل شوید بدون اینکه نیازی به تغییر تنظیمات فایروال یا NAT داشته باشید.
- کنترل دقیقتر: با استفاده از گزینههای مختلف برای مدیریت دسترسی کاربران، شما میتوانید کنترل دقیقی بر روی اینکه چه کسانی و از چه آدرسهایی میتوانند به سرور شما متصل شوند، داشته باشید.
بخش پنجم: عیبیابی و بهینهسازی استفاده از SSH
در این بخش، به بررسی روشهای عیبیابی مشکلات متداول SSH و همچنین نکات بهینهسازی عملکرد آن خواهیم پرداخت. این موضوعات به مدیران سیستم کمک میکند تا در صورت بروز مشکلات با SSH، سریعتر به راهحلهای مناسب دست یابند و همچنین بهترین شیوهها را برای استفاده بهینه از SSH دنبال کنند.
1. عیبیابی مشکلات SSH
هنگامی که با مشکلاتی در اتصال به سرور از طریق SSH مواجه میشوید، باید از ابزارها و روشهای مختلفی برای عیبیابی استفاده کنید. در این بخش به بررسی رایجترین مشکلات و نحوه رفع آنها میپردازیم.
1.1. مشکل در اتصال به سرور (Connection Refused)
یکی از مشکلات رایج هنگام تلاش برای اتصال به سرور از طریق SSH، پیام خطای “Connection Refused” است. این خطا معمولاً به دلایل زیر اتفاق میافتد:
سرویس SSH خاموش است: برای حل این مشکل، ابتدا باید مطمئن شوید که سرویس SSH در سرور در حال اجرا است. با استفاده از دستور زیر میتوانید وضعیت سرویس SSH را بررسی کنید:
sudo systemctl status sshd
اگر سرویس SSH خاموش است، میتوانید آن را با دستور زیر راهاندازی کنید:
sudo systemctl start sshd
همچنین برای فعالسازی سرویس SSH در زمان بوت، از دستور زیر استفاده کنید:
sudo systemctl enable sshd
فایروال سرور: ممکن است فایروال سرور، پورت SSH را مسدود کرده باشد. برای باز کردن پورت 22 (پورت پیشفرض SSH) در فایروال، دستورات زیر را اجرا کنید:
در ufw
(Uncomplicated Firewall) در توزیعهای دبیان و اوبونتو:
sudo ufw allow ssh
در firewalld
برای سیستمهای مبتنی بر ردهت:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
1.2. مشکل در احراز هویت با کلید SSH (Permission Denied)
اگر هنگام تلاش برای اتصال به سرور با استفاده از کلید SSH با خطای “Permission Denied” مواجه شدید، دلایل مختلفی ممکن است باعث بروز این مشکل شوند:
کلید عمومی در سرور اضافه نشده است: مطمئن شوید که کلید عمومی شما در فایل ~/.ssh/authorized_keys
در سرور مقصد قرار دارد و بهدرستی تنظیم شده است.
مشکلات در دسترسی به کلید خصوصی: در صورتی که کلید خصوصی شما دارای مجوزهای نادرست باشد، SSH نمیتواند از آن استفاده کند. برای تنظیم مجوزهای صحیح، دستور زیر را برای کلید خصوصی خود اجرا کنید:
chmod 600 ~/.ssh/id_rsa
فایلهای پیکربندی نادرست: بررسی کنید که فایلهای پیکربندی SSH در سرور و سیستم کلاینت بهدرستی تنظیم شده باشند. بهویژه فایل ~/.ssh/authorized_keys
باید بهدرستی پیکربندی شده و دارای مجوزهای مناسب باشد.
1.3. خطای “Host Key Verification Failed”
این خطا معمولاً زمانی رخ میدهد که سرور مقصد از شما میخواهد که کلید عمومی آن را تایید کنید اما شما قبلاً این کار را نکردهاید، یا این که کلید عمومی سرور تغییر کرده است. برای حل این مشکل:
- حذف ورودی کلید قدیمی: شما میتوانید با ویرایش فایل
~/.ssh/known_hosts
و حذف ورودی مربوط به سرور مقصد، این مشکل را حل کنید. بهطور معمول، خطای مربوط به کلید قدیمی در این فایل ذخیره میشود. برای حذف ورودی قدیمی، از دستور زیر استفاده کنید:ssh-keygen -R server_ip
1.4. تأخیر در اتصال SSH
اگر اتصال SSH با تأخیر زیادی مواجه میشود، ممکن است مشکل در شبکه یا تنظیمات DNS وجود داشته باشد. برای کاهش تأخیر میتوانید مراحل زیر را امتحان کنید:
غیرفعال کردن جستجوی DNS در سرور: در برخی موارد، سرور ممکن است زمان زیادی برای جستجو در DNS صرف کند. برای غیرفعال کردن این ویژگی، میتوانید گزینه UseDNS
را در فایل پیکربندی SSH به no
تغییر دهید:
sudo nano /etc/ssh/sshd_config
سپس مقدار UseDNS
را به no
تغییر دهید:
UseDNS no
بعد از اعمال تغییرات، سرویس SSH را ریستارت کنید:
sudo systemctl restart sshd
2. بهینهسازی عملکرد SSH
در کنار عیبیابی مشکلات SSH، بهینهسازی عملکرد SSH نیز برای افزایش سرعت و کارایی بسیار مهم است. در اینجا چندین روش برای بهینهسازی عملکرد SSH ذکر میشود.
2.1. فعالسازی Compression در SSH
SSH به طور پیشفرض دادهها را فشرده نمیکند، اما میتوانید این ویژگی را فعال کنید تا سرعت انتقال دادهها در شبکههای کمسرعت بیشتر شود. برای فعالسازی فشردهسازی، از گزینه -C
استفاده کنید:
ssh -C username@server_ip
2.2. استفاده از الگوریتمهای رمزنگاری سریعتر
SSH از الگوریتمهای مختلف رمزنگاری پشتیبانی میکند که هرکدام مزایا و معایب خاص خود را دارند. اگر به سرعت بیشتری نیاز دارید، میتوانید از الگوریتمهای سریعتری مانند chacha20-poly1305
به جای الگوریتمهای پیشفرض استفاده کنید.
برای تغییر الگوریتمهای رمزنگاری در اتصال SSH، میتوانید از گزینه -c
استفاده کنید:
ssh -c chacha20-poly1305@openssh.com username@server_ip
2.3. استفاده از KeepAlive برای جلوگیری از قطع شدن اتصال
در برخی مواقع ممکن است اتصال SSH به طور خودکار قطع شود، بهویژه اگر مدت زیادی بیفعالیت بماند. برای جلوگیری از قطع اتصال، میتوانید از ویژگی KeepAlive
استفاده کنید.
در فایل پیکربندی SSH میتوانید موارد زیر را اضافه کنید:
در سرور: فایل /etc/ssh/sshd_config
را باز کرده و خط زیر را اضافه کنید:
ClientAliveInterval 60 ClientAliveCountMax 3
این تنظیمات باعث میشوند که سرور هر 60 ثانیه یک بار پیامی به کلاینت ارسال کند و اگر سه پیام متوالی بدون پاسخ بماند، اتصال قطع شود.
در کلاینت: فایل پیکربندی ~/.ssh/config
را باز کرده و تنظیمات زیر را اضافه کنید:
ServerAliveInterval 60 ServerAliveCountMax 3
2.4. استفاده از SSH Multiplexing
برای تسریع در اتصالات متوالی SSH، میتوانید از ویژگی SSH Multiplexing استفاده کنید. این ویژگی به شما اجازه میدهد تا تنها یک اتصال SSH برقرار کنید و سپس از همان اتصال برای تمامی دستورات بعدی استفاده کنید.
برای فعالسازی Multiplexing، موارد زیر را به فایل پیکربندی ~/.ssh/config
اضافه کنید:
Host *
ControlMaster auto
ControlPath ~/.ssh/ssh_mux_%h_%p_%r
ControlPersist 10m
این تنظیمات باعث میشود که پس از برقراری اولین اتصال SSH، اتصالات بعدی سریعتر برقرار شوند، زیرا از همان اتصال قبلی استفاده میشود.
نتیجهگیری کلی از مقاله استفاده از SSH در لینوکس
SSH یک پروتکل امن و کاربردی برای اتصال از راه دور به سرورهای لینوکس است. این ابزار بهطور گسترده برای مدیریت سیستمها و انتقال دادهها بهصورت رمزگذاریشده استفاده میشود. در این مقاله، مفاهیم اولیه SSH، نحوه پیکربندی آن برای امنیت بیشتر، و ویژگیهای پیشرفتهای مانند پورت فورواردینگ و مدیریت دسترسی کاربران بررسی شد. همچنین، روشهای عیبیابی مشکلات رایج SSH و نکات بهینهسازی عملکرد آن برای افزایش سرعت و کارایی معرفی شدند. با استفاده از SSH میتوان اتصالات امن و مؤثری برقرار کرد و امنیت سیستمها را حفظ کرد.
ممنون که تا اینجای کار با راپیدو همراه بودید امیدوارم این مقاله راهنمای خوبی برای شما بوده باشد