پیکربندی 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.5MSSH در محیطهای عمومی
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 sshSSH 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.10SSH بسیار کند است
مشکل: ورود به SSH چند ثانیه طول میکشد.
راهحل:
# غیرفعالسازی reverse DNS در سرور
sudo nano /etc/ssh/sshd_config
# UseDNS no
# GSSAPIAuthentication no
sudo systemctl restart sshغیرفعالکردن PasswordAuthentication
پیش از غیرفعالکردن ورود با رمز، مطمئن شوید کلید SSH شما بهدرستی کار میکند. در غیر این صورت، ممکن است برای همیشه از سرور lock شوید. همیشه یک session SSH فعال نگه دارید تا در صورت مشکل، بتوانید برگردانید.
خلاصه و مرحلهٔ بعد
SSH ابزار حیاتی برای مدیریت از راه دور Kali است. با پیکربندی صحیح، استفاده از کلید بهجای رمز، و تنظیمات امنیتی مناسب، میتوانید دسترسی امن و راحتی به سرورهای خود داشته باشید.
بهعنوان گام بعدی:
- آموزش مدیریت کاربران را برای ساخت کاربران SSH بخوانید
- آموزش تنظیمات شبکه را برای پیکربندی شبکه ببینید
- آموزش عیبیابی را برای رفع مشکلات دنبال کنید
این صفحه در تاریخ ۵ تیر ۱۴۰۵ بهروزرسانی شده است.