Header Ads Widget

Sử Dụng Nhiều Tài Khoản GitHub SSH Trên Cùng Một Server Linux

Sử Dụng Nhiều Tài Khoản GitHub SSH Trên Cùng Một Server Linux để triển khai source code lên server


Khi làm việc với nhiều tài khoản GitHub trên cùng một VPS hoặc server Linux, bạn có thể gặp lỗi:

ERROR: Repository not found.
fatal: Could not read from remote repository.

hoặc:

Key is already in use

Nguyên nhân là mỗi SSH key chỉ có thể được liên kết với một tài khoản GitHub tại một thời điểm. Nếu server đang sử dụng SSH key của tài khoản A thì sẽ không thể truy cập repository private của tài khoản B.

Bài viết này hướng dẫn cách tạo nhiều SSH key và cấu hình để sử dụng nhiều tài khoản GitHub trên cùng một server.

Bước 1: Kiểm tra tài khoản GitHub hiện tại

Kiểm tra SSH đang đăng nhập vào GitHub bằng tài khoản nào:

ssh -T git@github.com

Ví dụ kết quả:

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

Điều này cho biết SSH key hiện tại đang thuộc tài khoản liensalemall.

Bước 2: Tạo SSH Key mới

Tạo SSH key dành riêng cho tài khoản GitHub:

ssh-keygen -t ed25519 -C "vanlien129@gmail.com" -f ~/.ssh/github_tool

Sau khi hoàn thành sẽ có hai file:

~/.ssh/github_tool
~/.ssh/github_tool.pub

Bước 3: Thêm SSH Key vào GitHub

Hiển thị public key:

cat ~/.ssh/github_tool.pub

Copy toàn bộ nội dung và thêm vào GitHub:

GitHub
→ Settings
→ SSH and GPG keys
→ New SSH key

Đặt tên và lưu lại.

Bước 4: Cấu hình SSH Alias

Mở file cấu hình SSH:

nano ~/.ssh/config

Thêm nội dung:

Host github-tool
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_tool
    IdentitiesOnly yes

Lưu lại và phân quyền:

chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/github_tool
chmod 644 ~/.ssh/github_tool.pub

Bước 5: Kiểm tra kết nối

Kiểm tra alias vừa tạo:

ssh -T github-tool

Nếu thành công sẽ nhận được:

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

Điều này chứng tỏ SSH key mới đã được liên kết đúng với tài khoản GitHub mong muốn.

Bước 6: Cập nhật Remote Repository

Giả sử repository private:

liensalemall/lienvu_com_react

Cập nhật remote:

git remote set-url origin git@github-tool:liensalemall/lienvu_com_react.git

Kiểm tra lại:

git remote -v

Kết quả:

origin  git@github-tool:liensalemall/lienvu_com_react.git (fetch)
origin  git@github-tool:liensalemall/lienvu_com_react.git (push)

Bước 7: Pull Code

Bây giờ có thể pull code bình thường:

git pull origin main

Hoặc:

git fetch
git pull
git push

mà không cần nhập username hoặc password.

Ví dụ sử dụng nhiều tài khoản GitHub

File ~/.ssh/config:

Host github-company
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_company

Host github-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_personal

Host github-tool
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_tool

Khi đó mỗi repository có thể sử dụng một tài khoản GitHub khác nhau mà không bị xung đột SSH key.

Kết luận

Thay vì sử dụng chung một SSH key cho tất cả repository, việc tạo nhiều SSH key và sử dụng SSH Alias giúp:

  • Quản lý nhiều tài khoản GitHub trên cùng server.
  • Truy cập repository private dễ dàng.
  • Không cần nhập username/password khi pull hoặc push.
  • Dễ dàng phân quyền và quản lý bảo mật.

Đây là giải pháp phù hợp cho VPS, CI/CD Server, Docker Build Server hoặc môi trường DevOps sử dụng nhiều tài khoản GitHub.

Nhận xét