</>

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

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

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

Command Palette

Search for a command to run...

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

راهنمای کامل SSH در Kali: نصب، پیکربندی، احراز هویت کلید، tunneling و امن‌سازی.

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

SSH (Secure Shell) پروتکل استاندارد برای دسترسی از راه دور و انتقال امن فایل است. در این آموزش، با نصب، پیکربندی، احراز هویت کلید و امن‌سازی SSH در Kali Linux آشنا می‌شوید.

نصب SSH#

Kali معمولاً OpenSSH را به‌صورت پیش‌فرض دارد، اما در برخی نسخه‌ها باید نصب شود:

# نصب سرور و کلاینت SSH
sudo apt install -y openssh-server openssh-client
 
# بررسی نسخه
ssh -V
# OpenSSH, Version 9.6, OpenSSH_9.6p1 Debian-2, OpenSSL 3.1.4

فعال‌سازی سرویس SSH#

# راه‌اندازی سرویس ssh
sudo systemctl start ssh
 
# فعال‌سازی برای شروع خودکار در بوت
sudo systemctl enable ssh
 
# بررسی وضعیت
sudo systemctl status ssh
 
# خروجی:
# ● ssh.service - OpenBSD Secure Shell server
#      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
#      Active: active (running) since ... ago
#        Docs: man:sshd(8)
#              man:sshd_config(5)
#   Main PID: 1234 (sshd)
#       Tasks: 1 (limit: 38392)
#      Memory: 2.5M

SSH در محیط‌های عمومی

SSH به‌صورت پیش‌فرض روی Kali نصب نیست تا از حملات brute-force جلوگیری شود. تنها زمانی که واقعاً نیاز به دسترسی از راه دور دارید، سرویس SSH را فعال کنید و همیشه فایروال را روشن نگه دارید.

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

# اتصال با رمز عبور
ssh user@192.168.1.10
 
# خروجی نخستین اتصال:
# The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
# ED25519 key fingerprint is SHA256:abc123def456...
# This key is not known by any other names.
# Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
# Warning: Permanently added '192.168.1.10' (ED25519) to the list of known hosts.
# user@192.168.1.10's password: ********
# Linux kali 6.7.0-kali1-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.7.0-1 ...
 
# اتصال با پورت خاص
ssh -p 2222 user@192.168.1.10
 
# اجرای دستور از راه دور
ssh user@192.168.1.10 "uname -a"

احراز هویت با کلید#

استفاده از کلید SSH به‌جای رمز عبور، بسیار امن‌تر و راحت‌تر است.

۱. ساخت کلید SSH#

# ساخت کلید ED25519 (توصیه‌شده)
ssh-keygen -t ed25519 -C "kali@laptop"
 
# یا کلید RSA 4096-bit
ssh-keygen -t rsa -b 4096 -C "kali@laptop"
 
# خروجی:
# Generating public/private ed25519 key pair.
# Enter file in which to save the key (/home/kali/.ssh/id_ed25519):
# Enter passphrase (empty for no passphrase): ********
# Enter same passphrase again: ********
# Your identification has been saved in /home/kali/.ssh/id_ed25519
# Your public key has been saved in /home/kali/.ssh/id_ed25519.pub
# The key fingerprint is: SHA256:abc123def456... kali@laptop

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

# کپی خودکار کلید به سرور
ssh-copy-id user@192.168.1.10
 
# خروجی:
# /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s)
# /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
# user@192.168.1.10's password: ********
# Number of key(s) added: 1
# Now try logging into the machine, with: "ssh 'user@192.168.1.10'"
# and check to make sure that only the key(s) you wanted were added.
 
# کپی دستی (در صورت عدم دسترسی به ssh-copy-id)
cat ~/.ssh/id_ed25519.pub | ssh user@192.168.1.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"

۳. استفاده از ssh-agent#

برای جلوگیری از تایپ passphrase در هر اتصال:

# راه‌اندازی ssh-agent
eval $(ssh-agent -s)
 
# افزودن کلید به agent
ssh-add ~/.ssh/id_ed25519
 
# خروجی:
# Enter passphrase for /home/kali/.ssh/id_ed25519: ********
# Identity added: /home/kali/.ssh/id_ed25519 (kali@laptop)

پیکربندی ~/.ssh/config

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

Host kali-server
    HostName 192.168.1.10
    User kali
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    ForwardAgent yes
 
Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_key

سپس می‌توانید با ssh kali-server به‌سادگی وصل شوید.

پیکربندی سرور SSH#

فایل پیکربندی سرور در /etc/ssh/sshd_config قرار دارد:

# ویرایش فایل پیکربندی
sudo nano /etc/ssh/sshd_config

تنظیمات امنیتی پیشنهادی#

# غیرفعال‌کردن ورود root
PermitRootLogin no
 
# احراز هویت کلید
PubkeyAuthentication yes
 
# غیرفعال‌کردن ورود با رمز (پس از تنظیم کلید)
PasswordAuthentication no
 
# غیرفعال‌کردن PAM اضافی
UsePAM yes
 
# محدودسازی کاربران
AllowUsers kali user2
 
# تغییر پورت پیش‌فرض (کاهش حملات خودکار)
Port 2222
 
# محدودسازی forwarding
AllowTcpForwarding yes
X11Forwarding yes
 
# تنظیمات timeout
ClientAliveInterval 300
ClientAliveCountMax 2
 
# محدودسازی الگوریتم‌های ضعیف
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

پس از تغییر فایل، سرویس را restart کنید:

# بررسی صحت پیکربندی پیش از restart
sudo sshd -t
 
# restart سرویس
sudo systemctl restart ssh

SSH Tunneling#

۱. Port Forwarding محلی#

دسترسی به سرویس داخلی سرور از طریق SSH:

# forwarded پورت محلی 8080 به پورت 80 سرور
ssh -L 8080:localhost:80 user@192.168.1.10
 
# سپس در مرورگر: http://localhost:8080

۲. Port Forwarding معکوس#

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

# سرور می‌تواند از پورت 9090 خود به پورت 80 شما دسترسی داشته باشد
ssh -R 9090:localhost:80 user@192.168.1.10

۳. Dynamic Port Forwarding (SOCKS Proxy)#

# ساخت proxy SOCKS5 روی پورت 1080
ssh -D 1080 user@192.168.1.10
 
# سپس مرورگر یا ابزارها را روی SOCKS5 localhost:1080 تنظیم کنید

انتقال فایل با SCP#

# کپی فایل از محلی به سرور
scp file.txt user@192.168.1.10:/tmp/
 
# کپی فایل از سرور به محلی
scp user@192.168.1.10:/tmp/file.txt ./
 
# کپی دایرکتوری
scp -r folder/ user@192.168.1.10:/tmp/
 
# با پورت خاص
scp -P 2222 file.txt user@192.168.1.10:/tmp/

انتقال فایل با rsync#

# همگام‌سازی دایرکتوری با سرور
rsync -avz --progress folder/ user@192.168.1.10:/tmp/folder/
 
# همگام‌سازی معکوس
rsync -avz user@192.168.1.10:/tmp/folder/ folder/
 
# حذف فایل‌های اضافی در مقصد
rsync -avz --delete folder/ user@192.168.1.10:/tmp/folder/

خطاهای رایج#

"Connection refused"#

مشکل: اتصال به سرور SSH ناموفق است.

راه‌حل:

# بررسی اجرای سرویس SSH روی سرور
sudo systemctl status ssh
 
# در صورت اجرا نشدن
sudo systemctl start ssh
sudo systemctl enable ssh
 
# بررسی پورت
sudo ss -tlnp | grep :22

"Permission denied (publickey)"#

مشکل: سرور احراز هویت کلید را قبول نمی‌کند.

راه‌حل:

# بررسی مجوزهای فایل
ls -la ~/.ssh/
# -rw------- id_ed25519
# -rw-r--r-- id_ed25519.pub
# -rw------- authorized_keys
 
# تنظیم مجوزهای صحیح
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
 
# بررسی log سرور
sudo tail -20 /var/log/auth.log

"Host key verification failed"#

مشکل: کلید host سرور تغییر کرده و SSH هشدار می‌دهد.

راه‌حل:

# حذف کلید قدیمی از known_hosts
ssh-keygen -R 192.168.1.10
 
# اتصال مجدد
ssh user@192.168.1.10

SSH بسیار کند است#

مشکل: ورود به SSH چند ثانیه طول می‌کشد.

راه‌حل:

# غیرفعال‌سازی reverse DNS در سرور
sudo nano /etc/ssh/sshd_config
# UseDNS no
# GSSAPIAuthentication no
 
sudo systemctl restart ssh

غیرفعال‌کردن PasswordAuthentication

پیش از غیرفعال‌کردن ورود با رمز، مطمئن شوید کلید SSH شما به‌درستی کار می‌کند. در غیر این صورت، ممکن است برای همیشه از سرور lock شوید. همیشه یک session SSH فعال نگه دارید تا در صورت مشکل، بتوانید برگردانید.

خلاصه و مرحلهٔ بعد#

SSH ابزار حیاتی برای مدیریت از راه دور Kali است. با پیکربندی صحیح، استفاده از کلید به‌جای رمز، و تنظیمات امنیتی مناسب، می‌توانید دسترسی امن و راحتی به سرورهای خود داشته باشید.

به‌عنوان گام بعدی:

اشتراک‌گذاری:

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