Cách thiết lập Git server riêng trên Linux

Git server host kho lưu trữ của một dự án, nơi chứa mã nguồn và các file cốt lõi khác. Mặc dù bạn có thể tin tưởng vào các dịch vụ Git hosting nổi tiếng toàn cầu như GitHub, nhưng trong một số trường hợp, tốt hơn là host Git server cá nhân để tăng cường quyền riêng tư, khả năng tùy chỉnh và bảo mật.

Hãy tìm hiểu cách bạn có thể thiết lập một Git server riêng trên Linux.

Điều kiện tiên quyết để thiết lập Git server

Trước khi bắt đầu thiết lập Git server riêng, bạn phải có quyền truy cập vào một máy dự phòng hoặc phải đăng ký với các nhà cung cấp dịch vụ đám mây. Điều này rất quan trọng vì bạn sẽ thiết lập máy dự phòng hoạt động như một Git server mà bạn sẽ kết nối từ máy cục bộ của mình và thực hiện các hoạt động Git.

Mặc dù không có yêu cầu hệ thống được xác định rõ ràng, nhưng 1GB RAM sẽ đủ để Git server hoạt động. Hơn nữa, hãy đảm bảo rằng bạn có bản phân phối Linux đang chạy trên máy.

Bước 1: Tải xuống và cài đặt Git trên máy chủ Linux

Tải xuống và cài đặt Git trên máy chủ Linux

Bạn cần phải cài đặt Git trên máy chủ Linux của mình. Kích hoạt một terminal và sử dụng trình quản lý gói của bản phân phối Linux để cài đặt Git:

Trên các dẫn xuất Debian/Ubuntu:

sudo apt install git

Trên các bản phân phối dựa trên Arch:

sudo pacman -S git

Trên CentOS/RHEL/Fedora:

sudo dnf install git

Sau khi Git được cài đặt trên hệ thống của bạn, hãy tiến hành các bước tiếp theo để cấu hình hệ thống Linux và host những kho lưu trữ Git của bạn dưới dạng Git server.

Bước 2: Thiết lập tài khoản người dùng Git

Thiết lập tài khoản người dùng Git

Kết nối với máy chủ Linux của bạn thông qua SSH, RDP hoặc bất kỳ giao thức truy cập từ xa nào khác. Hoặc, nếu bạn đang sử dụng một máy tính dự phòng làm máy chủ, hãy bật nó lên và tạo một tài khoản người dùng mới để xử lý kho của bạn.

ssh username@address
sudo useradd git

Sau khi người dùng mới được thêm, hãy chuyển sang người dùng đó bằng lệnh su:

su git

Tạo tài khoản người dùng git chuyên dụng là một giao thức an toàn đảm bảo các client kết nối với Git server của bạn sẽ bị hạn chế khả năng hiển thị và quyền truy cập vào các tài nguyên trên máy. Điều này cho phép bạn cộng tác một cách an toàn trong các dự án nhóm nơi nhiều thành viên sẽ truy cập vào máy chủ của bạn.

Bước 3: Tạo thư mục .ssh và thêm các key được ủy quyền

Tạo thư mục .ssh và thêm các key được ủy quyền

Tạo một thư mục .ssh là cần thiết để lưu trữ các public key và những dữ liệu thiết yếu khác sẽ chỉ định ai có quyền truy cập vào Git server này. Để bắt đầu, hãy đăng nhập vào tài khoản người dùng git mà bạn đã tạo trước đó, tạo thư mục .ssh và hạn chế quyền truy cập chỉ đối với người dùng git:

ssh git@address
mkdir .ssh
chmod 700 .ssh/
touch .ssh/authorized_keys

Bảo mật quyền truy cập thư mục bằng lệnh chmod để đảm bảo rằng không ai ngoại trừ bạn có thể thực hiện thay đổi đối với nó. Di chuyển vào thư mục .ssh và tạo một file mới "allow_keys" bằng cách sử dụng lệnh touch.

cd .ssh
ssh-keygen -t rsa #only run this command if you DO NOT have an id_rsa.pub file
cat id_rsa.pub

Bạn sẽ phải cập nhật file này bằng SSH public key của các client mà bạn muốn cấp quyền truy cập vào Git server. Tạm dừng phiên SSH và mở file .ssh/id_rsa.pub trong máy cục bộ của bạn bằng trình soạn thảo văn bản hoặc lệnh cat. File này chứa key được mã hóa công khai của bạn, key này khi được ghi vào file allow_keys sẽ cấp cho bạn quyền truy cập vào Git server mà không cần mật khẩu.

cd .ssh
vi authorized_keys

Sao chép public key và tạo kết nối SSH mới tới Git server. Di chuyển vào thư mục .ssh, mở file authorized_keys bằng trình soạn thảo văn bản và dán public key. Lưu các thay đổi và thoát.

Từ đó trở đi, bạn sẽ có thể kết nối với máy chủ mà không cần mật khẩu. Lặp lại bước này cho từng máy sẽ kết nối với máy chủ.

Bước 4: Tạo một thư mục để lưu trữ tất cả kho lưu trữ

Truy cập máy chủ Linux và tạo một thư mục hoặc sử dụng một thư mục có sẵn làm thư mục root. Hãy nhớ rằng đây là thư mục mà tất cả các kho của bạn sẽ được lưu trữ. Đây là một điều tốt để tổ chức các dự án gọn gàng hơn.

mkdir directory_name

Sau khi tạo thư mục, hãy chuyển sang bước cuối cùng trong hướng dẫn này để hoàn tất việc thiết lập Git server.

Bước 5: Bắt đầu phát triển bằng cách thêm dự án mới

Bây giờ, bạn thực sự đã hoàn tất việc thiết lập Git server. Bạn chỉ cần bắt đầu phát triển bằng cách khởi tạo kho lưu trữ và thêm nguồn từ xa vào máy cục bộ. Di chuyển vào thư mục mẹ bằng lệnh cd và tạo một thư mục dự án .git:

cd parent_directory
mkdir new_project.git

Bây giờ, khởi tạo kho lưu trữ bare git:

git init --bare

Với kho lưu trữ được khởi tạo, đã đến lúc thêm nguồn gốc từ xa trên máy cục bộ của bạn:

git remote add origin name git@address:new_project.git

Đó là tất cả những gì bạn cần làm ở phía máy chủ. Giờ đây, bất kỳ client nào được xác thực đều có thể thực hiện các hoạt động Git thông thường như đẩy, kéo, hợp nhất, sao chép, v.v... Để bắt đầu các dự án mới, bạn sẽ phải lặp lại bước này mỗi khi tạo một dự án mới.

Kiểm tra chức năng của nó bằng cách thực thi git push:

touch testfile
git add testfile
git commit -m "test file"
git push name master
git clone git@address:new_project.git

File của bạn sẽ được đẩy thành công đến nguồn từ xa. Để kiểm tra chéo xem thao tác push có hoạt động hay không, bạn có thể sao chép kho lưu trữ và nên tìm file thử nghiệm trong kho lưu trữ.

Mẹo bảo mật cho Git server

Với Git server đang hoạt động, bạn phải chú ý đến tầm vóc bảo mật của nó vì đây là máy chủ cá nhân của bạn và bạn có trách nhiệm duy trì và bảo vệ nó khỏi các mối đe dọa từ bên ngoài. Một số phương pháp bảo mật tốt nhất nên áp dụng là:

  • Tắt đăng nhập bằng mật khẩu
  • Thay đổi shell mặc định thành git-shell. Điều này hạn chế người dùng đã đăng nhập thực thi bất kỳ lệnh không phải git nào
  • Sử dụng một cổng tùy chỉnh cho SSH
  • Vô hiệu hóa đăng nhập của người dùng root
  • Sao lưu dữ liệu thường xuyên

Có rất nhiều cấu hình bảo mật và các biện pháp an toàn mà bạn có thể triển khai trên máy chủ Linux của mình để bảo vệ nó khỏi những kẻ tấn công và ngăn chặn truy cập trái phép.

Thứ Ba, 23/08/2022 15:32
54 👨 724
0 Bình luận
Sắp xếp theo
    ❖ Linux