tutorials / linux / chapter-10.md · utf-8 ⬇ download chapter-10.md
فصل دهم: SSH و دسترسی از راه دور
SSH and Remote Access
یکی از مهمترین مهارتهای یک کاربر حرفهای لینوکس، توانایی مدیریت سیستمها از راه دور است.
در دنیای واقعی، بسیاری از سرورها در دیتاسنترها، سرویسهای ابری و محیطهای سازمانی قرار دارند و امکان دسترسی فیزیکی به آنها وجود ندارد.
برای مدیریت این سیستمها از ابزارهای مختلفی استفاده میشود که یکی از مهمترین آنها SSH است.
SSH پایه بسیاری از فعالیتهای حرفهای مانند:
- مدیریت سرور
- DevOps
- Cloud Computing
- امنیت سایبری
- مدیریت زیرساخت
محسوب میشود.
SSH چیست؟
SSH مخفف:
Secure Shell
است.
SSH یک پروتکل ارتباطی امن است که به کاربران اجازه میدهد از طریق شبکه به یک سیستم دیگر متصل شوند و آن را مدیریت کنند.
با استفاده از SSH میتوان:
- وارد یک سیستم دیگر شد.
- دستورات را روی سیستم مقصد اجرا کرد.
- فایل انتقال داد.
- سرویسها را مدیریت کرد.
- مشکلات سیستم را بررسی کرد.
ساختار ارتباط SSH
ارتباط SSH معمولاً بین دو سیستم انجام میشود:
Client | | Network | | Server
SSH Client چیست؟
SSH Client برنامهای است که اتصال را ایجاد میکند.
کاربر روی سیستم خود SSH Client را اجرا میکند و درخواست اتصال به سیستم مقصد ارسال میکند.
مثال:
Laptop | | SSH | | Server
در اکثر توزیعهای لینوکس، SSH Client به صورت پیشفرض نصب است.
برای بررسی نسخه:
ssh -V
SSH Server چیست؟
SSH Server سرویسی است که روی سیستم مقصد اجرا میشود و منتظر درخواستهای اتصال میماند.
در لینوکس معمولاً از:
OpenSSH Server
استفاده میشود.
نصب OpenSSH Server
در توزیعهای مبتنی بر Debian و Ubuntu:
sudo apt install openssh-server
پس از نصب، سرویس SSH ایجاد میشود.
مدیریت سرویس SSH
بررسی وضعیت:
systemctl status ssh
شروع سرویس:
sudo systemctl start ssh
فعال کردن اجرای خودکار:
sudo systemctl enable --now ssh
راهاندازی مجدد:
sudo systemctl restart ssh
اتصال به سیستم دیگر
ساختار دستور:
ssh username@ip-address
مثال:
ssh amir@192.168.1.20
در این دستور:
username
نام کاربر سیستم مقصد است.
ip-address
آدرس سیستم مقصد است.
اولین اتصال SSH
در اولین اتصال، SSH اطلاعات سرور را بررسی میکند.
پیامی مشابه زیر نمایش داده میشود:
Are you sure you want to continue connecting?
پیش از تأیید، اثر انگشت کلید میزبان را از یک کانال مطمئن با مدیر سرور تطبیق دهید. تأیید بدون بررسی، اتصال نخست را در برابر حملهٔ میانی محافظت نمیکند. پس از تأیید، کلید میزبان ذخیره میشود.
این اطلاعات در فایل زیر قرار میگیرد:
~/.ssh/known_hosts
این فایل برای جلوگیری از حملات جعل هویت استفاده میشود.
روشهای احراز هویت SSH
SSH معمولاً از دو روش استفاده میکند:
Password Authentication
Key-Based Authentication
ورود با رمز عبور
در این روش کاربر با رمز عبور وارد سیستم میشود.
مثال:
ssh user@server-ip
مزایا:
- ساده
- مناسب برای شروع
معایب:
- امنیت کمتر
- امکان حمله Brute Force
ورود با SSH Key
روش حرفهایتر استفاده از کلیدهای SSH است.
در این روش از دو کلید استفاده میشود:
- Private Key
- Public Key
Private Key چیست؟
Private Key کلید خصوصی شماست.
این کلید باید فقط روی سیستم شخصی شما باقی بماند.
هرگز نباید آن را برای دیگران ارسال کنید.
Public Key چیست؟
Public Key کلید عمومی است.
این کلید روی سرور قرار میگیرد و برای شناسایی شما استفاده میشود.
ساخت SSH Key
برای ایجاد یک کلید مدرن Ed25519:
ssh-keygen -t ed25519 -a 64
معمولاً فایلهای زیر ساخته میشوند:
~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
انتقال کلید عمومی به سرور
برای کپی کردن Public Key:
ssh-copy-id username@server-ip
مثال:
ssh-copy-id amir@192.168.1.20
بعد از انجام این کار، ورود بدون رمز امکانپذیر خواهد بود.
پوشه SSH
تنظیمات SSH کاربران در مسیر زیر قرار دارد:
~/.ssh
فایلهای مهم:
authorized_keys
known_hosts
id_rsa
id_rsa.pub
authorized_keys
این فایل شامل کلیدهای عمومی مجاز برای ورود است.
مسیر:
~/.ssh/authorized_keys
هر کلیدی که داخل این فایل قرار گیرد، اجازه ورود خواهد داشت.
known_hosts
این فایل اطلاعات سرورهایی که قبلاً به آنها متصل شدهایم را نگهداری میکند.
مسیر:
~/.ssh/known_hosts
تنظیمات SSH Server
فایل اصلی تنظیمات SSH:
/etc/ssh/sshd_config
در این فایل میتوان رفتار SSH را تغییر داد.
تغییر پورت SSH
SSH به صورت پیشفرض از پورت:
22
استفاده میکند.
برای تغییر:
Port 2222
پیش از reload، syntax تنظیمات را بررسی کنید و نشست فعلی را باز نگه دارید:
sudo sshd -t
اگر Firewall فعال است، ابتدا پورت جدید را فقط برای مبدأهای لازم باز کنید و سپس تنظیمات را بدون قطع اتصال فعلی بارگذاری کنید:
sudo ufw allow 2222/tcp
sudo systemctl reload ssh
در بعضی توزیعها نام unit برابر sshd است. در یک نشست دوم اتصال با ssh -p 2222 user@server را آزمایش کنید و فقط پس از موفقیت، قانون پورت قبلی را حذف کنید. تغییر پورت جای کلید، محدودسازی دسترسی و بهروزرسانی را نمیگیرد.
انتقال فایل با SCP
SCP مخفف:
Secure Copy
است.
این ابزار برای انتقال فایل از طریق SSH استفاده میشود.
ساختار:
scp file username@server:/path
مثال:
scp test.txt amir@192.168.1.20:/home/amir
دریافت فایل از سرور
مثال:
scp amir@192.168.1.20:/home/amir/test.txt .
SFTP چیست؟
SFTP مخفف:
SSH File Transfer Protocol
است.
این پروتکل امکان مدیریت فایلها از طریق SSH را فراهم میکند.
اتصال:
sftp username@server-ip
دستورات مهم SFTP
نمایش فایلها:
ls
دانلود فایل:
get filename
آپلود فایل:
put filename
خروج:
exit
SSH Tunneling
SSH فقط برای ورود به سرور استفاده نمیشود.
میتوان از آن برای ایجاد تونل امن شبکه استفاده کرد.
ساختار:
Local Machine
|
|
SSH Tunnel
|
|
Remote Server
کاربردها:
- دسترسی امن به سرویسها
- عبور امن اطلاعات
- اتصال به شبکههای داخلی
Local Port Forwarding
ساختار:
ssh -L local-port:destination:destination-port user@server
مثال:
ssh -L 8080:localhost:80 user@server
امنیت SSH
برای افزایش امنیت SSH:
- استفاده از SSH Key
- غیرفعال کردن ورود Root
- استفاده از Firewall
- تغییر پورت پیشفرض
- محدود کردن کاربران
- بروزرسانی سیستم
غیرفعال کردن ورود Root
فایل:
/etc/ssh/sshd_config
تنظیم:
PermitRootLogin no
محدود کردن کاربران SSH
مثال:
AllowUsers amir
مشاهده کاربران متصل
دستور:
who
یا:
w
مشاهده Log های SSH
برای بررسی رویدادهای SSH:
journalctl -u ssh
مدیریت واقعی یک سرور
فرض کنید یک سرور لینوکسی دارید.
اتصال:
ssh user@server-ip
بررسی منابع:
top
بروزرسانی سیستم:
sudo apt update
مدیریت سرویسها:
systemctl restart nginx
بررسی Log ها:
journalctl
تمام این عملیات بدون حضور فیزیکی کنار سرور انجام میشود.
تمرینهای فصل دهم
[01]بررسی نسخه SSH
ssh -V
[02]بررسی وضعیت SSH
systemctl status ssh
[03]ساخت SSH Key
ssh-keygen
[04]مشاهده فایلهای SSH
ls ~/.ssh
[05]مشاهده کاربران متصل
who
جمعبندی فصل دهم
در این فصل یاد گرفتیم:
- SSH چیست.
- Client و Server چگونه کار میکنند.
- چگونه اتصال راه دور ایجاد کنیم.
- SSH Key چگونه کار میکند.
- Public Key و Private Key چیستند.
- چگونه فایل منتقل کنیم.
- SCP و SFTP چه هستند.
- SSH Tunnel چیست.
- چگونه SSH را امنتر کنیم.
SSH یکی از مهمترین ابزارهای دنیای لینوکس است.
تسلط بر SSH یک قدم مهم برای ورود به حوزههای:
- مدیریت سرور
- DevOps
- Cloud
- امنیت سایبری
است.
با یادگیری SSH، کاربر لینوکس از یک استفادهکننده ساده به فردی تبدیل میشود که توانایی مدیریت سیستمهای واقعی را دارد.