Tag: ssh-key

  • Cách thiết lập SSH Key để quản lý GitHub

    Cách thiết lập SSH Key để quản lý GitHub


    Đây có lẽ là chủ đề mình viết sớm nhất từ những ngày đầu biết viết code nhưng đến tận hôm nay mới ngồi viết nó một cách chỉn chu nhất =)). Ngày ấy khi đi làm vì mục đích công việc nên mình phải thường xuyên chuyển đổi account cá nhân và công việc. Ban đầu, tần suất chuyển đổi không nhiều nên việc nhập usernamepassword cho từng account mỗi khi cần thao tác với các repo không gây khó khăn gì. Tuy nhiên, khi tần suất tăng dần thì thao tác ấy lại trở nên mất thời gian. Mình cần cái gì đó tự động hơn và chỉ cần thiết lập một lần và github sẽ tự động xác thực và nhận diện account cho các repo tương ứng và thật may mình đã tìm được chiếc chìa khóa mang tên SSH key.

    Chỉ cần gõ từ khóa “ssh key github” và ấn Enter thì sẽ thấy có vô vàn bài viết hướng dẫn về chủ đề này và hi vọng rằng sau phím Enter ấy, bài viết này có duyên được xuất hiện và giúp ích được cho các bạn ^^. Nào, giờ chúng ta cùng bắt tay thực hiện nhé.

    Checklist cần có:

    • GitBash terminal
    • Tài khoản github (Ở đây mình dùng 2 account GitHub riêng để hướng dẫn nhé)

    Các bước thực hiện:


    Tạo SSH key

    Ở bước này, chúng ta sẽ generate ra một cặp private key và public key trên máy tính cá nhân.

    Mở GitBash tại folder mà bạn muốn lưu cặp key được generate.

    Tips: Để dễ quản lý, mình recommend các bạn hãy tạo folder riêng để chứa nó tại /C/Users/<user_name>/.ssh. Và trong bài viết này, mình đã tạo và mở GitBash tại folder /C/Users/Minh TIen/.ssh/02_github

    Copy và paste đoạn text bên dưới, thay đổi email trong ví dụ thành email account GitHub của bạn:

    ssh-keygen -t ed25519 -C "your_email@example.com"

    Ấn Enter và sẽ có các câu hỏi sau xuất hiện:

    > Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):

    Chú thích: Đây là option để nhập file name cho các key, bạn có thể chọn tên tùy ý miễn sao thấy dễ nhớ là được sau đó ấn Enter và sẽ xuất hiện 2 câu hỏi bên dưới

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]

    Chú thích: Đây là option để bảo mật thêm cho key, mình thường để mặc định và ấn Enter

    Vậy là đã tạo xong một cặp ssh key cho tài khoản GitHub thứ nhất, lặp lại các bước trên để tạo tiếp cặp ssh key cho tài khoản GitHub còn lại

    Vậy là đã tạo đủ 2 cặp ssh key cho 2 account GitHub rồi, chúng ta hãy đến bước kế tiếp nhé.

    Add public key vừa tạo vào tài khoản GitHub


    Ở bước này, chúng ta sẽ copy public key (file có đuôi .pub) của cặp ssh key vừa tạo cho tài khoản GitHub tương ứng.

    Double click vào file có đuôi .pub và copy toàn bộ nội dung file

    Truy cập vào tài khoản GitHub của bạn và di chuyển đến phần Settings. Lúc này, bạn sẽ thấy sidebar bên trái có một menu SSH and GPG keys, hãy ấn vào đây, sau đó click tiếp vào button New SSH key

    Lưu ý: Các menu trong ảnh theo thời gian sẽ có thể thay đổi nếu GitHub thay đổi giao diện, vì vậy các bạn có thể tùy tình trạng UI để tìm ra nó nhé.

    Nhập các giá trị tương ứng vào các field, sau khi đã xong ấn Add SSH key

    • (1): Nhập tên title để dễ nhớ, ví dụ như bạn đang dùng laptop cá nhận thì để "Personal laptop"
    • (2): Chọn Authentication Key
    • (3): Paste nội dung của public key đã copy vào


    Lặp lại các bước trên cho tài khoản GitHub còn lại:

    Đã xong, giờ chúng ta chuyển qua bước tiếp theo.

    Thiết lập cấu hình cho file config shortcut


    Nhiệm vụ của chúng ta ở bước này là thiết lập file config để giúp xác định private key tương ứng với public key đã được thêm vào tài khoản GitHub ở các bước trên.

    Mở file config nằm tại thư mục /C/Users/<user_name>/.ssh, nếu file chưa tồn tại bạn có thể tự tạo file mới và thiết lập config theo cú pháp sau:

    Host {name}
    	HostName {IP or domain}
    	IdentityFile {path_file_rsa_private}
    	User {user_name}

    Chú thích:

    • Host: Alias (bí danh) để phân biệt giữa các tài khoản GitHub khác nhau
    • HostName: IP or domain của server (host), trong hướng dẫn này vì đang thao tác với server GitHub nên giá trị sẽ là github.com
    • IdentityFile: đường dẫn đến private key file đã được generate ở các bước trên và nó phải mapping với public key đã thêm vào account GitHub
    • User: username, khi dùng với Git thì mặc định sẽ là username sẽ là git.Và đây là file config hoàn thiện của mình:
    Host github-work
    	HostName github.com
    	User git
    	IdentityFile ~/.ssh/02_github/github-minhtien0410
    Host github-personal 
    	HostName github.com
    	User git
    	IdentityFile ~/.ssh/02_github/github-minhtien020900

    Tiếp theo, ta sẽ check nhanh thử phần thiết lập đã hoạt động chưa bằng lệnh ssh -T <User>@<Host>. Và bên dưới là lệnh test với cấu hình của mình:

    ssh -T git@github-work
    ssh -T git@github-personal


    Nếu có xuất hiện câu hỏi Are you sure you want to continue connecting (yes/no/[fingerprint])? thì bạn chỉ cần nhập yes.

    Nếu thấy hiển thị Hi <username_cua_ban>! You've successfully authenticated, but GitHub does not provide shell access. thì chúc mừnggg, phần thiết lập của chúng ta đã thành công 👏

    Clone repository với cấu hình đã thiết lập


    Ở bước này, ta sẽ thực hiện thao tác clone repository của mỗi account GitHub mà không cần phải nhập username và password thủ công nữa. Các bạn hãy tự tạo 2 repository cho mình, sau khi đã tạo xong giờ ta tiến hành clone chúng về.

    Lấy và copy URL của repository với các thao tác đã đánh dấu như trong hình:

    Thay giá trị github.com trong link đã copy thành giá trị Host tương ứng đã cấu hình ở các bước trên.

    Ví dụ: Trong phần thiết lập riêng ở trên của mình thì URL sau khi chỉnh sửa lại sẽ như sau:

    AccountHostURL của repo ban đầuURL của repo sau khi chỉnh sửa
    minhtien04102000github-workgit@github.com:minhtien04102000/demo-ssh-key-work.gitgit@github-work:minhtien04102000/demo-ssh-key-work.git
    minhtien020900github-personalgit@github.com:minhtien020900/demo-ssh-key.gitgit@github-personal:minhtien020900/demo-ssh-key.git


    Sau đó, tiến hành clone repo về với URL đã được chỉnh sửa:

    git clone git@github-work:minhtien04102000/demo-ssh-key-work.git
    git clone git@github-personal:minhtien020900/demo-ssh-key.git

    Lời kết


    Các step của bài hướng dẫn này được mình vừa viết vừa làm nên khả năng thành công là 99%, tuy nhiên sẽ vẫn có khả năng xảy ra một vài lỗi ngoài ý muốn, nếu gặp phải bạn hãy comment nhé, mình rất sẵn lòng hỗ trợ. Chúc các bạn thành công 💚