Hướng dẫn chi tiết cách tạo SSH Key cho Gitlab và Github!
SSH là một chương trình tương tác giữa máy chủ và máy khách có sử dụng cơ chế mã hoá đủ mạnh nhằm ngăn chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền. Các chương trình trước đây: telnet, rlogin không sử dụng phương pháp mã hoá. Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung của phiên làm việc bằng cách sử dụng một số công cụ đơn giản. Sử dụng SSH là biện pháp hữu hiệu bảo mật dữ liệu trên đường truyền từ hệ thống này đến hệ thống khác.
Bạn sẽ có 2 key: public key và private key. Bạn sẽ gửi public key của mình cho git server của bạn (gitlab hay github chẳng hạn).
Xong ssh-agent sẽ làm tất cả những việc còn lại cho bạn. Mỗi lần bạn push, ssh-agent sẽ tự gửi kèm các thông tin chứng thực đi, github sẽ nhận diện ra bạn, và bạn không cần phải nhập mật khẩu nữa.
Mở cửa sổ dòng lệnh (terminal) và chạy lệnh:
ls -al ~/.ssh
Lệnh trên sẽ kiểm tra trong thư mục .ssh (nằm ở thư mục gốc của user bạn đang đăng nhập vào máy, Vd trên Linux: /root/.ssh) có ssh key nào chưa, mặc định, các ssh key thường sẽ có dạng:
id_rsa
id_rsa.pub
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
public key sẽ có đuôi .pub (id_rsa.pub), private key thì không có đuôi (id_rsa) Nếu có một cặp ssh key nào trong thư mục này (giả sử là id_rsa và id_rsa.pub), bạn có thể bỏ qua Bước 2 và chuyển thẳng sang Bước 3.
Bước 2: Sinh một SSH key mới
Chạy lệnh sau trên terminal:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Để ngắn gọn hơn bạn có thể sử dụng lệnh này:
ssh-keygen -t rsa
Để tránh phiền phức sau này, mình khuyên bạn nên để các cài đặt ở mặc định, như lần này, ssh-agent hỏi bạn muốn lưu key của mình ở đâu thì bạn cứ thế mà Enter thôi:
Enter file in which to save the key (/root/.ssh/id_rsa): [Press enter]
Nếu bạn muốn tạo một tên ssh-key khác thì hãy nhập đường dẫn cần lưu vào đây (Vd: /root/.ssh/id_rsa)
Tiếp đến thì nhập mật khẩu cho key của bạn:
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]
Lưu ý: mật khẩu khi bạn gõ vào nó sẽ không hiển thị mấy dấu *** như bình thường, nhưng bạn cứ gõ xong rồi Enter thôi. Thêm nữa, bạn nên chọn một mật khẩu ĐỦ MẠNH cho mình. Bạn có thể để trống và Enter để tiếp tục. Nếu có mật khẩu thì sẽ bảo mật hơn.
Sau khi nhập mật khẩu, bạn sẽ nhận được thông báo về việc mật khẩu đã lưu vào địa chỉ lúc nãy bạn chỉ định:
Your identification has been saved in /root/.ssh/id_rsa.
# Your public key has been saved in /root/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]
ssh-agent là trình quản lý ssh key của bạn, công việc của nó thì nãy mình có nói qua ở trên rồi đó.
eval "$(ssh-agent -s)"
# Agent pid 59566
Add ssh key của bạn vào ssh-agent:
ssh-add ~/.ssh/id_rsa
Lưu ý: id_rsa chính là private key của bạn, nếu ở bước 2, bạn có key khác thì thay tên key tương ứng vào.
Copy ssh key vào clipboard:
pbcopy < ~/.ssh/id_rsa.pub
Thủ công hơn thì bạn có thể dùng lệnh sau để show nội dung file ssh-key và tiến hành copy nó.
cat ~/.ssh/id_rsa.pub
Đối với Github
Truy cập vào địa chỉ: https://github.com/settings/profile
Click chọn SSH and GPG keys > New SSH Key
Phần Tittle chỉ là để đặt tên thôi nên bạn muốn để là gì cũng được. Phần Key hãy nhập nội dung mà bạn copy hồi nãy nào
Sau đó click nút Add SSH Key là xong thôi
Đối với Gitlab
Bạn truy cập vào: https://gitlab.com/-/profile/keys
Và làm tương tự các bước như Github ở trên nhé
ssh -T [email protected]
Với github thì là ssh -T [email protected] Có thể bạn sẽ nhận được thông báo về việc thêm host gitlab vào danh sách tin cậy:
The authenticity of host gitlab.com (207.97.227.239) can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?
Bạn chỉ việc gõ yes vào terminal rồi Enter là được. Và bạn sẽ nhận được dòng thông báo thành công:
Welcome to GitLab, @admin!
Hoặc github:
Hi admin! You've successfully authenticated, but GitHub does not
# provide shell access.
OK, đến đây là bạn đã có thể sử dụng link SSH rồi.
Nguồn: