GitHub khuyến nghị sao chép kho lưu trữ của nó qua SSH thay vì HTTP vì lý do hiệu suất và bảo mật. Bài hướng dẫn này sẽ chỉ cho bạn cách sao chép kho lưu trữ GitHub vào máy Ubuntu của bạn từng bước một.
Cài đặt sao chép GitHub qua giao thức SSH
Nhân bản một GitHub qua SSH vào một thư mục trong Ubuntu 22.04 yêu cầu bốn bước:
- Tạo cặp khóa SSH, bao gồm khóa bí mật (private) và khóa công khai (public)
- Sao chép giá trị của khóa SSH công khai vào tài khoản GitHub của bạn
- Lấy URL SSH của kho lưu trữ GitHub để tải về
- Sử dụng lệnh git để sao chép từ GitHub với URL SSH
Tạo cặp khóa SSH
Mở của sổ dòng lệnh của bạn (nhấn Ctrl + Alt + T) và thực hiện lệnh sau:
ssh-keygen -o -t rsa -C "your_name@your_company.com"
Sau đó, bạn sẽ được yêu cầu:
- Nơi cất chìa khóa. Giá trị mặc định sẽ là
~/.ssh
(.ssh
bên trong thư mục chính (thư mục home) của bạn. Bạn phải bấm Enter để không thay đổi nó, nếu không nỗ lực sao chép SSH GitHub của bạn sẽ không thành công hoặc bạn phải chỉ định vị trí khóa ssh trong lệnh sao chép của mình. - Nhập passphrase, đây là mật khẩu để bảo vệ khóa của bạn trong trường hợp bạn bị mất khóa. Bạn chỉ cần để trống và nhấn Enter để không dùng passphrase, do đó bạn không cần nhập passphrase khi sao chép kho lưu trữ GitHub của mình.
Bây giờ, bạn có thể nhận được kết quả như bên dưới để chỉ ra nơi các khóa của bạn được lưu trữ:
Your identification has been saved in /your/home/.ssh/id_rsa Your public key has been saved in /your/home/.ssh/id_rsa.pub
Trong đó /your/home/
là thư mục chính (thư mục home) của bạn tương đương với ~/
.
Sao chép nội dung khóa SSH công khai vào tài khoản Github của bạn
Để sao chép kho lưu trữ GitHub qua SSH, bạn phải lưu trữ bản sao khóa công khai của mình trên GitHub.
Khi bạn thực hiện sao chép kho lưu trữ GitHub qua SSH, khóa công khai do máy chủ từ xa nắm giữ sẽ được so sánh với khóa riêng tư được lưu trữ cục bộ trong .ssh
Nếu có sự trùng khớp, việc sao chép GitHub qua SSH sẽ tiếp tục. Nếu không, kết nối không thành công. Vì vậy, để mọi thứ hoạt động đúng, GitHub cần một bản sao khóa SSH công khai của bạn.
Mở khóa công khai của bạn, có thể tên là id_rsa.pub
, bằng một trình soạn thảo văn bản thuần và sao chép nội dung. Hoặc, bạn có thể chỉ cần thực thi một lệnh cat
và sao chép kết quả từ cửa sổ dòng lệnh:
cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0YgUumiYFYML0AxpVEVUpnTSxEphuRNICnxL3sIv6HB7drUPlTZ19R1s1z7eBPiIqDXrH8eCE3vBxf6EWvQVypp4xYimgOKF/F0PACqT2KK9dIImioBn3aicrKJ4TnksOWvWNgiZqlpAbrVtfrtdWGEnHOJrp86BJsf7
Đăng nhập GitHub bằng tài khoản của bạn sau đó mở trang cài đặt tài khoản của bạn để tìm menu SSH and GPG keys
và bấm nút New SSH Key
để thêm khóa công khai bằng cách dán giá trị của khóa công khai vào trường thích hợp và đặt tên tường minh cho khóa của bạn.

Lấy URL GitHub SSH
Mỗi repo GitHub có một nút Code màu xanh lá cây, bạn có thể nhấp vào để nhận URL HTTP, CLI hoặc SSH cho phép repo được sao chép.
Sao chép URL SSH của kho lưu trữ của bạn và bạn đã sẵn sàng thực hiện thao tác sao chép SSH của GitHub. URL SSH cho kho chứa fork của Odoo của tôi như sau:
git@github.com:Viindoo/odoo.git

Sao chép GitHub qua SSH
Bạn có thể cần cài đặt Git bằng cách đưa ra các lệnh sau nếu nó chưa được cài đặt trên máy Ubuntu của bạn
sudo apt update sudo apt install git
Sau đó, đưa ra lệnh Git clone và chỉ định URL SSH được sao chép từ GitHub. Git sẽ đảm bảo rằng hoạt động sao chép GitHub sử dụng kết nối SSH.
git clone git@github.com:Viindoo/odoo.git /path/to/destination
Nếu bạn cần sao chép và chuyển ngay một nhánh không phải là nhánh mặc định cùng một lúc, lệnh có thể là:
git clone -b branch_name git@github.com:Viindoo/odoo.git /path/to/destination
Bạn có thể gặp cảnh báo về việc Git không thể xác thực khóa SSH với dịch vụ xác thực của bên thứ ba và tạm dừng hoạt động sao chép. Điều này được mong đợi. Chỉ cần nhập ‘yes‘ và thao tác sao chép GitHub SSH sẽ tiếp tục.
Bạn cũng có thể được yêu cầu nhập passphrase nếu khóa của bạn yêu cầu passphrase khi bạn tạo ở bước đầu tiên.
Vậy là xong!
Kết luận
Bất kể kho lưu trữ của bạn là công khai hay riêng tư, thực hiện sao chép qua SSH nhanh hơn và an toàn hơn nhiều. Khi hoạt động sao chép hoàn tất, tất cả các tương tác tiếp theo với GitHub sẽ diễn ra qua kết nối SSH an toàn.
Hướng dẫn này dành cho Ubuntu 22.04. Tuy nhiên, nó sẽ hoạt động cho các phiên bản trước đó và mới hơn.