پرش به محتویات

SSH Deploy و GitHub Environment

این Runbook یک Key اختصاصی فرانت‌اند، Host Key تاییدشده و Environment محدود GitHub می‌سازد.

مخاطب: Maintainer Repository و DevOps/SRE.

خارج از دامنه: استفاده دوباره از Private Key Backend یا Key شخصی Developer.

۴. ساخت SSH Key اختصاصی

روی سیستم Windows مورد اعتماد و خارج از Repository:

New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh\tripylon"
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\tripylon\tripylon-frontend-deploy" -C "github-actions:tripylon-frontend"
Get-Content "$env:USERPROFILE\.ssh\tripylon\tripylon-frontend-deploy.pub"
  • New-Item Folder امن Keyها را در Profile کاربر می‌سازد.
  • ed25519 الگوریتم مدرن SSH است.
  • فایل بدون .pub Private Key و فایل .pub Public Key است.
  • GitHub Actions Unattended است؛ Promptهای Passphrase با Enter خالی رد می‌شوند و ریسک با Key اختصاصی، Branch Restriction و Rotation کنترل می‌شود.

روی VPS Permissionها را تایید و فقط خط Public Key واقعی را Append کنید:

sudo install -d -m 0700 -o deploy -g deploy /home/deploy/.ssh
sudo -u deploy touch /home/deploy/.ssh/authorized_keys
sudo chown deploy:deploy /home/deploy/.ssh/authorized_keys
sudo chmod 600 /home/deploy/.ssh/authorized_keys
printf '%s\n' 'restrict ssh-ed25519 AAAA... github-actions:tripylon-frontend' | sudo tee -a /home/deploy/.ssh/authorized_keys >/dev/null

restrict قابلیت‌هایی مانند Port Forwarding، Agent Forwarding و PTY را برای این Key می‌بندد. Private Key هرگز روی VPS کپی نمی‌شود.

۵. تایید Host Key

Fingerprint واقعی را روی VPS بخوانید:

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

روی Windows، فایل موجود Backend را می‌توان پس از تطبیق Fingerprint دوباره استفاده کرد. در غیر این صورت:

ssh-keyscan -H -t ed25519 -p 22 143.14.59.7 | Set-Content -Encoding ascii "$env:USERPROFILE\.ssh\tripylon\frontend_known_hosts"
ssh-keygen -lf "$env:USERPROFILE\.ssh\tripylon\frontend_known_hosts"

Fingerprint دو سیستم باید دقیقا برابر باشد. سپس اتصال را Test کنید:

ssh -i "$env:USERPROFILE\.ssh\tripylon\tripylon-frontend-deploy" -p 22 deploy@143.14.59.7 "docker version"

۶. تنظیم GitHub Environment

در Repository hoa-building-management/frontend از Settings -> Environments، Environment با نام دقیق development بسازید و Deployment Branch را به main محدود کنید.

Environment Secretها:

Secret مقدار
DEPLOY_HOST 143.14.59.7
DEPLOY_PORT 22 یا Port واقعی SSH
DEPLOY_USER deploy
DEPLOY_SSH_KEY محتوای کامل Private Key بدون .pub
DEPLOY_KNOWN_HOSTS محتوای کامل فایل frontend_known_hosts تاییدشده

Environment Variableها:

Variable مقدار
DEPLOY_PATH /opt/applications/tripylon-frontend
DEVELOPMENT_URL https://ui.iranihosts.com

ثبت با GitHub CLI از Root Repository:

gh auth login
gh repo set-default hoa-building-management/frontend
Get-Content -Raw "$env:USERPROFILE\.ssh\tripylon\tripylon-frontend-deploy" | gh secret set DEPLOY_SSH_KEY --env development
Get-Content -Raw "$env:USERPROFILE\.ssh\tripylon\frontend_known_hosts" | gh secret set DEPLOY_KNOWN_HOSTS --env development
"143.14.59.7" | gh secret set DEPLOY_HOST --env development
"22" | gh secret set DEPLOY_PORT --env development
"deploy" | gh secret set DEPLOY_USER --env development
gh variable set DEPLOY_PATH --env development --body "/opt/applications/tripylon-frontend"
gh variable set DEVELOPMENT_URL --env development --body "https://ui.iranihosts.com"

برای main، Review، Check اجباری Verify frontend، رد Approval قدیمی پس از Push جدید و ممنوعیت Force Push و حذف Branch را فعال کنید.

مرحله قبل: VPS | مرحله بعد: DNS و TLS