- چرا باید کلید SSH بسازم و از آن استفاده کنم؟
- پیشنیازها و مفاهیم پایه
- ساخت کلید SSH در لینوکس / macOS / WSL
- ساخت کلید SSH در ویندوز (PowerShell / Windows OpenSSH)
- ایمپورت کلید عمومی در AWS EC2 و دیگر پنلهای ابری
- اضافه کردن کلید به GitLab / GitHub و استفاده در CI
- تنظیمات سرور و امنیت پس از نصب کلید
- Praktische Tipps für verschiedene Anwendungen
- مدیریت کلیدها، rotation و استانداردها
- نکات تکمیلی و Troubleshooting
- Abschließende Sicherheitsempfehlungen
- جمعبندی و چکلیست پیشنهادی
چرا باید کلید SSH بسازم و از آن استفاده کنم؟
در محیطهای ابری و دیتاسنترهای بینالمللی، ورود ایمن و خودکار به سرورها یکی از پایههای هر عملیات DevOps، میزبانی وب، رندرینگ، AI و مدیریت دیتابیس است. SSH-Schlüssel روش استاندارد، امن و قابل اسکریپت شدن برای احراز هویت هستند و جایگزین رمزعبورهای ضعیف میشوند.
استفاده از کلیدهای عمومی/خصوصی باعث کاهش خطر brute-force، آسانتر شدن اتوماسیون و پیادهسازی دسترسیهای دقیقتر میشود.
پیشنیازها و مفاهیم پایه
کلید خصوصی (Private key): فایل محرمانه شما که نباید افشا شود.
کلید عمومی (Public key): فایلی که روی سرور قرار میگیرد (authorized_keys).
الگوریتمهای رایج: ed25519 (توصیهشده)، rsa 4096.
مسیرها: ~/.ssh/id_* در لینوکس/WSL و C:\Users\ در ویندوز.
دسترسیها: chmod 700 ~/.ssh Und chmod 600 برای کلید خصوصی.
ساخت کلید SSH در لینوکس / macOS / WSL
توصیه میشود از ed25519 استفاده کنید مگر بهدلیل سازگاری نیاز به RSA داشته باشید.
مراحل تولید و مدیریت کلید در شل
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -o -a 100
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]
chmod 400 my-aws-key.pem
ssh -i my-aws-key.pem [email protected]نکته: در AWS اغلب در زمان راهاندازی Instance، یا کلید را انتخاب میکنید یا آن را ایمپورت میکنید. در صورتی که فایل PEM دارید، همان را بهعنوان Identity استفاده کنید.
ساخت کلید SSH در ویندوز (PowerShell / Windows OpenSSH)
Windows 10/11 دارای OpenSSH client است؛ همچنین میتوانید از PuTTY/Puttygen برای اتصال با PuTTY استفاده کنید.
دستورات PowerShell
ssh-keygen -t ed25519 -C "[email protected]" -f $env:USERPROFILE\.ssh\id_ed25519
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519مسیر فایلها:
C:\Users\\.ssh\id_ed25519 C:\Users\\.ssh\id_ed25519.pub
تبدیل PEM به PPK با PuTTYgen
Allgemeine Schritte:
PuTTYgen را باز کنید.
File > Load private key و فایل
my-aws-key.pemرا لود کنید (نمایش همه فایلها).Save private key بهصورت
my-aws-key.ppkو استفاده در PuTTY (Connection > SSH > Auth > Private key file).
ایمپورت کلید عمومی در AWS EC2 و دیگر پنلهای ابری
AWS Console: EC2 > Key Pairs > Import key pair. نام و محتوای فایل .pub را وارد کنید.
در هنگام ساخت Instance میتوانید Key pair موجود را انتخاب کنید. سایر دیتاسنترها اغلب گزینه Upload/Import SSH key در پنل دارند.
نمونه cloud-init برای افزودن کلید عمومی
#cloud-config
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]اضافه کردن کلید به GitLab / GitHub و استفاده در CI
برای GitLab: User Settings > SSH Keys و کلید عمومی را Paste کنید. برای Deploy keys به پروژه بروید.
در CI/CD کلید خصوصی را بهعنوان متغیر محافظتشده آپلود کنید و در job با ایجاد فایل با دسترسی محدود از آن استفاده کنید (chmod 600).
تنظیمات سرور و امنیت پس از نصب کلید
مرحله اول: دسترسیها را تنظیم کنید.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519سپس تنظیمات /etc/ssh/sshd_config را بررسی و بهروزرسانی کنید:
PasswordAuthentication no
PermitRootLogin nein
PubkeyAuthentication yes
Du kannst Benutzer zulassen را برای محدود کردن کاربران تنظیم کنید.
UseDNS no و تغییر پورت در صورت تمایل.
sudo systemctl restart sshdFirewall:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 2222/tcpبرای جلوگیری از brute-force از Fail2ban یا CrowdSec استفاده کنید:
sudo apt install fail2banبرای سرورهای حساس از bastion/jump host استفاده کنید تا دسترسی مستقیم به شبکههای خصوصی محدود شود.
Praktische Tipps für verschiedene Anwendungen
برای تریدرها (VPS مخصوص ترید)
Wählen Sie einen Standort: نزدیک به سرورهای بروکر یا صرافی برای کمترین latency. ما بیش از ۸۵ لوکیشن جهانی داریم که میتواند موقعیت نزدیک به بازار هدف را فراهم کند.
محدود کردن SSH تنها به IP ثابت یا از طریق VPN توصیه میشود:
sudo ufw allow from 203.0.113.5 to any port 22برای گیمرها (VPS مخصوص گیم)
برای سرورهای بازی از لوکیشنهایی با Peering قوی و CDN/BGP مناسب استفاده کنید. از کلید SSH بهجای پسورد و یک bastion host برای کاهش attack surface بهره ببرید.
برای هوش مصنوعی و رندرینگ (GPU Cloud)
برای اتصال به سرورهای GPU از کلیدهای قوی (ed25519 / RSA4096) استفاده کنید و برای هر پروژه یک کاربر و کلید مجزا اختصاص دهید.
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -p 2222" /local/path user@remote:/remote/pathبرای هاستینگ و GitLab میزبانی
برای دسترسی اتوماتیک سرور به مخازن خصوصی از یک کلید مخصوص سرور (Deploy key) با دسترسی محدود استفاده کنید.
مدیریت کلیدها، rotation و استانداردها
دورهای کلیدها را rotate کنید (مثلاً هر 6 تا 12 ماه).
کلیدهای قدیمی را از
autorisierte_Schlüsselو پنل ابری حذف کنید.از passphrase برای private key و ذخیره در password manager استفاده کنید.
در سازمانها از SSH certificates و CA برای مدیریت متمرکز استفاده کنید (OpenSSH CA).
نکات تکمیلی و Troubleshooting
در مواجهه با خطای Permission denied (publickey) بررسی کنید که public key در ~/.ssh/authorized_keys وجود دارد و دسترسیها صحیح است.
sudo journalctl -u sshd -e
sudo tail -f /var/log/auth.logاگر از ProxyJump یا jump host استفاده میکنید، فایل کانفیگ مفید است:
Host bastion
HostName bastion.example.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host internal-*
ProxyJump bastion
User deploy
IdentityFile ~/.ssh/id_deployAus ServerAliveInterval Und ServerAliveCountMax در ssh config برای جلوگیری از قطع ناگهانی جلسات استفاده کنید.
Abschließende Sicherheitsempfehlungen
محدود کردن دسترسی SSH به IPها، استفاده از VPN یا private network و استفاده از سرویسهای anti-DDoS برای سرورهای حساس از دیگر نکات مهم است.
جمعبندی و چکلیست پیشنهادی
ساخت کلید: ed25519 با passphrase
محافظت فایلها:
chmod 700 ~/.ssh && chmod 600 private_keyفعالسازی SSH-Agent و افزودن کلید
آپلود کلید عمومی در پنل AWS یا دیتاسنتر یا استفاده از cloud-init
غیرفعال کردن PasswordAuthentication و PermitRootLogin
فایروال/UFW و Fail2ban یا CrowdSec
استفاده از bastion، محدود کردن IP و استفاده از VPN برای دسترسیهای حساس
نسخهبرداری و rotation منظم کلیدها









