Khi làm việc với GitHub, bạn có thể clone, pull và push code bằng HTTPS hoặc SSH. Với lập trình viên làm việc hằng ngày, SSH thường tiện hơn vì không phải nhập token nhiều lần, dễ tự động hóa trong terminal và phù hợp cho workflow có nhiều repository.
SSH với GitHub dùng để làm gì?
SSH giúp máy của bạn xác thực với GitHub bằng cặp khóa public/private key. Private key nằm trên máy local, public key được thêm vào tài khoản GitHub. Khi push code, GitHub kiểm tra key thay vì yêu cầu username/password.
Flow cơ bản sẽ là: tạo SSH key, bật ssh-agent, thêm public key vào GitHub, test kết nối, sau đó dùng remote dạng SSH cho repository.
1. Kiểm tra key hiện có
Trước khi tạo key mới, kiểm tra thư mục SSH trên máy:
ls -al ~/.ssh
Nếu đã có các file như id_ed25519 và id_ed25519.pub, bạn có thể dùng lại key đó. Nếu muốn tách riêng key cho GitHub, tạo key mới với tên rõ ràng hơn.
2. Tạo SSH key mới cho GitHub
GitHub hiện khuyến nghị dùng thuật toán ed25519 nếu hệ thống của bạn hỗ trợ:
ssh-keygen -t ed25519 -C "aedev-github"
Khi được hỏi nơi lưu key, bạn có thể đặt tên riêng:
~/.ssh/id_ed25519_github
Nên đặt passphrase cho private key nếu đây là máy cá nhân hoặc máy làm việc chính. Passphrase giúp giảm rủi ro nếu file private key bị lộ.
3. Bật ssh-agent và add private key
Trên macOS hoặc Linux, bật agent rồi thêm key:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_github
Kiểm tra key đã được agent nhận chưa:
ssh-add -l
4. Copy public key
Public key là file có đuôi .pub. Bạn có thể in ra terminal rồi copy toàn bộ nội dung:
cat ~/.ssh/id_ed25519_github.pub
Nội dung public key thường bắt đầu bằng ssh-ed25519. Chỉ copy public key, không copy private key.
5. Thêm SSH key vào GitHub
- Vào GitHub.
- Mở Settings.
- Chọn SSH and GPG keys.
- Chọn New SSH key.
- Đặt title dễ nhận biết, ví dụ
MacBook Pro - Work. - Dán public key vào ô key và lưu lại.
Nếu key này chỉ dùng để ký commit thì chọn loại signing key. Nếu dùng để clone, pull, push repository thì chọn authentication key.
6. Test kết nối SSH tới GitHub
Sau khi thêm key, test kết nối:
ssh -T git@github.com
Lần đầu kết nối, SSH có thể hỏi bạn có tin host GitHub hay không. Gõ yes nếu fingerprint đúng theo thông tin GitHub công bố. Nếu thành công, GitHub sẽ trả về lời chào kèm username của bạn.
7. Clone repository bằng SSH
Trên trang repository, chọn nút Code, chuyển sang tab SSH, rồi copy URL dạng SSH:
git clone git@github.com:owner/repository.git
Nếu repository đã clone bằng HTTPS, bạn có thể đổi remote sang SSH:
git remote -v
git remote set-url origin git@github.com:owner/repository.git
Sau đó thử:
git pull
git push
8. Cấu hình nhiều tài khoản GitHub
Nếu bạn có một tài khoản cá nhân và một tài khoản công ty, nên tách key và dùng alias trong ~/.ssh/config.
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
Khi đó remote sẽ dùng alias thay vì host mặc định:
git remote set-url origin git@github-work:company/repository.git
Điểm quan trọng là mỗi repository phải trỏ đúng alias để SSH chọn đúng private key.
Lỗi thường gặp
Permission denied publickey: GitHub không nhận key. Hãy kiểm tra public key đã được thêm vào đúng account chưa, private key đã được ssh-add chưa, và remote có đang dùng SSH URL hay vẫn là HTTPS.
ssh-add -l
git remote -v
Repository not found: thường là sai owner/repository, chưa có quyền truy cập repo private, hoặc đang dùng nhầm GitHub account/key.
Host key verification failed: file known_hosts có thể đang lưu fingerprint cũ hoặc bị sai. Không nên xóa bừa; hãy kiểm tra fingerprint chính thức của GitHub trước khi cập nhật.
Kết luận
SSH với GitHub giúp workflow Git gọn hơn, đặc biệt khi bạn làm việc nhiều với terminal, CI/CD hoặc nhiều repository private. Cách setup tốt là dùng key riêng cho GitHub, đặt passphrase, thêm key vào ssh-agent, test bằng ssh -T git@github.com và quản lý nhiều account qua file ~/.ssh/config.
Tham khảo thêm: GitHub Docs về SSH.

