Nhu cầu quản lý nhiều tài khoản GitHub trên cùng một thiết bị là điều mà bất kì developer nào cũng sẽ cần. Ai cũng có những account Github khác nhau, phục vụ cho những mục đích khác nhau. Ví dụ như một account mail công ty và một account cho mail cá nhân. Dưới đây là kinh nghiệm mà mình đã sử dụng để chuyển đổi giữa 2 account Github của mình. Các bước cấu hình sẽ lần lượt là:
Tạo SSH key
ls -al ~/.ssh
Đầu tiên, chúng ta có thể kiểm tra xem liệu chúng ta có bất kỳ SSH key nào hiện có hay không.
Nếu đã có, ta có thể dùng các key đó, còn nếu chưa có key nào cả thì có thể tạo bằng lệnh dưới.
ssh-keygen -t rsa -C "[email protected]" -f "ssh_file_name"
Ví dụ:
ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_work"
Đoạn mã trên sẽ tạo các SSH key và lưu public key có tag [email protected]
vào ~/.ssh/id_rsa_work.pub
.
Khi được yêu cầu vị trí lưu SSH key, hãy chấp nhận vị trí mặc định bằng cách nhấn enter. Key private và key public ~/.ssh/id_rsa_work.pub
sẽ được tạo tại vị trí ssh mặc định ~/.ssh/
. Chúng ta đã tạo được ssh key cho account phục vụ công việc, tương tự cho email phục vụ mục đích cá nhân. Tôi đặt tên cho ssh key cá nhân là id_rsa_personal. Sau khi tạo xong chúng ta sẽ có 2 key dưới:
~/.ssh/id_rsa_personal
~/.ssh/id_rsa_work
Thêm SSH key mới vào tài khoản GitHub tương ứng
Chúng ta đã có SSH public key và chúng ta sẽ thêm chúng tài khoản GitHub của mình.
Sao chép public key pbcopy < ~/.ssh/id_rsa_personal.pub
rồi đăng nhập vào tài khoản GitHub cá nhân của bạn:
- Đi tới Setting
- Chọn SSH Key and GPG từ menu bên trái.
- Nhấp vào New SSH Key, cung cấp tiêu đề phù hợp và dán nội dung của SSH key vào editor bên dưới
- Nhấp vào Add Key – Done!
Đối với tài khoản công việc, hãy sử dụng public key tương ứng (pbcopy < ~/.ssh/id_rsa_work.pub
) và lặp lại các bước trên trong tài khoản công việc GitHub của bạn.
Đăng ký SSH Key với SSH Agent
Để sử dụng các key, phải đăng ký chúng với ssh agent trên máy của mình. Đảm bảo ssh-agent đang chạy bằng lệnh eval "$(ssh-agent -s)"
.
Thêm private key vào ssh-agent như sau:
ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work
Sau đó, làm cho ssh-agent sử dụng các SSH Keys tương ứng cho các SSH Hosts khác nhau bằng cách sử dụng file config cấu hình cho SSH.
Tạo tệp cấu hình SSH
Tệp cấu hình SSH sẽ có tại ~/.ssh/config
. Chỉnh sửa nó nếu nó tồn tại, nếu không chúng ta có thể tạo nó.
cd ~/.ssh/
touch config // Creates the file if not exists
nano config // edit file
Tạo các mục cấu hình cho các tài khoản GitHub có liên quan tương tự như mục bên dưới trong tệp ~/.ssh/config
của bạn:
# Personal account
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# Work account
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
work
là id người dùng GitHub cho tài khoản công việc.
github.com-work
là ký hiệu được sử dụng để phân biệt nhiều tài khoản Git. Đảm bảo bạn nhất quán với ký hiệu tên máy chủ mà bạn sử dụng. Điều này có liên quan khi ta clone một repository hoặc set the remote origin cho repository ở local
Cấu hình trên yêu cầu ssh-agent:
Sử dụng key id_rsa_personal
cho bất kỳ URL Git nào sử dụng @github.com
Sử dụng key id_rsa_work
cho bất kỳ URL Git nào sử dụng @github.com-work
Như vậy là ta đã hoàn thành xong việc config để sử dụng 2 tài khoản Github. Thử clone một repository hoặc làm việc với một repo ở local nhé.
Clone Repository
Khi các cấu hình đã ổn, chúng ta có thể tiếp tục và clone các repository tương ứng. Khi clone, ta chỉ cần sử dụng các Host là github.com cho account personal và github.com-work cho account work. Ví dụ như dưới.
Với account cho công việc:
git clone [email protected]:TOMOSIA-VIETNAM/tomogpt.git
Và account cá nhân:
git clone [email protected]:BaoVanPhu/django-learning.git
Thay đổi này được thực hiện tùy thuộc vào Host được xác định trong tệp config SSH. Giữa @ và : phải khớp với những gì ta đã cung cấp trong tệp config SSH.
Local Repository
Với repository đã được cloned trước đó:
Ta chỉ cần update lại remote-url như lệnh dưới
Với account công việc:
git remote set-url origin [email protected]:yamatabitabi/ytb-ec-site.git
Tương tự cho account cá nhân 😀
Nếu tạo một repository mới ở local:
Khởi tạo Git trong thư mục dự án git init
.
Tạo một repo mới trong tài khoản GitHub rồi add Git remote vào repo ở local
git remote add origin [email protected]:TOMOSIA-VIETNAM/new_repo.git
Sau đó add file và commit rồi push code lên thôi.
Account cá nhân thì như bình thường rồi, không có gì phải bàn =))
Done!
Conclusion
Đây là những kinh nghiệm mình đã được đọc và config ở laptop của mình. Hi vọng sẽ có ích cho mọi người.
Cảm ơn mọi người đã dành thời gian để đọc. 😀
Nguồn: Freecodecamp
2 comments
Vậy là em chưa dùng `gem ssh_key_switcher` của author Minh Tang rồi =))
https://github.com/TOMOSIA-VIETNAM/ssh_key_switcher
Cách cài đặt: `gem install ssh_key_switcher`
Sử dụng `sks -s`
Done =))
Xin 1 bài blog giới thiệu về gem này ạa