SSH یا Secure Shell رایجترین روش برای اتصال امن به سرورهای لینوکسی و مدیریت آنها از راه دور است. وصل شدن به یک سرور با یک دستور ساده کار سختی نیست، اما وقتی با چندین سرور مختلف کار میکنید، وارد کردن مداوم یوزرنیم، پورت، کلیدها و تنظیمات خاص هر سرور، هم وقتگیر است هم اعصابخردکن.
اینجاست که فایل تنظیمات SSH Client وارد صحنه میشود. در OpenSSH (کلاینت پیشفرض SSH در اکثر سیستمها)، میتوانید برای هر سرور تنظیمات اختصاصی تعریف کنید و همه را داخل یک فایل نگه دارید. نتیجه؟ اتصال سریعتر، خطای کمتر، و یک ورکفلو حرفهای.
پیشنیازها
برای استفاده درست از این قابلیتها بهتر است:
-
با SSH و نحوه اتصال به سرور آشنا باشید
-
مفهوم پورت، یوزر و هاست را بدانید
-
ترجیحاً احراز هویت با SSH Key را روی حداقل یک سرور راهاندازی کرده باشید
محل فایل تنظیمات SSH
فایل تنظیمات سمت کلاینت اینجاست:
~/.ssh/configعلامت ~ یعنی پوشه Home کاربر. این فایل معمولاً بهصورت پیشفرض وجود ندارد و میتوانید آن را بسازید:
touch ~/.ssh/configساختار فایل config در SSH
این فایل بر اساس Hostها (یعنی سرورها) دستهبندی میشود. برای هر سرور یا گروهی از سرورها میتوانید تنظیمات جداگانه تعریف کنید.
ساختار کلی:
Host alias-name
Option value
Option valueمثال:
Host myserver
HostName example.com
User apollo
Port 4567
IdentityFile ~/.ssh/mykey.pemحالا فقط کافی است بنویسید:
ssh myserverو تمام این تنظیمات خودکار اعمال میشود.
الگوریتم خواندن فایل توسط SSH (خیلی مهم)
SSH فایل را از بالا به پایین میخواند.
-
هر بخش که Host آن با نامی که شما در دستور ssh نوشتید match شود، بررسی میشود.
-
برای هر گزینه (Option)، اولین مقداری که پیدا شود استفاده میشود.
-
مقادیر بعدی برای همان Option نادیده گرفته میشوند.
نتیجه مهم:
تنظیمات اختصاصیتر باید بالاتر باشند و تنظیمات عمومیتر مثل Host * پایینتر.
مثال:
Host server1
User ali
Host *
ServerAliveInterval 120
LogLevel INFOگزینههای پایه اتصال
اینها اصلیترین گزینهها هستند:
| گزینه | توضیح |
|---|---|
| HostName | آدرس واقعی سرور |
| User | نام کاربری برای اتصال |
| Port | پورت SSH (اگر 22 نباشد) |
تنظیمات عمومی و کاربردی
1️⃣ بررسی زنده بودن اتصال
ServerAliveInterval 120هر 120 ثانیه یک پکت تست میفرستد تا مطمئن شود ارتباط قطع نشده.
2️⃣ سطح لاگها
LogLevel INFOسطوح مختلف دارد:
QUIET → FATAL → ERROR → INFO → VERBOSE → DEBUG1 → DEBUG2 → DEBUG3
3️⃣ بررسی کلید سرور
StrictHostKeyChecking askمشخص میکند وقتی کلید سرور تغییر کند چه رفتاری انجام شود.
حالت no راحت است ولی از نظر امنیتی ریسک دارد.
4️⃣ فایل known_hosts
UserKnownHostsFile ~/.ssh/known_hostsمحل ذخیره اطلاعات سرورهایی که به آنها وصل شدهاید.
5️⃣ نمایش تصویری کلید سرور
VisualHostKey yesنمایش ASCII از کلید سرور. برای تشخیص سریع تغییر کلید مفید است.
نمونه تنظیم حرفهای
Host home
VisualHostKey yes
Host cloud*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel QUIET
Host *
StrictHostKeyChecking ask
UserKnownHostsFile ~/.ssh/known_hosts
LogLevel INFO
ServerAliveInterval 120Port Forwarding در SSH
SSH فقط برای شل نیست، تونل شبکه هم میسازد. برای راهنمای کامل، مقاله آشنایی کامل با SSH Port Forwarding (تونلسازی SSH) را ببینید.
فوروارد لوکال
LocalForward 8080 example.com:80پورت 8080 لوکال → پورت 80 سرور مقصد
فوروارد ریموت
RemoteForward 7777 internal.com:443پورت 7777 روی سرور → پورت 443 روی سیستم شما
فوروارد داینامیک (SOCKS Proxy)
DynamicForward 1080فوروارد کلید و محیط گرافیکی
| گزینه | کاربرد |
|---|---|
| ForwardAgent yes | استفاده از SSH Keyهای سیستم شما روی سرور |
| ForwardX11 yes | اجرای برنامه گرافیکی سرور روی سیستم شما |
مدیریت کلیدهای SSH
IdentityFile ~/.ssh/server1.pem
IdentitiesOnly yesوقتی برای هر سرور کلید جدا دارید، این بخش نجاتدهنده است.
جمعبندی
فایل ~/.ssh/config باعث میشود:
-
دستورات SSH کوتاه شوند
-
خطاهای انسانی کم شود
-
کار با چندین سرور ساده شود
-
فورواردینگ، کلیدها و تنظیمات امنیتی حرفهای مدیریت شوند
اگر زیاد با سرور کار میکنید و هنوز این فایل را جدی نگرفتهاید، دارید وقت زندگیتان را دور میریزید.
