Deploy code lên server dùng git mà không cần lưu password
Git
54
deployment
9
White

Ôm Boom viết ngày 08/12/2016

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

alt text

Github

alt text

GitLab

alt text

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

alt text

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:

alt text

Github:

alt text

Gitlab:

alt text

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 đó.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Ôm Boom

10 bài viết.
33 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
13 5
Quên mật khẩu là một tính năng mà hấu hết các ứng dụng đều có. Đôi khi nó cũng vô cùng hữu ích. Nhưng đây cũng chính là một backdoor để chiếm tài...
Ôm Boom viết 11 tháng trước
13 5
White
11 6
Virtual Host Virtual Host là một cấu hình trong Apache để cho phép nhiều domain cùng chạy trên một máy chủ. Có một khái niệm khác được đề cập tới ...
Ôm Boom viết 3 năm trước
11 6
White
11 2
Nhiều khi chúng ta cần một start một project nhỏ gọn, không cần phải quá cầu kỳ, nhưng lại quá quen thuộc với Eloquent của Laravel. Vậy làm sao để ...
Ôm Boom viết hơn 1 năm trước
11 2
Bài viết liên quan
White
34 25
Vừa rồi mình vừa tiết kiệm được $5 mỗi tháng sau khi migrate cái (Link) từ Digital Ocean sang Heroku Free Dyno. (Ảnh) Kết quả thật mĩ mãn vì hầu ...
Cẩm Huỳnh viết 12 tháng trước
34 25
White
3 0
Đây là một trong những bài thuộc series Ship your Elixir app with confidence của mình. Các bài trong series: 1. (Link) 2. (Link) Mở bài Một ng...
Cẩm Huỳnh viết 1 năm trước
3 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
10 bài viết.
33 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!