Hướng dẫn này giúp bạn tạo và thêm khóa SSH vào tài khoản GitHub để có thể truy cập kho lưu trữ một cách an toàn và không cần nhập mật khẩu.
Phiên bản cho macOS
Bước 1: Tạo khóa SSH
-
Mở ứng dụng Terminal (Applications > Utilities > Terminal).
-
Chạy lệnh sau để tạo khóa Ed25519 (khuyến nghị):
ssh-keygen -t ed25519 -C "your_email@example.com"
- Thay
"your_email@example.com"
bằng địa chỉ email GitHub của bạn.
- Thay
-
Khi được hỏi nơi lưu khóa, nhấn Enter để chọn mặc định (
~/.ssh/id_ed25519
). -
Quan trọng: Nên tạo mật khẩu (passphrase) cho khóa SSH để tăng cường bảo mật. Nếu không muốn, nhấn Enter hai lần.
Bước 2: Sao chép khóa công khai
-
Trong Terminal, chạy lệnh sau để sao chép khóa công khai vào clipboard:
pbcopy < ~/.ssh/id_ed25519.pub
Bước 3: Thêm khóa vào GitHub
- Đăng nhập vào GitHub trên trình duyệt.
- Đi tới Settings -> SSH and GPG keys.
- Nhấp vào New SSH key hoặc Add SSH key.
- Nhập Title (ví dụ: "MacBook của tôi").
- Dán khóa công khai từ clipboard vào trường Key.
- Nhấp Add SSH key.
Bước 4: Kiểm tra kết nối SSH
-
Trong Terminal, chạy lệnh:
ssh -T git@github.com
-
Lần đầu kết nối, xác nhận dấu vân tay (fingerprint) của GitHub.
-
Nếu thành công, bạn sẽ thấy thông báo:
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
Khắc phục lỗi "Permission denied (publickey)" trên macOS
Nếu bạn gặp lỗi Permission denied (publickey)
sau khi thử kết nối, hãy kiểm tra các bước sau:
-
Đảm bảo khóa riêng tư tồn tại: Kiểm tra xem tệp khóa riêng tư (
~/.ssh/id_ed25519
hoặc đường dẫn bạn đã chọn) có thực sự tồn tại trên máy của bạn không.ls -al ~/.ssh/id_ed25519
-
Kiểm tra quyền truy cập khóa riêng tư: Đảm bảo rằng chỉ bạn mới có quyền đọc và ghi vào khóa riêng tư (quyền 600).
chmod 600 ~/.ssh/id_ed25519
-
Cấu hình SSH config (khuyến nghị): Tạo hoặc chỉnh sửa tệp
~/.ssh/config
để chỉ định khóa SSH cho GitHub.nano ~/.ssh/config
Thêm hoặc sửa đổi cấu hình sau:
Host github.com Hostname github.com User git IdentityFile ~/.ssh/id_ed25519 PubkeyAcceptedKeyTypes +ssh-ed25519
Lưu và đóng tệp. Sau đó thử lại kết nối.
-
Kiểm tra khóa công khai trên GitHub: Đảm bảo rằng khóa công khai tương ứng với khóa riêng tư của bạn đã được thêm chính xác vào phần SSH keys trong cài đặt GitHub.
Phiên bản cho Windows
Bước 1: Tạo khóa SSH
-
Mở Git Bash (thường được cài đặt cùng với Git for Windows).
-
Chạy lệnh sau để tạo khóa Ed25519 (khuyến nghị):
ssh-keygen -t ed25519 -C "your_email@example.com"
- Thay
"your_email@example.com"
bằng địa chỉ email GitHub của bạn.
- Thay
-
Khi được hỏi nơi lưu khóa, nhấn Enter để chọn mặc định (
C:\Users\YourUsername\.ssh\id_ed25519
). ThayYourUsername
bằng tên người dùng Windows của bạn. -
Quan trọng: Nên tạo mật khẩu (passphrase) cho khóa SSH để tăng cường bảo mật. Nếu không muốn, nhấn Enter hai lần.
Bước 2: Sao chép khóa công khai
-
Trong Git Bash, chạy lệnh sau để hiển thị khóa công khai:
cat ~/.ssh/id_ed25519.pub
-
Sao chép toàn bộ nội dung khóa công khai hiển thị trên màn hình.
Bước 3: Thêm khóa vào GitHub
- Đăng nhập vào GitHub trên trình duyệt.
- Đi tới Settings -> SSH and GPG keys.
- Nhấp vào New SSH key hoặc Add SSH key.
- Nhập Title (ví dụ: "Máy tính Windows của tôi").
- Dán khóa công khai đã sao chép vào trường Key.
- Nhấp Add SSH key.
Bước 4: Kiểm tra kết nối SSH
-
Trong Git Bash, chạy lệnh:
ssh -T git@github.com
-
Lần đầu kết nối, xác nhận dấu vân tay (fingerprint) của GitHub bằng cách nhập
yes
. -
Nếu thành công, bạn sẽ thấy thông báo:
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
Khắc phục lỗi "Permission denied (publickey)" trên Windows
Nếu bạn gặp lỗi Permission denied (publickey)
sau khi thử kết nối, hãy kiểm tra các bước sau:
-
Đảm bảo khóa riêng tư tồn tại: Kiểm tra xem tệp khóa riêng tư (
C:\Users\YourUsername\.ssh\id_ed25519
hoặc đường dẫn bạn đã chọn) có thực sự tồn tại trên máy của bạn không. Sử dụng File Explorer để kiểm tra. -
Kiểm tra quyền truy cập khóa riêng tư: Đảm bảo rằng chỉ tài khoản người dùng của bạn mới có quyền truy cập vào tệp khóa riêng tư.
-
Cấu hình SSH config (tùy chọn): Bạn có thể tạo hoặc chỉnh sửa tệp
config
trong thư mục~/.ssh/
(nếu chưa có, hãy tạo một tệp văn bản tênconfig
không có đuôi). Thêm cấu hình sau:Host github.com Hostname github.com User git IdentityFile ~/.ssh/id_ed25519 PubkeyAcceptedKeyTypes +ssh-ed25519
Lưu tệp và thử lại kết nối.
-
Kiểm tra khóa công khai trên GitHub: Đảm bảo rằng khóa công khai tương ứng với khóa riêng tư của bạn đã được thêm chính xác vào phần SSH keys trong cài đặt GitHub.
Phiên bản cho Linux
Bước 1: Tạo khóa SSH
-
Mở Terminal.
-
Chạy lệnh sau để tạo khóa Ed25519 (khuyến nghị):
ssh-keygen -t ed25519 -C "your_email@example.com"
- Thay
"your_email@example.com"
bằng địa chỉ email GitHub của bạn.
- Thay
-
Khi được hỏi nơi lưu khóa, nhấn Enter để chọn mặc định (
~/.ssh/id_ed25519
). -
Quan trọng: Nên tạo mật khẩu (passphrase) cho khóa SSH để tăng cường bảo mật. Nếu không muốn, nhấn Enter hai lần.
Bước 2: Sao chép khóa công khai
-
Trong Terminal, bạn có thể sử dụng một trong các lệnh sau để sao chép khóa công khai vào clipboard (tùy thuộc vào môi trường desktop của bạn):
-
Sử dụng
xclip
:xclip -sel clip < ~/.ssh/id_ed25519.pub
(Bạn có thể cần cài đặt
xclip
:sudo apt-get install xclip
hoặcsudo yum install xclip
) -
Sử dụng
xsel
:xsel --clipboard --input < ~/.ssh/id_ed25519.pub
(Bạn có thể cần cài đặt
xsel
:sudo apt-get install xsel
hoặcsudo yum install xsel
) -
Hoặc, bạn có thể hiển thị và sao chép thủ công:
cat ~/.ssh/id_ed25519.pub
Sau đó, chọn và sao chép nội dung khóa công khai.
-
Bước 3: Thêm khóa vào GitHub
- Đăng nhập vào GitHub trên trình duyệt.
- Đi tới Settings -> SSH and GPG keys.
- Nhấp vào New SSH key hoặc Add SSH key.
- Nhập Title (ví dụ: "Máy Linux của tôi").
- Dán khóa công khai từ clipboard vào trường Key.
- Nhấp Add SSH key.
Bước 4: Kiểm tra kết nối SSH
-
Trong Terminal, chạy lệnh:
ssh -T git@github.com
-
Lần đầu kết nối, xác nhận dấu vân tay (fingerprint) của GitHub bằng cách nhập
yes
. -
Nếu thành công, bạn sẽ thấy thông báo:
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
Khắc phục lỗi "Permission denied (publickey)" trên Linux
Nếu bạn gặp lỗi Permission denied (publickey)
sau khi thử kết nối, hãy kiểm tra các bước sau:
-
Đảm bảo khóa riêng tư tồn tại: Kiểm tra xem tệp khóa riêng tư (
~/.ssh/id_ed25519
hoặc đường dẫn bạn đã chọn) có thực sự tồn tại trên máy của bạn không.ls -al ~/.ssh/id_ed25519
-
Kiểm tra quyền truy cập khóa riêng tư: Đảm bảo rằng chỉ bạn mới có quyền đọc và ghi vào khóa riêng tư (quyền 600).
chmod 600 ~/.ssh/id_ed25519
-
Cấu hình SSH config (khuyến nghị): Tạo hoặc chỉnh sửa tệp
~/.ssh/config
để chỉ định khóa SSH cho GitHub.nano ~/.ssh/config
Thêm hoặc sửa đổi cấu hình sau:
Host github.com Hostname github.com User git IdentityFile ~/.ssh/id_ed25519 PubkeyAcceptedKeyTypes +ssh-ed25519
Lưu và đóng tệp. Sau đó thử lại kết nối.
-
Kiểm tra khóa công khai trên GitHub: Đảm bảo rằng khóa công khai tương ứng với khóa riêng tư của bạn đã được thêm chính xác vào phần SSH keys trong cài đặt GitHub.