Hướng dẫn triển khai GitHub Deploy Key qua SSH trên Linux Server
- 14-02-2026
- Toanngo92
- 0 Comments
Mục lục
1. Deploy key là gì?
Deploy key là một SSH key được gắn trực tiếp vào một repository GitHub, thay vì gắn với tài khoản người dùng.
Ưu điểm:
- Dùng cho production server an toàn hơn personal key
- Giới hạn quyền theo từng repo
- Phù hợp CI/CD, auto deploy
- Có thể cấp read-only hoặc read/write
Deploy key ≠ SSH key cá nhân.
2. Chuẩn bị môi trường
Yêu cầu:
- Linux server
- Quyền root hoặc user deploy
- Repository private/public trên GitHub
- Git đã cài
Kiểm tra git:
git --version
Nếu chưa có:
apt install git -y
3. Tạo SSH deploy key trên server
Tạo key mới:
ssh-keygen -t ed25519 -C "deploy-key"
Khi hỏi nơi lưu:
/root/.ssh/deploy_key
Bỏ passphrase nếu dùng automation.
Sau khi tạo xong sẽ có:
/root/.ssh/deploy_key
/root/.ssh/deploy_key.pub
4. Cấp quyền file SSH
Bảo mật SSH yêu cầu quyền đúng:
chmod 700 /root/.ssh
chmod 600 /root/.ssh/deploy_key
chmod 644 /root/.ssh/deploy_key.pub
5. Copy public key lên GitHub
Xem public key:
cat /root/.ssh/deploy_key.pub
Copy toàn bộ nội dung.
Vào GitHub:
Repository → Settings → Deploy Keys → Add deploy key
Điền:
- Title: tên server
- Key: dán public key
- Allow write access: tick nếu cần push
Lưu lại.
6. Cấu hình SSH alias
Tạo file config:
nano /root/.ssh/config
Thêm nội dung:
Host github-deploy
HostName github.com
User git
IdentityFile /root/.ssh/deploy_key
IdentitiesOnly yes
Ý nghĩa:
- tạo alias
github-deploy - buộc SSH dùng deploy key
- tránh xung đột nhiều key
7. Test kết nối SSH
Chạy:
ssh -T git@github-deploy
Lần đầu sẽ hỏi:
Are you sure you want to continue connecting?
Gõ:
yes
Nếu thành công:
You've successfully authenticated
8. Clone repository
Clone vào thư mục mới
git clone git@github-deploy:username/repo.git
Clone trực tiếp vào thư mục hiện tại
Di chuyển vào web root:
cd /var/www/project
Clone vào thư mục hiện tại:
git clone git@github-deploy:username/repo.git .
Dấu . nghĩa là clone vào thư mục hiện tại.
⚠️ Thư mục phải trống.
9. Kiểm tra repo
git status
Nếu hiển thị branch → clone thành công.
10. Lỗi thường gặp & cách xử lý
❌ Permission denied (publickey)
Nguyên nhân:
- key sai path
- quyền file sai
- chưa add deploy key vào repo
Fix:
chmod 600 /root/.ssh/deploy_key
Kiểm tra config path đúng:
IdentityFile /root/.ssh/deploy_key
❌ Host key verification failed
Fix:
rm /root/.ssh/known_hosts
Test lại SSH:
ssh -T git@github-deploy
Gõ:
yes
❌ No such identity
SSH đang tìm key sai thư mục.
Đảm bảo key nằm ở:
/root/.ssh/deploy_key
❌ Thư mục không trống khi clone
Git sẽ từ chối clone vào thư mục có file.
Xoá sạch hoặc clone vào thư mục khác.
11. Best practice production
- mỗi repo dùng 1 deploy key riêng
- không dùng personal SSH key trên server
- dùng alias SSH để quản lý nhiều repo
- backup thư mục
.ssh - hạn chế write access nếu không cần push
12. Kết luận
Deploy key giúp:
- server truy cập repo an toàn
- tách biệt quyền user
- dễ tích hợp CI/CD
- phù hợp production
Quy trình chuẩn:
Tạo key → add GitHub → config SSH → test → clone



