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-ItemFolder امن Keyها را در Profile کاربر میسازد.ed25519الگوریتم مدرن SSH است.- فایل بدون
.pubPrivate Key و فایل.pubPublic 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 را فعال کنید.