Mar 07, 2025
Hướng Dẫn Cài Đặt SSH, Git Trên Server Ubuntu Và Quản Lý Người Dùng Hiệu Quả
Phineas
@Phineas

Bài viết này, mình sẽ hướng dẫn về cách cấu hình ssh để đăng nhập vào VPS mà ko cần mật khẩu, ngoài ra mình cũng hướng dẫn cách cài đặt git và cách phân quyền người dùng ở VPS. Cùng bắt đầu nhé! 🚀
Trước tiên, nếu bạn cần tìm 1 VPS ngon bổ rẻ, các bạn có thể tìm VPS của Contabo. Mình thấy vừa rẻ vừa khỏe =))
1. Cài Đặt SSH Trên Ubuntu
Bảo mật cho Virtual Private Server (VPS) là yếu tố quan trọng để ngăn chặn truy cập trái phép vào dữ liệu và ứng dụng của bạn. Sử dụng SSH (Secure Shell) với xác thực bằng Public Key là một trong những phương pháp hiệu quả nhất, giúp bạn đăng nhập VPS mà không cần nhập mật khẩu, an toàn hơn so với cách xác thực truyền thống
Bước 1: Tạo Public và Private key
SSH hoạt động dựa trên cặp khóa: khóa công khai (public key) và khóa riêng tư (private key). Bằng cách tạo cặp khóa này trên hệ thống của bạn và gán khóa công khai lên server, bạn có thể đăng nhập mà không cần nhập mật khẩu!
Để tạo cặp khóa SSH, chạy lệnh sau:
ssh-keygen -t rsa -b 4096
Lệnh này sẽ tạo một cặp khóa RSA với độ dài 4096-bit. Bạn sẽ được yêu cầu nhập:
- Enter file in which to save the key (mặc định là
~/.ssh/id_rsa
) - Enter passphrase (không bắt buộc, nhưng nên đặt để tăng bảo mật)

Sau khi chạy lệnh, bạn sẽ thấy đầu ra tương tự như sau:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
Giờ đây, bạn đã có hai tệp:
- id_rsa – Khóa riêng tư (private key) của bạn, không được chia sẻ với ai.
- id_rsa.pub – Khóa công khai (public key), sẽ được thêm vào server để xác thực SSH.
Bước 2: Sao Chép Public key Lên VPS
Sau khi tạo cặp khóa SSH, bạn cần sao chép Public Key lên server. Có hai cách để làm điều này:
Cách 1: Dùng Lệnh ssh-copy-id
(Nhanh Và Tự Động)
Chạy lệnh sau trên máy của bạn:
ssh-copy-id user@your_server_ip
Lệnh này sẽ:
- Kết nối đến VPS bằng giao thức SSH.
- Thêm khóa công khai vào tệp
~/.ssh/authorized_keys
trên VPS. - Tạo thư mục
.ssh
và tệpauthorized_keys
nếu chúng chưa tồn tại.
Sau khi nhập mật khẩu VPS, bạn sẽ thấy thông báo xác nhận rằng khóa đã được sao chép thành công.
Cách 2: Dùng Lệnh scp
(Thủ Công Nhưng Linh Hoạt)
Nếu ssh-copy-id
không hoạt động, bạn có thể sử dụng scp
để sao chép tệp thủ công:
scp ~/.ssh/id_rsa.pub user@your_server_ip:~/.ssh/uploaded_key.pub
Thay user
bằng tên người dùng trên VPS và your_server_ip
bằng địa chỉ IP của VPS. Khi chạy lệnh, bạn sẽ được yêu cầu nhập mật khẩu để xác thực.
Sau đó, đăng nhập vào VPS và chạy lệnh sau để thêm nội dung của uploaded_key.pub
vào authorized_keys
:
cat ~/.ssh/uploaded_key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Lệnh trên đảm bảo rằng chỉ chủ sở hữu có quyền đọc và ghi vào tệp authorized_keys
, tăng cường bảo mật cho SSH.
Bước 3: Chỉnh Sửa Cấu Hình SSH Trên VPS
Sau khi sao chép public key lên VPS, bạn cần chỉnh sửa cấu hình SSH để cho phép xác thực bằng public key. Mở tệp cấu hình SSH bằng vim:
sudo vim /etc/ssh/sshd_config
// ấn i để chỉnh sửa vì mình quen dùng vim hơn nano
// sau khi chỉnh sửa xong, ấn ESC và :wq để lưu thay đổi
Tìm và chỉnh sửa các dòng sau (nếu có #
ở đầu, hãy xóa nó):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Nếu bạn muốn vô hiệu hóa đăng nhập bằng mật khẩu để tăng cường bảo mật, hãy thay đổi:
PasswordAuthentication no
Nếu muốn đổi cổng SSH để tránh tấn công brute-force, hãy chỉnh sửa:
Port 1234 # Chọn một cổng khác thay vì 22 default
Lưu lại thay đổi trong vim bằng cách nhấn Esc
, gõ :wq
, rồi nhấn Enter
.
Sau đó, khởi động lại SSH để áp dụng thay đổi:
sudo service ssh restart
Bước 4: Kiểm Tra Đăng Nhập Không Cần Mật Khẩu
Thử đăng nhập lại bằng SSH:
ssh username@your-server-ip
Nếu không yêu cầu mật khẩu, bạn đã cấu hình thành công!
2. Thiết Lập SSH Key Để Làm Việc Với Git
SSH Key giúp bạn kết nối GitHub/GitLab mà không cần nhập mật khẩu mỗi lần.
Bước 1: Tạo SSH Key ở trên VPS của các bạn
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
Nhấn Enter để chấp nhận đường dẫn mặc định, sau đó nhập mật khẩu nếu cần.
Bước 2: Thêm SSH Key Vào SSH Agent
eval "$(ssh-agent -s)"
sudo ssh-add ~/.ssh/id_rsa
Bước 3: Sao Chép SSH Key Để Thêm Vào GitHub/GitLab
cat ~/.ssh/id_rsa.pub
Copy nội dung hiển thị và dán vào phần SSH Keys trên GitHub/GitLab.

3. Tạo User Mới, Phân Quyền, Và Quản Lý User Trên Server
Best pratice:
Mỗi thành viên truy cập SSH vào server nên có tài khoản riêng, thay vì dùng chung một account. Public key của mỗi người nên được thêm vào file authorized_keys
trong thư mục của chính họ.
🔹 Cấu trúc thư mục:
Mỗi user trên server sẽ có thư mục riêng tại:
📂 /home/<tên-user>
Khi đăng nhập vào user nào, ~/
sẽ đại diện cho thư mục của user đó (/home/<tên-user>
).
🔹 Có nên dùng chung tài khoản SSH?
- Nếu team ít người, có thể linh động dùng chung một tài khoản.
- Tuy nhiên, tốt nhất vẫn là phân chia tài khoản riêng biệt.
🎯 Lợi ích của việc phân chia tài khoản SSH:
✅ Lịch sử lệnh rõ ràng: Tránh bị lẫn lộn, dễ dàng kiểm tra ai đã thực hiện lệnh nào bằng file lịch sử (~/.bash_history
) - (có thể investigate ai gây ra vấn đề gì bằng việc xem file lịch sử lệnh ở từng user)
✅ Dễ quản lý user: Khi một thành viên rời dự án, chỉ cần xóa tài khoản của họ, thay vì phải dò từng public key để gỡ bỏ.
⚡ Tóm lại: Dùng tài khoản SSH riêng giúp bảo mật tốt hơn, quản lý dễ dàng hơn và truy vết vấn đề hiệu quả hơn. 🚀
1. Tạo tài khoản riêng cho từng thành viên
Trước tiên, bạn cần SSH vào server với quyền root
hoặc một user có quyền sudo
.
➤ Tạo user mới
Chạy lệnh sau để tạo user mới (<tên-user>
là tên tài khoản bạn muốn tạo):
sudo adduser <tên-user>
Sau đó, hệ thống sẽ yêu cầu nhập password và một số thông tin cá nhân (có thể bỏ qua bằng cách nhấn Enter
).
➤ Thêm user vào nhóm sudo (nếu cần)
Nếu bạn muốn cấp quyền sudo
cho user này, chạy:
sudo usermod -aG sudo <tên-user>
2. Cấu hình SSH cho user mới
➤ Chuyển sang user mới
su - <tên-user>
➤ Tạo thư mục .ssh
và file authorized_keys
mkdir -p ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
➤ Thêm public key vào authorized_keys
Nhờ thành viên gửi public key của họ (id_rsa.pub
). Sau đó, thêm vào file:
echo "<public-key-của-user>" >> ~/.ssh/authorized_keys
3. Cấu hình SSH để chặn đăng nhập bằng mật khẩu (khuyến nghị như phía trên đã nói)
Chỉnh sửa file cấu hình SSH:
sudo vi/etc/ssh/sshd_config
Tìm và sửa các dòng sau:
PasswordAuthentication no
PermitRootLogin no
Lưu lại (Ctrl + X → Y → Enter
) và restart SSH:
sudo systemctl restart ssh
4. Kiểm tra kết nối SSH
Từ máy client, thử kết nối:
ssh <tên-user>@<địa-chỉ-IP-server>
Nếu kết nối thành công, tức là user đã được thiết lập đúng cách.
5. Quản lý user
➤ Xem danh sách user
cut -d: -f1 /etc/passwd
Ngoài ra, các bạn nên note lại đâu đó cho tiện quản lý, ví dụ mình đang sài notion để note chẳng hạn
➤ Xóa user khi rời team
Nếu một thành viên rời team, hãy xóa tài khoản của họ:
sudo deluser --remove-home <tên-user>
4. Thiết Lập Firewall Để Giới Hạn IP Truy Cập SSH
Firewall giúp chặn truy cập SSH từ các IP không mong muốn, bảo vệ server khỏi các cuộc tấn công.
4.1. Kiểm Tra Trạng Thái Firewall (UFW)
sudo ufw status
Nếu firewall chưa bật, kích hoạt bằng:
sudo ufw enable
4.2. Chỉ Cho Phép SSH Từ Một IP Cụ Thể
Nếu bạn muốn chỉ cho phép IP 123.456.789.000
truy cập SSH:
sudo ufw allow from 123.456.789.000 to any port 22
Hoặc nếu bạn đã đổi cổng SSH (ví dụ 1234
):
sudo ufw allow from 123.456.789.000 to any port 1234
4.3. Chặn Toàn Bộ Các Kết Nối SSH Khác
Sau khi chỉ định IP được phép, chặn tất cả truy cập SSH từ IP khác:
sudo ufw deny 22
Nếu đã đổi port SSH:
sudo ufw deny 1234
4.4. Kiểm Tra Các Quy Tắc Đã Thiết Lập
sudo ufw status numbered
Nếu cần xóa một rule, chạy:
sudo ufw delete [số thứ tự rule]
4.5. Restart Firewall
Sau khi thiết lập, restart firewall để áp dụng thay đổi:
sudo systemctl restart ufw
OK. Bài viết cũng khá dài, hy vọng mọi người thích nội dung này. Cảm ơn mọi người đã đọc đến đây