Sử dụng ssh với 2 tài khoản github cùng 1 lúc
Tình huống Làm việc trong hai repository khác nhau, bắt buộc phải sử dụng hai tài khoản github khác nhau. Dùng giao thức ssh để tương tác mình sẽ hướng dẫn các bạn sử dụng 2 tài khoản github cùng 1 lúc. Github quy định mỗi ssh key chỉ được gắn cho một tài khoản. Mình sẽ tạo hai ssh key, với ...
Tình huống Làm việc trong hai repository khác nhau, bắt buộc phải sử dụng hai tài khoản github khác nhau. Dùng giao thức ssh để tương tác mình sẽ hướng dẫn các bạn sử dụng 2 tài khoản github cùng 1 lúc.
Github quy định mỗi ssh key chỉ được gắn cho một tài khoản.
Mình sẽ tạo hai ssh key, với file ssh key lần lượt là: foo và bar sau đó tiến hành add hai public key của hai file này (foo.pub và bar.pub) lên hai tài khoản github.
Hiện tại, bạn đang tương tác với tài khoản Bar trên github với ssh key là bar, bây giờ bạn muốn tương tác với tài khoản Foo dùng key là foo.
Giải quyết vấn đề Chuyển sang tài khoản mới, ssh key mới
Để giải quyết vấn đề này, ta phải cấu hình lại ssh-agent trên máy mình, nhằm “Ra lệnh cho ssh biết rằng ta muốn chuyển sang ssh key foo“ (để tương tác với repository của Foo). Mở cửa sổ terminal:
Trước hết, kiểm tra xem mình đang tương tác với tài khoản nào:
$ssh -T git@github.com Hi Bar! You've successfully authenticated, but GitHub does not provide shell access.
Đảm bảo ssh-agent đã được khởi chạy
$eval "$(ssh-agent -s)"
Thêm ssh key của tài khoản mới vào ssh-agent (nhập mật khẩu của ssh key khi được hỏi)
$ssh-add ~/.ssh/foo
Kiểm tra xem đã sang được tài khoản mới chưa
$ssh -T git@github.com Hi Foo! You've successfully authenticated, but GitHub does not provide shell access.
Đến đây là bạn đã hoàn toàn có thể chuyển sang bất kỳ tài khoản nào mình muốn.
Việc ghi nhớ những lệnh này rất khó khăn, và thao tác cũng vậy, nên mình tạo một script cho nó chạy tự động.
Đơn giản hóa việc chuyển qua lại tài khoản.
cd to/root/user/path vd: cd /Users/user
$ touch foo.sh $ chmod 777 foo.sh
Mở file foo.sh lên (/Users/user/foo.sh), sau đó viết lần lượt các lệnh kia vào file:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/foo ssh -T git@github.com
Thực hiện tương tự với bar.rb Cuối cùng, để cấu hình tài khoản nào, ta chỉ việc chạy file sh tương ứng:
./foo.sh
Ngoài ra : Nếu muốn cùng lúc đưa code của mình lên hai server khác nhau có được không? Hoàn toàn được, bạn vui lòng đọc bài viết Git remote và việc push source code lên nhiều nơi cùng lúc. Vậy là với ssh, từ nay bạn sẽ giảm được một phần thao tác rườm ra khi làm việc với git, và tập trung vào chuyên môn của mình hơn.