Vấn đề

Nếu bạn đã từng sử dụng git trên “cửa sổ dòng lệnh” của windows hay macOS, bạn sẽ thấy rằng mật khẩu git của chúng ta được lưu lại tự động. Sau đó, chúng ta chỉ cần fetch – push – pull bình thường. Không cần nhập lại username và password của git nữa. Hơi tiếc là Ubuntu nói riêng và linux nói chung không có tính năng này. Dĩ nhiên chúng ta có thể cài đặt thêm phần mềm bên thứ 3 để có được tính năng tương tự. Mmình chưa thử và cũng ko tin tưởng để thử… lol.

Giải pháp

Sau đây là một thủ thuật nhỏ và cực kỳ đơn giản để bạn có thể quên đi việc bị hỏi username và password liên tục mỗi khi git fetch. Đó là sử dụng git credential storage chỉ với một câu lệnh duy nhất.

git config --global credential.helper store
  • store mode: chế độ này lưu thông tin đăng nhập của bạn dưới dạng plain-text mặc định trong file ~/.my-credentials. Bạn sẽ chỉ phải nhập lại mật khẩu khi bạn đã thay đổi mật khẩu trên git server. Cách này không được bảo mật cho lắm vì mật khẩu được lưu cứng dưới dạng không mã hoá. Do đó, ít nhất các bạn cũng nên sử dụng personal access token thay cho mật khẩu, ví dụ: github personal access token, gitlab personal access token… – lúc nào mà nhỡ có bị lộ thì revoke cái là xong.
git config --global credential.helper cache
git config --global credential.helper cache --timeout 30000
  • cache mode: chế độ này thì an toàn hơn do mật khẩu của bạn sẽ được lưu trong RAM thay vì file cứng và dĩ nhiên là có timeout – mặc định là 15 phút (900 giây). Bạn có thể tuỳ ý thay đổi thời gian timeout sao cho phù hợp với nhu cầu. Mình khuyến cáo nên sử dụng cách này.

Kết luận

Trong thực tế, việc sử dụng private key vẫn tối ưu và bảo mật hơn so với trực tiếp lưu trữ mật khẩu, nhưng việc setup không đơn giản như trên. Các đồng dâm tuỳ ý chọn lựa nhé.