Đăng nhập

Setup SSH GitHub cho Shared Hosting để clone dự án an toàn, nhanh gọn

Hướng dẫn A–Z thiết lập SSH key để clone dự án GitHub về shared hosting. Có checklist, lệnh copy-paste, xử lý lỗi thường gặp và mẹo vận hành an toàn.
Setup SSH GitHub cho Shared Hosting để clone dự án an toàn, nhanh gọn

Vì sao nên dùng SSH key thay vì HTTPS?

  • Không phải gõ PAT hay mật khẩu mỗi lần.

  • Bảo mật hơn vì key được quản lý trên máy chủ, có thể thu hồi nhanh trên GitHub.

  • Hợp với workflow CI/CD dùng release branch, auto deploy.

Chuẩn bị

  • Shared hosting có SSH Access bật. Thường bật trong cPanel mục “SSH Access” hoặc “Terminal”. Nếu chưa có, mở ticket cho nhà cung cấp hosting.

  • Đã cài git trên máy chủ. Nhiều shared hosting có sẵn; nếu không thấy, hỏi nhà cung cấp.


1) Kiểm tra SSH key đang có

ls -l ~/.ssh/id_rsa.pub
  • Nếu không thấy file, chuyển bước 2 để tạo mới.

2) Tạo SSH key mới (RSA 4096)

ssh-keygen -t rsa -b 4096 -C "youremail@example.com"
# Nhấn Enter liên tục để nhận đường dẫn mặc định (~/.ssh/id_rsa). Có thể đặt passphrase nếu muốn.

Mẹo: Shared hosting đôi khi không cho ghi ở nơi lạ. Cứ để mặc định ~/.ssh/ cho chắc.

3) Nạp key vào ssh-agent

Bật agent và thêm private key:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

Nếu gặp lỗi agent, xem phần “Lỗi thường gặp”.

4) Thêm public key vào GitHub

Copy nội dung public key:

cat ~/.ssh/id_rsa.pub
  • Vào GitHub Settings → SSH and GPG keys → New SSH key → dán nội dung và lưu. Tham khảo trang cài đặt tại GitHub SSH and GPG keys settings (https://github.com/settings/keys).

5) Test kết nối với GitHub qua SSH

ssh -T git@github.com

Thông báo mẫu nếu OK:

Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

6) Clone dự án về thư mục public_html (hoặc thư mục app)

Vào thư mục bạn muốn chứa code. Nếu là deploy trực tiếp:

cd ~/public_html

# Cẩn trọng: lệnh sau xóa sạch thư mục hiện tại (kể cả file ẩn). Chỉ chạy khi bạn thật sự muốn sạch sẽ.
rm -rf .[^.]* * .*

# Clone branch release của repo về thư mục hiện tại (dấu chấm ở cuối)
git clone -b release git@github.com:<user/repo>.git .

# Clone từ nhánh mặc định
git clone git@github.com:<user/repo>.git .

Cập nhật về bản mới nhất:

# Nếu có file .env muốn giữ lại giữa các lần pull
git stash push -m "Save .env" .env

git pull origin release

git stash pop || true

Giải thích nhanh:

  • -b release: chỉ định branch release thay vì main.

  • Dấu . cuối lệnh clone để đổ code vào thư mục hiện tại, không tạo thư mục con.

  • Dùng stash để tạm cất .env trước khi pull, sau đó pop khôi phục lại.


Checklist triển khai nhanh

  • [ ] SSH access hoạt động, vào được Terminal của hosting

  • [ ] Có ~/.ssh/id_rsa~/.ssh/id_rsa.pub

  • [ ] Đã ssh-add ~/.ssh/id_rsa

  • [ ] Đã thêm public key vào GitHub → SSH keys

  • [ ] ssh -T git@github.com trả về “successfully authenticated”

  • [ ] Clone/pull đúng branch release


Lỗi thường gặp và cách xử lý

1) Permission denied (publickey)

  • Chưa thêm public key vào GitHub hoặc thêm sai tài khoản GitHub.

  • Chưa nạp key vào agent: chạy lại eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa.

  • Quyền thư mục ~/.ssh chưa chuẩn:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

2) Could not open a connection to your authentication agent

  • Khởi động lại agent rồi add key:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

3) Repo private nhưng vẫn hỏi username/password

  • URL đang là HTTPS. Đổi remote sang SSH:

git remote set-url origin git@github.com:owner/repo.git

4) Host key verification failed

  • Lần đầu kết nối, Git cần fingerprint của GitHub. Chạy thử:

ssh -T git@github.com
  • Nếu bị chặn, thử xóa known_hosts dòng liên quan GitHub rồi kết nối lại:

sed -i.bak '/github.com/d' ~/.ssh/known_hosts
ssh -T git@github.com

5) Không thấy ssh-agent sau khi logout

  • Nhiều shared hosting reset phiên SSH. Bạn cần ssh-add lại sau mỗi phiên hoặc cấu hình script khởi động .bash_profile để tự nạp key. Tham khảo OpenSSH docs tại Learn Microsoft (http://learn.microsoft.com/).


Mẹo nhỏ để sống khỏe với shared hosting

  • Tạo một thư mục ~/repos/yourapp để clone repo gốc, rồi rsync copy sang public_html khi build xong. Tránh lỡ tay xóa nhầm file public.

  • Dùng .gitignore cẩn thận với .env, storage, hoặc thư mục upload.

  • Nếu có CI/CD, cân nhắc build assets hoặc composer install trên máy riêng rồi upload các artifact cần thiết.


Kết luận

SSH key giống như chiếc thẻ từ mở cửa. Cài đúng, nạp đúng, GitHub nhận ra bạn ngay và cho clone mượt mà. Từ đây, deploy trên shared hosting chỉ còn là vài dòng lệnh quen tay.

Bài trước

Setup SSH an toàn cho VPS CentOS: đổi cổng, tắt root, bật SSH key, Fail2Ban

Bài tiếp theo

Tạo VPS Windows và thiết lập IP tĩnh: hướng dẫn thực chiến, dễ hiểu cho người mới

Để lại bình luận của bạn

Email của bạn sẽ không được công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận bản tin

Đăng ký bản tin email để nhận những bài viết mới nhất trực tiếp trong hộp thư của bạn.
Cảm hứng mỗi ngày, nói không với spam ✨