Appearance
Khắc phục lỗi “error in libcrypto” khi sử dụng SSH key trên Windows để kết nối GitHub
Trong quá trình làm việc với GitHub, tôi đã sử dụng openssh để tạo cặp private key và public key trên máy macOS nhằm kết nối và thực hiện pull/push code. Trên máy Mac, mọi thứ đều hoạt động ổn định. Tuy nhiên, khi copy private key đó sang máy Windows, tôi gặp phải lỗi:
bash
[email protected]: Permission denied (publickey)
Cụ thể, khi chạy lệnh:
bash
D:\>git clone [email protected]:lethanh9398/curl-self-test.git
Cloning into 'curl-self-test'...
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Load key "/c/Users/solit/.ssh/data/github/lethanh9398/id_ed25519": error in libcrypto
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Sau khi đọc tài liệu trên GitHub và thử một số cách khắc phục, tôi vẫn không thể giải quyết được vấn đề.
Nguyên nhân
Qua quá trình nghiên cứu, tôi nhận ra rằng openssh trên Windows và macOS có sự khác nhau về cách hoạt động và phiên bản. Sự khác biệt này đôi khi dẫn đến lỗi khi Windows cố gắng đọc private key được tạo trên macOS, cụ thể là lỗi error in libcrypto
.
Giải pháp: Tái tạo lại private key trên Windows
Để khắc phục lỗi, bạn có thể sử dụng lệnh sau trên Windows để thay đổi (tái tạo) passphrase của private key:
bash
ssh-keygen -p -f {đường_dẫn_tới_private_key}
Trong đó:
- -p dùng để thay đổi passphrase.
- -f chỉ định đường dẫn tới file private key của bạn. Lệnh này sẽ yêu cầu bạn nhập passphrase cũ, sau đó cho phép bạn nhập passphrase mới. Bạn có thể nhập lại passphrase cũ nếu muốn. Quá trình này sẽ tái tạo lại file private key theo định dạng phù hợp với openssh trên Windows, giúp khắc phục lỗi
error in libcrypto
.
Các bước thực hiện
Backup private key: Trước khi tiến hành thay đổi, bạn nên sao lưu file private key để tránh mất dữ liệu nếu có sự cố xảy ra.
Chạy lệnh thay đổi passphrase: Mở terminal hoặc Command Prompt trên Windows và chạy lệnh:
bash
ssh-keygen -p -f /c/Users/solit/.ssh/data/github/lethanh9398/id_ed25519
- Nhập passphrase:
- Nhập passphrase cũ khi được yêu cầu.
- Khi được yêu cầu nhập passphrase mới, bạn có thể nhập lại passphrase cũ hoặc nhập passphrase mới theo ý bạn
điền mật khẩu cũ và mới trong câu lệnh luôn
bash
ssh-keygen -p -f "C:\Users\solit\.ssh\data\github\solitarysp\id_ed25519.key" -P "old_pass" -N "new_pass"
- Kiểm tra lại kết nối: Sau khi tái tạo lại private key, thử chạy lại lệnh
git clone
,git pull
hoặcgit push
để kiểm tra kết nối đến GitHub.
Kết quả
Sau khi thực hiện các bước trên, tôi đã pull và push code lên GitHub thành công mà không gặp lỗi
Lưu ý
- Sao lưu private key: Luôn luôn backup private key trước khi thay đổi để tránh mất mát dữ liệu quan trọng.
- Đồng bộ môi trường: Khi chuyển đổi giữa các hệ điều hành, hãy lưu ý rằng các phiên bản và cách thức hoạt động của openssh có thể khác nhau. Việc tái tạo lại key theo định dạng phù hợp với từng hệ điều hành sẽ giúp tránh được các lỗi không mong muốn.