</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

پیکربندی SSH در Arch Linux

نصب و پیکربندی امن OpenSSH در Arch Linux: کلیدهای SSH، تأمین امنیت، port forwarding و بهترین روش‌ها.

متوسط۷ دقیقه مطالعهآخرین بروزرسانی: ۹ تیر ۱۴۰۵ویرایش در گیت‌هاب

OpenSSH استاندارد طلایی برای دسترسی از راه دور به لینوکس است. در این آموزش، نصب، پیکربندی امن، کلیدهای SSH، و قابلیت‌های پیشرفته مانند port forwarding را به‌طور کامل مرور می‌کنیم.

SSH چیست؟#

SSH (Secure Shell) پروتکلی رمزنگاری‌شده برای دسترسی امن به سیستم‌های راه‌دور است. کاربردهای اصلی:

  • دسترسی خط فرمان به سرور
  • انتقال امن فایل (SCP, SFTP)
  • تونل‌کردن ترافیک (port forwarding)
  • اجرای دستورات از راه دور
  • پشتیبان‌گیری خودکار

نصب OpenSSH#

# نصب سرور و کلاینت
sudo pacman -S openssh

این بسته هم ssh (کلاینت) و هم sshd (سرور) را نصب می‌کند.

راه‌اندازی سرویس#

# شروع sshd
sudo systemctl start sshd
 
# فعال‌سازی در بوت
sudo systemctl enable sshd
 
# بررسی وضعیت
systemctl status sshd

تست محلی

پس از شروع سرویس، آن را به‌صورت محلی تست کنید:

ssh username@localhost

اگر با کاربر فعلی و رمز عبور وارد شدید، sshd درست کار می‌کند.

فایل پیکربندی سرور#

فایل پیکربندی sshd در /etc/ssh/sshd_config قرار دارد. نسخهٔ پیکربندی‌شدهٔ موقت در /etc/ssh/sshd_config است؛ برای پیکربندی سفارشی، فایل /etc/ssh/sshd_config.d/ را ترجیح دهید:

sudo nano /etc/ssh/sshd_config.d/custom.conf

پیکربندی امن پیشنهادی#

# پورت (پیش‌فرض 22، می‌توانید تغییر دهید)
Port 22
 
# فقط IPv4
AddressFamily inet
 
# پروتکل 2 (پیش‌فرض، امن‌تر)
Protocol 2
 
# کلیدهای میزبان
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
 
# ورود با کلید (پیشنهادی)
PubkeyAuthentication yes
 
# غیرفعال‌کردن ورود با رمز (پس از تنظیم کلید)
PasswordAuthentication no
 
# غیرفعال‌کردن ورود root
PermitRootLogin no
 
# محدودیت کاربران مجاز
AllowUsers alice bob
 
# تنظیمات لاگ
LogLevel VERBOSE
 
# زمان بیکاری
ClientAliveInterval 300
ClientAliveCountMax 2
 
# غیرفعال‌کردن X11 forwarding (اگر نیاز ندارید)
X11Forwarding no
 
# محدودیت تلاش‌های احراز هویت
MaxAuthTries 3
LoginGraceTime 30

پس از ویرایش، سرویس را reload کنید:

sudo systemctl reload sshd

هرگز سرویس را restart نکنید

برای اعمال تغییرات، از reload استفاده کنید، نه restart. restart اتصالات فعلی را قطع می‌کند، اما reload فقط پیکربندی را بارگذاری مجدد می‌کند.

تأیید سینتکس#

قبل از reload، سینتکس فایل را بررسی کنید:

sudo sshd -t

اگر خطایی نباشد، هیچ خروجی نمی‌دهد. اگر خطا باشد، نمایش داده می‌شود.

کلیدهای SSH#

ساخت کلید#

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

# کلید ed25519 (پیشنهادی - سریع و امن)
ssh-keygen -t ed25519 -C "alice@myarch"
 
# یا کلید RSA 4096 (اگر ed25519 پشتیبانی نمی‌شود)
ssh-keygen -t rsa -b 4096 -C "alice@myarch"

در طول فرایند:

  • مسیر فایل: پیش‌فرض ~/.ssh/id_ed25519 را بپذیرید
  • passphrase: رمزی برای محافظت از کلید خصوصی (توصیه می‌شود)

کپی کردن کلید عمومی به سرور#

# روش ۱: با ssh-copy-id (ساده‌ترین)
ssh-copy-id username@server
 
# روش ۲: دستی
cat ~/.ssh/id_ed25519.pub | ssh username@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

پس از کپی، بدون رمز عبور می‌توانید وارد شوید:

ssh username@server

مزیت کلید SSH

کلید SSH بسیار امن‌تر از رمز عبور است. هر کلید ۲۵۶ بیتی (ed25519) معادل رمز عبور ۳۲ کاراکتری است که نمی‌شود با brute force شکست. علاوه بر این، کلید خصوصی هرگز از کامپیوتر شما خارج نمی‌شود.

ssh-agent — مدیریت passphrase#

اگر برای کلید SSH خود passphrase تعیین کرده‌اید، تایپ آن در هر اتصال خسته‌کننده است. ssh-agent آن را در حافظه نگه می‌دارد:

# شروع ssh-agent
eval $(ssh-agent)
 
# افزودن کلید
ssh-add ~/.ssh/id_ed25519
 
# فهرست کلیدها
ssh-add -l

برای خودکارسازی در بوت، فایل ~/.bashrc یا ~/.zshrc:

if [ -z "$SSH_AUTH_SOCK" ]; then
    eval $(ssh-agent -s) > /dev/null
fi

اتصال به سرور#

# اتصال ساده
ssh username@server
 
# با پورت مشخص
ssh -p 2222 username@server
 
# اجرای دستور و خروج
ssh username@server "uname -a"
 
# با کلید مشخص
ssh -i ~/.ssh/custom_key username@server
 
# با tunnel X11 (نمایش گرافیکی)
ssh -X username@server

فایل ~/.ssh/config#

برای اتصال راحت‌تر، فایل ~/.ssh/config بسازید:

# سرور کاری
Host work
    HostName work.example.com
    User alice
    Port 2222
    IdentityFile ~/.ssh/work_key
    ForwardAgent yes
 
# سرور خانگی
Host home
    HostName 192.168.1.100
    User bob
    IdentityFile ~/.ssh/home_key
 
# تنظیمات کلی
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    AddKeysToAgent yes

اکنون کافی است بزنید:

ssh work

Port Forwarding#

Local Forwarding#

تونل از پورت محلی به پورت راه‌دور:

# دسترسی به MySQL راه‌دور روی پورت محلی 3306
ssh -L 3306:localhost:3306 username@server
 
# دسترسی به وب‌سرور داخلی راه‌دور
ssh -L 8080:internal-server:80 username@gateway

Remote Forwarding#

تونل از پورت راه‌دور به پورت محلی:

# اشتراک‌گذاری وب‌سرور محلی روی سرور راه‌دور
ssh -R 8080:localhost:80 username@server

Dynamic Forwarding (SOCKS proxy)#

# ساخت پراکسی SOCKS5 روی پورت محلی 1080
ssh -D 1080 username@server

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

SCP و SFTP — انتقال فایل#

SCP#

# کپی فایل محلی به سرور
scp file.txt username@server:/path/to/destination/
 
# کپی فایل از سرور به محلی
scp username@server:/path/to/file.txt ./
 
# کپی دایرکتوری به‌صورت بازگشتی
scp -r directory/ username@server:/path/
 
# با پورت مشخص
scp -P 2222 file.txt username@server:/path/

SFTP#

# اتصال تعاملی
sftp username@server
 
# در محیط sftp:
sftp> ls
sftp> cd /var/www
sftp> get file.txt
sftp> put local-file.txt
sftp> exit

تأمین امنیت SSH#

استفاده از fail2ban#

برای محافظت در برابر brute force:

sudo pacman -S fail2ban
sudo systemctl enable --now fail2ban

پیکربندی /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 3600
findtime = 600

محدودیت IP با TCP Wrapper#

اگر فقط از IPهای مشخصی می‌خواهید اتصال برقرار شود، فایل /etc/hosts.allow:

sshd: 192.168.1.0/24 203.0.113.5

و فایل /etc/hosts.deny:

sshd: ALL

تغییر پورت پیش‌فرض#

تغییر پورت از ۲۲ به پورت دیگر، حملات خودکار را کاهش می‌دهد:

Port 2222

سپس با ssh -p 2222 متصل شوید.

تغییر پورت امنیت ایجاد نمی‌کند

تغییر پورت فقط noise (اسکن‌های خودکار) را کاهش می‌دهد. مهاجم هدفمند با اسکن پورت‌ها می‌تواند پورت جدید را پیدا کند. برای امنیت واقعی، از کلید SSH و fail2ban استفاده کنید.

لاگ‌های SSH#

# مشاهدهٔ لاگ‌های sshd
journalctl -u sshd
 
# فقط لاگ‌های امروز
journalctl -u sshd --since today
 
# تلاش‌های ناموفق
journalctl -u sshd | grep "Failed"

عیب‌یابی#

اتصال برقرار نمی‌شود#

# بررسی وضعیت سرویس
sudo systemctl status sshd
 
# بررسی گشوده بودن پورت
sudo ss -tlnp | grep ssh
 
# بررسی firewall
sudo iptables -L

کلید کار نمی‌کند#

# بررسی پرمیشن‌ها
ls -la ~/.ssh/
# باید:
# .ssh: 700
# authorized_keys: 600
# id_ed25519: 600
# id_ed25519.pub: 644
 
# اصلاح پرمیشن
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
 
# تست با verbose
ssh -v username@server

Permission denied (publickey)#

# در سرور، بررسی کنید که PubkeyAuthentication فعال است
sudo grep -i pubkey /etc/ssh/sshd_config
 
# و فایل authorized_keys درست است
cat ~/.ssh/authorized_keys

خلاصه#

در این آموزش:

  • OpenSSH را نصب و پیکربندی کردید
  • با کلیدهای SSH کار کردید
  • فایل ~/.ssh/config را ساختید
  • با port forwarding و SCP آشنا شدید
  • امنیت SSH را تقویت کردید

SSH ابزاری است که هر مدیر سیستم و توسعه‌دهنده‌ای باید به آن مسلط باشد. با پیکربندی درست، هم امن و هم کارآمد است.

در آموزش بعدی، با نصب محیط دسکتاپ GNOME آشنا می‌شوید.

پرسش‌های رایج#

آیا باید هر دو ssh و sshd را نصب کنم؟#

openssh بستهٔ کامل است و هم کلاینت و هم سرور را نصب می‌کند. اگر فقط می‌خواهید به سرورهای دیگر وصل شوید (نه سرور باشید)، نیازی به فعال‌سازی sshd نیست.

کدام کلید بهتر است: ed25519 یا RSA؟#

ed25519 سریع‌تر، کوچک‌تر و امن‌تر است. توصیه می‌شود. RSA فقط اگر با سیستم‌های قدیمی سر و کار دارید (با حداقل ۴۰۹۶ بیت).

چگونه چند کلید SSH داشته باشم؟#

در ~/.ssh/config برای هر سرور، IdentityFile مشخص کنید:

Host github.com
    IdentityFile ~/.ssh/github_key
 
Host gitlab.com
    IdentityFile ~/.ssh/gitlab_key
اشتراک‌گذاری:

این صفحه در تاریخ ۹ تیر ۱۴۰۵ به‌روزرسانی شده است.