Nhiều tài khoản Github dùng SSH key trên cùng một thiết bị

Không biết các bạn có gặp trường hợp trên một máy nhưng cần phải dùng nhiều tài khoản github với ssh key như mình không, vì mình gặp trường hợp này nên làm thử rồi chia sẻ luôn. Công ty mình làm về Rails nên khi mới vào phát hẳn một máy Mac, tất nhiên là cài kiết các thứ rồi thông qua ssh protocol để trao đổi với server github rồi. (Tại sao lại không dùng HTTP?) Mình là cái thằng cũng rảnh, dùng cái gì mà không biết chút ít về nó thì cũng khó chịu nên mình thử tìm hiểu về SSH key luôn.

SSH và SSH key

SSH là viết tắt của Secure SHell, là giao thức mã hóa thông tin truyền qua mạng. Thông tin lúc này sẽ được mã hóa rồi truyền đi cho nên cả người nhận và người gửi đều phải biết cách giải mã. Kiểu như khi mình và bạn thống nhất một cách mã hóa nào đó rồi thì khi mình gửi cho bạn một lá thư để báo là con chó nhà bạn vừa đùn bậy vào nhà mình được viết là “Con cá đớp nước bên sông!” thì bạn đọc và hiểu được ý mình. Nhưng cũng có trường hợp mà cách giải mã đó có thể bị trộm mất, thì thằng khác nó cũng hiểu được con chó đó mất nết thế nào, điều này chẳng tốt đẹp gì. Thế nên SSH dùng tới Asymmetrical Encryption, SSH sẽ tạo ra hai key, một public để mã hóa thông tin một private để giải mã chúng, ta sẽ giữ private key, và phát public key cho hệ thống nào ta muốn trao đổi. Có nhiều phương thức mã hóa như rsa, dsa, ed25519,… nhưng trên github guide thì nó dùng rsa, nên mình dùng rsa luôn.

Tạo mới SSH key

Nếu bạn chỉ cần dùng một tài khoản github thôi thì trên github cũng có hướng dẫn chi tiết rồi, mình tổng hợp lại thôi.
À, trước hết thì check thử đã có key chưa đã nhé
ls -al ~/.ssh

Nếu chưa thì tạo thôi:
1. Tạo mới ssh key dùng email của bạn làm nhãn
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. Rồi sẽ được hỏi file bạn muốn lưu vào, nhấn enter để dùng file mặc định (~/.ssh/id_rsa)
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

3. Sau đó lại được hỏi tiếp về passphrase, enter thì không cần dùng passphrase
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

4. Chạy ssh-agent
eval "$(ssh-agent -s)"

5. Thêm private key vào agent
ssh-add -K ~/.ssh/id_rsa
Rồi tiếp theo là thêm public key vào github account

6. Copy public key
pbcopy < ~/.ssh/id_rsa.pub

7. Vào setting tài khoản thêm key vào là ok.

(8. Muốn test thử kết nối ssh đã hoạt động được chưa
ssh -T git@github.com
Nếu nó hiện như vầy là ok!
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
)

Thêm nhiều ssh key

1. Như bước đầu khi tạo mới ssh key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. Khi được hỏi lưu file thì hãy thêm thông tin phân biết phía sau id_rsa ví dụ như id_rsa_personal chẳng hạn.

3. Thêm vào agent
ssh-add -K ~/.ssh/id_rsa_personal

4. Mở file ~/.ssh/config lên, nếu chưa có thì tạo
touch ~/.ssh/config

5. Edit file thành vầy

# Host mặc định
Host github.com
  HostName github.com
  Username git
  IdentityFile ~/.ssh/id_rsa
# Host cho tài khoản khác
Host github.com-personal
  HostName github.com
  Username git
  IdentityFile ~/.ssh/id_rsa_personal

User name là config của mình nhé.
Rồi xong rồi đó. Giờ nếu bạn muốn làm việc với tài khoản mặc định thì trong remote khi clone hay tạo mới gì đó thì sẽ dùng link kiểu này
git clone git@github.com:tuxuan/manyAccounts.git
còn nếu muốn dùng tài khoản cá nhân thì đổi tên host giữa @:
git clone git@github.com-personal:tuxuan/manyAccounts.git

Phù, xong rồi. Chúc bạn code vui nhé.

PS: Mình tìm hiểu linh tinh nên có khi không chính xác lắm, nên mong mọi người góp ý nhé.

Bình luận về bài viết này