Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Deploy code lên server dùng git mà không cần lưu password
Nhận thấy một số bạn khi pull code về server gặp phải trường hợp như sau.
Tiêu Phong deploy lên server nên khi clone code về đã dùng lệnh git clone
và sử dụng tài khoản của cậu ta.
git clone https://tieuphong@git.tlbb.com/cai-bang/o-yen-tu.git
tuy nhiên khi Đoàn Dự fix được bug gì đó muốn đưa code về server với lệnh git pull
thì git yêu cầu nhập password của Tiêu Phong. Điều này khá bất tiện vì mỗi lần cần pull code về lại phải cần Tiêu Phong pull code về giúp.
Để khắc phục điều này Tiêu Phong đã tìm ra một cách là khi clone code từ git về cậu đã đính kèm password trong url của repo
git clone https://tieuphong:tayeuatu@git.tlbb.com/cai-bang/o-yen-tu.git
Lúc này Đoàn Dự cần pull code mới về thì chỉ cần remote vào server và chạy git pull origin master
lúc này git sẽ không yêu cầu nhập password nữa mà sẽ tiến hành pull code mới về.
Tuy nhiên lại có vấn đề là Đoàn Dự hoàn toàn có thể biết được password của Tiêu Phong thông qua url của repo, bằng cách xem file .git/config
bằng lệnh cat đơn giản cat ./git/config
hoặc lệnh liệt kê các remote của git bằng lệnh git remote -v
. Điều này khiến quyền riêng tư và bảo mật của Tiêu Phong bị xâm phạm, đặc biệt nguy hiểm nếu Tiêu Phong lại dùng chung mật khẩu git với tài khoản ngân hàng chẳng hạn.
Vấn đề cần giải quyết ở đây là, làm sao để Đoàn Dự có thể pull code về mà không cần biết mật khẩu của Tiêu Phong.
Sử dụng Deployment Key hoặc SSH
Hầu hết các Git Manager (Github, Gitlab, Bitbucket) đều cho phép setup Deployment Key cho repo
Bitbucket
Github
GitLab
Deployment Key chính là public key của server các bạn có thể xem trong thư mục ~/.ssh
trong trường hợp của mình thì mình có một file ~/.ssh/id_rsa.pub
nếu trường hợp file public key này không có thì các bạn sử dụng lệnh ssh-keygen
để tạo file này
các bạn chỉ việc copy nội dung của public key vào trong deployment key là được.
Việc sử dụng deployment key đảm bảo cho các bạn có thể clone, pull code về mà không cần phải nhập password.
Chú ý: khi sử dụng Deployment Key hoặc SSH thì các bạn phải chọn protocol của remote là SSH lúc đó lệnh clone sẽ có dạng
git clone git@git.tlbb.com:tieuphong/cai-bang/o-yen-tu.git
1
git clone git@git.tlbb.com:tieuphong/cai-bang/o-yen-tu.git
Deployment Key sẽ phải setup cho từng repo, có thể sử dụng chung một Public Key cho nhiều server khác nhau.
Các bạn cũng có thể sử dụng SSH Key thay thế có Deployment Key
Bitbucket:
Github:
Gitlab:
SSH key ở đây thì cũng chính là public key được sinh ra bởi lệnh ssh-keygen như trên. Điểm khác biệt là SSH Key sẽ đại diện cho Account của bạn và được setup trong phần profile còn Deployment Key sẽ được setup trên từng Repo.
Việc clone và pull dữ liệu giống với Deployment Key
Sử dụng nhiều remote
Với các Git Manager không hỗ trợ SSH như của công ty đang sử dụng thì có một cách khác là chúng ta sẽ sử dụng nhiều remote để pull code về. Ví dụ
Khi clone Tiêu Phong sử dụng tài khoản của Tiêu Phong mà không đính kém password vào url
git clone https://tieuphong@git.tlbb.com/cai-bang/o-yen-tu.git
Khi Tiêu Phong cần pull code về sẽ dùng lệnh
git pull origin <ten-branch>
Khi Đoàn Dự cần pull code Đoàn Dự sẽ thực hiện việc add thêm một remote vào trong git trước khi pull code về bằng lệnh
git remote add doandudev https://doandu@git.tlbb.com/cai-bang/o-yen-tu.git
Sau đó khi cần pull code Đoàn Dự chỉ cần dùng lệnh
git pull doandudev <ten-branch>
lúc đó git sẽ yêu cầu Đoàn Dự nhập mật khẩu của mình.
Việc sử dụng nhiều remote vẫn đảm bảo được việc update code trên server, và tính riêng tư của từng người trong đó.






