اگر با سرور لینوکسی کار میکنید، یکی از اولین ابزارهایی که باید یاد بگیرید SSH است. با SSH میتوانید از راه دور و بهصورت امن به سرور وصل شوید و بدون محیط گرافیکی، نصب نرمافزار، مدیریت فایلها، مشاهده لاگها و عیبیابی سرویسها را از طریق ترمینال انجام دهید.
این راهنما از اتصال ساده شروع میشود و سپس اتصال با پورت سفارشی، احراز هویت با کلید خصوصی، اجرای دستور از راه دور، خطاهای رایج و نکات امنیتی را پوشش میدهد.
SSH چیست و چگونه کار میکند؟
SSH مخفف Secure Shell است؛ پروتکلی برای ایجاد ارتباط رمزنگاریشده میان رایانه شما و یک سرور راه دور. در این ارتباط، فرمانها، خروجیها و اطلاعات احراز هویت در مسیر شبکه بهصورت محافظتشده منتقل میشوند.
ساختار پایه اتصال به این صورت است:
ssh username@server_ipبرای نمونه، اتصال با کاربر root به یک سرور آزمایشی:
ssh root@192.168.1.10اتصال SSH با پورت دلخواه
پورت پیشفرض SSH معمولاً 22 است. بااینحال مدیر سرور ممکن است برای کاهش اسکنهای خودکار، سرویس را روی پورت دیگری قرار داده باشد. برای تعیین پورت از گزینه p- استفاده کنید:
ssh username@server_ip -p portبرای نمونه، اگر سرویس SSH روی پورت 2222 در دسترس باشد:
ssh root@192.168.1.10 -p 2222تغییر پورت بهتنهایی جای تنظیمات امنیتی مناسب را نمیگیرد؛ فایروال، احراز هویت کلیدی و بهروزرسانی منظم همچنان ضروریاند.
اتصال SSH با کلید خصوصی
کلید SSH معمولاً از یک جفت کلید عمومی و خصوصی تشکیل میشود. کلید عمومی روی سرور قرار میگیرد و کلید خصوصی باید فقط نزد شما باقی بماند. این روش در کنار تنظیم درست سرور، از ورود با رمز عبور امنتر و برای مدیریت چند سرور عملیتر است.
برای مشخصکردن مسیر کلید خصوصی از گزینه i- استفاده کنید:
ssh -i ~/.ssh/id_rsa root@192.168.1.10اگر همزمان به کلید خصوصی و پورت سفارشی نیاز دارید، دو گزینه را با هم به کار ببرید:
ssh -i ~/.ssh/id_rsa root@192.168.1.10 -p 2222رفع خطای UNPROTECTED PRIVATE KEY FILE
اگر سطح دسترسی فایل کلید خصوصی بیش از حد باز باشد، سرویسگیرنده SSH برای محافظت از کلید اتصال را متوقف میکند و هشدار UNPROTECTED PRIVATE KEY FILE نمایش میدهد. در لینوکس و macOS معمولاً این دستور مشکل را برطرف میکند:
chmod 600 ~/.ssh/id_rsaسطح دسترسی 600 یعنی فقط مالک فایل اجازه خواندن و نوشتن دارد. مسیر و نام فایل را با کلید واقعی خودتان جایگزین کنید و کلید خصوصی را هرگز برای دیگران ارسال نکنید.
اجرای دستور روی سرور بدون ورود کامل
برای بررسی سریع وضعیت سرور لازم نیست همیشه یک نشست تعاملی باز کنید. دستور موردنظر را پس از آدرس سرور داخل کوتیشن بنویسید تا از راه دور اجرا شود.
نمایش اطلاعات سیستمعامل:
ssh root@192.168.1.10 "cat /etc/os-release"بررسی فضای دیسک:
ssh root@192.168.1.10 "df -h"اجرای همان دستور روی پورت 2222:
ssh root@192.168.1.10 -p 2222 "df -h"گزینههای کاربردی دستور SSH
گزینههای زیر در کار روزانه با سرورها بسیار پرکاربرد هستند:
p-: تعیین پورت اتصال؛ برای نمونه 2222.
i-: تعیین مسیر فایل کلید خصوصی.
v-: نمایش جزئیات بیشتر برای عیبیابی اتصال. در صورت نیاز میتوانید از vv- یا vvv- استفاده کنید.
L-: ساخت تونل محلی و انتقال امن یک پورت.
N-: ایجاد اتصال بدون اجرای فرمان راه دور؛ معمولاً همراه تونلسازی استفاده میشود.
برای مشاهده جزئیات فرایند اتصال و پیدا کردن مرحلهای که خطا رخ میدهد:
ssh -v root@192.168.1.10خطاهای رایج اتصال SSH و راهحلها
خطای Permission denied
پیام Permission denied (publickey,password) معمولاً به نام کاربری اشتباه، کلید نامعتبر، نبودن کلید عمومی در حساب مقصد یا غیرفعالبودن روش احراز هویت مربوط است. نام کاربری، مسیر کلید، فایل authorized_keys و اجازه ورود کاربر را بررسی کنید.
خطای Connection refused
این خطا یعنی میزبان پاسخ داده، اما روی پورت انتخابشده سرویسی اتصال را نپذیرفته است. فعالبودن سرویس ssh یا sshd، شماره پورت و قوانین فایروال سرور را بررسی کنید.
خطای Connection timed out
این پیام بیشتر به قطع مسیر شبکه، بستهبودن پورت در فایروال یا Security Group، آدرس IP اشتباه یا خاموشبودن سرور مربوط است. ابتدا دسترسی شبکه و سپس پورت SSH را بررسی کنید.
خطای Host key verification failed
این خطا وقتی رخ میدهد که کلید میزبان ثبتشده با کلید فعلی سرور مطابقت ندارد. ممکن است سرور دوباره نصب شده باشد، اما احتمال حمله میانی هم وجود دارد. قبل از حذف رکورد قدیمی، اثر انگشت کلید میزبان را از یک مسیر مطمئن با مدیر سرور تطبیق دهید.
نکات امنیتی مهم درباره SSH
کلید خصوصی، رمز عبور و عبارت عبور کلید را در اختیار دیگران قرار ندهید.
برای سرورهای مهم از کلید SSH همراه با عبارت عبور قوی استفاده کنید.
در صورت امکان ورود مستقیم کاربر root و ورود با رمز عبور را محدود کنید.
دسترسی SSH را در فایروال فقط به IPهای موردنیاز محدود کنید.
سیستمعامل و بسته OpenSSH را بهروز نگه دارید و لاگهای ورود ناموفق را بررسی کنید.
پیش از اجرای فرمانهای حساس، نام میزبان و کاربری را که به آن متصل شدهاید دوباره کنترل کنید.
پرسشهای متداول درباره SSH
پورت پیشفرض SSH چیست؟
پورت پیشفرض SSH برابر 22 است، اما مدیر سرور میتواند آن را تغییر دهد. در آن حالت باید شماره پورت را با گزینه p- مشخص کنید.
گزینه p- چه کاری انجام میدهد؟
این گزینه پورت TCP اتصال SSH را تعیین میکند؛ برای مثال p 2222- یعنی اتصال به پورت 2222.
گزینه i- در دستور SSH چیست؟
گزینه i- مسیر فایل هویت یا همان کلید خصوصی را مشخص میکند. نمونه رایج آن i ~/.ssh/id_rsa- است
چرا اتصال با کلید خصوصی خطای Permission میدهد؟
یکی از علتهای رایج، بازبودن سطح دسترسی فایل کلید است. فرمان chmod 600 معمولاً سطح دسترسی مناسب را تنظیم میکند؛ بااینحال نام کاربری، مسیر کلید و ثبتشدن کلید عمومی روی سرور هم باید درست باشد.
چگونه بدون ورود تعاملی یک فرمان اجرا کنم؟
فرمان را پس از مقصد داخل کوتیشن قرار دهید؛ برای مثال ssh user@server_ip "df -h" خروجی فضای دیسک را برمیگرداند و سپس اتصال بسته میشود.
جمعبندی
دستور ssh یکی از پایهایترین ابزارهای مدیریت سرور لینوکسی است. با یادگیری اتصال ساده، گزینههای p- و i-، اجرای فرمان از راه دور و شیوه عیبیابی خطاهای متداول میتوانید مدیریت سرور را سریعتر و امنتر انجام دهید. پیش از هر اتصال، از درستبودن آدرس، کاربر، پورت و مسیر کلید اطمینان پیدا کنید.

