اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

چگونگی استفاده از SSH برای اتصال به یک سرور از راه دور

چگونگی استفاده از SSH برای اتصال به یک سرور از راه دور

مقدمه

 

SSH (Secure Shell) پروتکلی است رمزنگاری‌شده برای برقراری یک کانال ایمن به‌منظور ورود و اجرای فرمان روی یک سیستم از راه دور. این راهنمای بازنویسی‌شده مفاهیم اصلی SSH، نحوه کار، روش‌های احراز هویت (رمز عبور و کلیدهای SSH)، پیکربندی‌های سمت سرور و کلاینت، مدیریت چند اتصال، انتقال فایل، تونل‌زنی (port forwarding)، نکات امنیتی و خطاهای رایج را به‌صورت گام‌به‌گام و عملی منتقل می‌کند. هر بخش شامل دستوراتی است که آمادهٔ اجرا روی ترمینال هستند.

 

توجه: در تمام دستورات جایگزین‌های ضروری (مثل username، your_server_ip، /path/to/key) مشخص شده‌اند؛ قبل از اجرا آن‌ها را با مقادیر خود عوض کنید.

 

فهرست

 

– مفهوم و ساز و کار کلی SSH

– نصب و ابزارهای SSH در سیستم‌های مختلف

– نخستین اتصال (basic SSH connection)

– ایجاد و استفاده از کلیدهای SSH (SSH key pair)

– اضافه کردن کلید عمومی به سرور

– غیر فعال‌سازی ورود با رمز عبور و استفادهٔ اختصاصی از کلیدها

– مدیریت فایل پیکربندی کلاینت (ssh_config) برای چند اتصال

– انتقال فایل‌ها (scp, sftp, rsync)

– تونل‌زنی و فوروارد پورت (local, remote, dynamic)

– نگهداری جلسات (screen, tmux, autossh)

– خطاهای رایج و رفع آن‌ها

– بهترین شیوه‌های امنیتی SSH

– نکات ویژه برای ویندوز، macOS و لینوکس

 

1- مفهوم و چگونگی کار SSH

– SSH یک پروتکل لایهٔ کاربرد است که با رمزنگاری ترافیک بین کلاینت و سرور، محرمانگی و صحت پیام‌ها را تضمین می‌کند.

– وقتی متصل می‌شوید، یک نشست شل از راه دور باز می‌شود و دستوری که می‌نویسید روی سرور اجرا می‌شود.

– احراز هویت می‌تواند با رمز عبور باشد یا با جفت کلید عمومی/خصوصی؛ روش کلیدها امن‌تر و مرسوم‌تر است.

 

2- نصب و ابزارهای SSH

– بستهٔ OpenSSH معمول‌ترین ابزار است و روی اکثر لینوکس و macOS به‌صورت پیش‌فرض نصب است. ویندوز 10/11 هم می‌تواند OpenSSH داشته باشد یا از PuTTY استفاده شود.

 

دستورات نصب:

– روی Ubuntu/Debian:

sudo apt update

sudo apt install -y openssh-client openssh-server

 

– روی CentOS/RHEL:

sudo yum install -y openssh-clients openssh-server

 

– روی Fedora:

sudo dnf install -y openssh-clients openssh-server

 

– فعال‌سازی و شروع سرور SSH (systemd):

sudo systemctl enable --now ssh

 

– بررسی وضعیت سرویس (systemd):

sudo systemctl status ssh

 

 

– ویندوز (PowerShell) — فعال‌سازی OpenSSH client اگر نصب نیست:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

 

 

3- اتصال پایه (Basic SSH connection)

– قالب عمومی:

ssh username@your_server_ip

 

– مثال:

ssh root@203.0.113.10

 

 

شرح مراحل:

– برای اولین اتصال از شما خواسته می‌شود fingerprint میزبان را تأیید کنید — پس yes را بزنید.

– سپس فرایند احراز هویت انجام می‌شود (رمز عبور یا کلید).

– برای وارد شدن به کاربری غیر-root، از نام کاربری مناسب استفاده کنید:

ssh alice@203.0.113.10

 

 

4- ایجاد و مدیریت کلیدهای SSH (SSH key pair)

– تولید یک جفت کلید عمومی/خصوصی با الگوریتم ایمن (ed25519 توصیه می‌شود):

ssh-keygen -t ed25519 -C "your_email@example.com"

 

– یا اگر ed25519 پشتیبانی نمی‌شود از rsa با طول کافی استفاده کنید:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

 

– هنگام اجرای ssh-keygen، مسیر و نام فایل را انتخاب کنید یا Enter بزنید تا پیش‌فرض (~/.ssh/id_ed25519) ذخیره شود. می‌توانید یک passphrase (گذرواژه برای کلید خصوصی) هم تنظیم کنید.

 

5- اضافه کردن کلید عمومی به سرور

روش ساده با ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

 

 

اگر ssh-copy-id نصب نیست، دستور دستی:

ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh"

cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

 

 

تأیید اتصال با کلید:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip

 

 

6- تنظیمات سمت سرور (sshd_config)

فایل پیکربندی معمولاً در /etc/ssh/sshd_config قرار دارد. نکات رایج:

– تغییر پورت پیش‌فرض (برای کاهش آلودگی اسکریپت‌ها):

Port 2222

 

– غیر فعال‌سازی ورود root (توصیه‌شده):

PermitRootLogin no

 

– اجازه یا عدم اجازهٔ ورود با رمز:

PasswordAuthentication no

 

– اجبار استفاده از کلید:

PubkeyAuthentication yes

 

 

نمونه دستورات برای ویرایش و بارگذاری مجدد سرویس:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sudo nano /etc/ssh/sshd_config

sudo systemctl restart ssh

 

 

توجه مهم: پیش از غیرفعال‌کردن PasswordAuthentication مطمئن شوید که اتصال کلید کار می‌کند؛ وگرنه دسترسی خود را از دست می‌دهید.

 

7- مدیریت چند اتصال با ssh_config (کلاینت)

– مسیر فایل: ~/.ssh/config

– می‌توانید میزبان‌های متعدد را با نام‌های کوتاه پیکربندی کنید:

 

نمونه entry:

Host myprod

HostName 203.0.113.10

User alice

Port 2222

IdentityFile ~/.ssh/id_ed25519

 

 

پس از ذخیره، اتصال کوتاه:

ssh myprod

 

 

8-انتقال فایل‌ها و همگام‌سازی

– scp (copy over SSH):

scp /local/path/file.txt username@your_server_ip:/remote/path/

 

– از سرور به کلاینت:

scp username@your_server_ip:/remote/path/file.txt /local/path/

 

– rsync (همگام‌سازی کارآمد):

rsync -avz -e "ssh -p 2222 -i ~/.ssh/id_ed25519" /local/dir/ username@your_server_ip:/remote/dir/

 

– sftp (جلسهٔ تعاملی فایل):

sftp -i ~/.ssh/id_ed25519 username@your_server_ip

 

– انتقال چند فایل با scp:

scp -r /local/dir username@your_server_ip:/remote/dir

 

 

9- تونل‌زنی و فوروارد پورت

– Local port forwarding (فوروارد پورت محلی به هدف از طریق سرور):

ssh -L local_port:destination_host:dest_port username@your_server_ip

 

مثال: فوروارد پورت محلی 8080 به دیتابیس داخلی 127.0.0.1:5432 از طریق سرور

ssh -L 8080:127.0.0.1:5432 alice@203.0.113.10

 

– Remote port forwarding (باز کردن پورتی روی سرور برای دسترسی به کلاینت):

ssh -R remote_port:local_host:local_port username@your_server_ip

 

مثال: دسترسی از سرور به وب محلی شما روی پورت 3000

ssh -R 9000:127.0.0.1:3000 alice@203.0.113.10

 

– Dynamic port forwarding (استفاده به عنوان پراکسی SOCKS):

ssh -D 1080 username@your_server_ip

 

سپس مرورگر را روی پراکسی SOCKS5 با localhost:1080 تنظیم کنید.

 

10- نگهداری جلسات طولانی و اتصالات پایدار

– اگر جلسهٔ شما قطع می‌شود از ابزارهایی مثل tmux یا screen روی سرور استفاده کنید:

ssh username@your_server_ip

tmux new -s mysession

 

– استفاده از autossh برای بازسازی خودکار تونل‌ها:

autossh -M 0 -f -N -L 8080:127.0.0.1:5432 alice@203.0.113.10

 

 

11- خطاهای رایج و راه‌حل‌ها

– “Connection refused”: سرویس sshd روی سرور اجرا نمی‌شود یا فایروال پورت را بسته است.

راه‌حل:

sudo systemctl status ssh

sudo ufw allow 22/tcp

 

– “Permission denied (publickey,password)”: مشکل احراز هویت؛ کلید عمومی در authorized_keys نیست یا دسترسی‌ها اشتباه است.

راه‌حل‌ها:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

– هشدار “REMOTE HOST IDENTIFICATION HAS CHANGED”: کلید میزبان تغییر کرده — ممکن است مهاجم MITM یا تغییر درست سرور باشد. حذف ورودی قدیمی:

ssh-keygen -R your_server_ip

 

– زمان زیاد برای اتصال یا تایم‌اوت: بررسی شبکه، فایروال و سرویس sshd.

 

12- فایروال و محدود کردن دسترسی

– استفاده از فایروال (UFW مثال):

sudo ufw allow 2222/tcp

sudo ufw enable

sudo ufw status

 

– محدود کردن کاربران مجاز در sshd_config:

AllowUsers alice bob

 

 

13- احراز هویت با عامل SSH (ssh-agent) و اضافه کردن کلید

– راه‌اندازی ssh-agent و اضافه‌کردن کلید:

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

 

– در macOS می‌توانید از keychain استفاده کنید؛ در ویندوز با Pageant (PuTTY) یا OpenSSH agent کار مشابه انجام می‌شود.

 

14- احراز هویت دو مرحله‌ای و کلیدهای محافظت‌شده توسط passphrase

– همواره برای کلید خصوصی از passphrase استفاده کنید.

– برای سطوح بالاتر امنیت می‌توان از دستگاه سخت‌افزاری (YubiKey یا سایر FIDO/WebAuthn) برای ذخیرهٔ کلید خصوصی استفاده کرد.

 

15- اجرای دستورات از راه دور

– اجرای یک فرمان ساده روی سرور و خروج:

ssh username@your_server_ip 'sudo apt update && sudo apt upgrade -y'

 

– اجرای فایلی از راه دور:

ssh username@your_server_ip 'bash -s' < local-script.sh

 

 

16- کلیدهای چندگانه و گزینه -i

– اگر چند کلید دارید:

ssh -i /path/to/other_key username@your_server_ip

 

 

17- افزایش ایمنی: تغییر پورت، غیرفعال‌سازی root، استفاده از AllowUsers، محدودیت با Fail2Ban

– نصب و پیکربندی Fail2Ban برای جلوگیری از حملات brute-force:

sudo apt install -y fail2ban

sudo systemctl enable --now fail2ban

 

– نمونه‌ی قاعده‌ای در /etc/fail2ban/jail.local برای سرویس sshd:

[sshd]

enabled = true

maxretry = 5

 

 

18- پیکربندی پیشرفته: Certificate-based SSH (OpenSSH CA)

– برای محیط‌های سازمانی می‌توانید از CA در OpenSSH استفاده کنید تا کلاینت‌ها و سرورها با امضای مرکزی اعتبارسنجی شوند؛ پیاده‌سازی شامل تولید CA key، امضای کلیدهای عمومی کاربر و پیکربندی trust on server است.

 

19- نکاتی برای ویندوز

– استفاده از Windows Terminal یا PowerShell همراه با OpenSSH client:

ssh username@your_server_ip

 

– برای PuTTY: تبدیل کلید خصوصی با PuTTYgen (از OpenSSH به PPK) و وارد کردن در Pageant برای مدیریت.

– اتصال SFTP با WinSCP یا FileZilla (با پشتیبانی از کلید خصوصی).

 

20- نکاتی برای macOS و لینوکس

– از ssh-agent/Keychain استفاده کنید تا نیازی به وارد کردن passphrase در هر اتصال نباشد.

– از فایل ~/.ssh/config برای ساده‌سازی وارسی‌ها و گزینه‌های سفارشی استفاده کنید.

 

21- نمونهٔ کارهای عملی رایج (با دستورات)

– ساخت جفت کلید و اضافه به سرور:

ssh-keygen -t ed25519 -C "me@example.com"

ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@203.0.113.10

 

– اتصال سریع با نام کوتاه:

echo -e "Host myserver\n  HostName 203.0.113.10\n  User alice\n  IdentityFile ~/.ssh/id_ed25519\n  Port 2222" >> ~/.ssh/config

ssh myserver

 

– همگام‌سازی دایرکتوری:

rsync -avz -e "ssh -i ~/.ssh/id_ed25519" /local/project/ alice@203.0.113.10:/home/alice/project/

 

– ساخت تونل محلی برای دسترسی به دیتابیس:

ssh -L 5432:127.0.0.1:5432 alice@203.0.113.10

 

 

22- چک‌لیست امنیتی کوتاه (قابل اجرا)

– تولید کلید ed25519 و استفاده از passphrase:

ssh-keygen -t ed25519 -C "you@example.com"

 

– غیرفعال‌سازی ورود root و رمز در sshd_config، سپس راه‌اندازی مجدد ssh:

sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

sudo sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

sudo systemctl restart ssh

 

– تنظیم Fail2Ban:

sudo apt install -y fail2ban

sudo systemctl enable --now fail2ban

 

– محدود کردن دسترسی با UFW:

sudo ufw allow 2222/tcp

sudo ufw enable

 

 

23- خط‌مشی‌ها و نکات عملیاتی

– همیشه کلید خصوصی را امن نگه دارید (chmod 600).

– قبل از اعمال تغییرات امنیتی (مثل غیرفعال‌سازی رمز) اتصال کلیدی خود را تست کنید تا دسترسی قطع نشود.

– لاگ‌ها را بررسی کنید: /var/log/auth.log یا /var/log/secure بسته به توزیع.

– از کلیدهای کوتاه مدت یا به‌کارگیری CA برای کاربران موقت استفاده کنید.

 

24- منابع عملی برای ادامه

– مستندات OpenSSH (man ssh, man sshd_config)

– راهنماهای پیکربندی توزیع خود و ابزارهایی مثل fail2ban، ufw، iptables

 

خلاصهٔ اجرایی مرحله‌به‌مرحله (دستورات هر مرحله در خط مجزا، آماده اجرا)

1. نصب OpenSSH (Ubuntu):

sudo apt update

sudo apt install -y openssh-client openssh-server

 

 

2. تولید جفت کلید امن (ed25519):

ssh-keygen -t ed25519 -C "your_email@example.com"

 

 

3. اضافه‌کردن کلید عمومی به سرور:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

 

 

4. اتصال با کلید:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip

 

 

5. پشتیبان‌گیری از فایل پیکربندی sshd و تغییر تنظیمات امنیتی:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sudo nano /etc/ssh/sshd_config

sudo systemctl restart ssh

 

 

6. غیرفعال‌کردن ورود با رمز (پس از اطمینان از کارکرد کلیدها):

sudo sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

sudo systemctl restart ssh

 

 

7. تنظیم فایروال (مثال: اجازه پورت 2222 و فعال‌سازی UFW):

sudo ufw allow 2222/tcp

sudo ufw enable

 

 

8. استفاده از ssh-config برای راحتی:

mkdir -p ~/.ssh

chmod 700 ~/.ssh

cat >> ~/.ssh/config <<'EOF'

Host myserver

  HostName your_server_ip

  User username

  Port 2222

  IdentityFile ~/.ssh/id_ed25519

EOF

chmod 600 ~/.ssh/config

 

 

9. تونل‌زنی محلی برای دسترسی به سرویس داخلی:

ssh -L 8080:127.0.0.1:80 username@your_server_ip

 

 

10. راه‌اندازی autossh برای تونل پایدار:

sudo apt install -y autossh

autossh -M 0 -f -N -L 8080:127.0.0.1:80 username@your_server_ip

 

جمع‌بندی

با دنبال‌کردن مراحل بالا می‌توانید به‌طور ایمن و مؤثر از SSH برای مدیریت سرورهای راه دور استفاده کنید: نصب OpenSSH، تولید و نصب کلیدها، پیکربندی سرور و کلاینت، انتقال فایل، استفاده از تونل‌زنی و اتخاذ بهترین شیوه‌های امنیتی. همیشه تغییرات حساس را با احتیاط اعمال کنید و از دسترسی کلیدی به‌عنوان روش ترجیحی برای احراز هویت استفاده نمایید.

 

4.2/5 - (3313 امتیاز)

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


2 × 8

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.