- 1 1. Giới thiệu
- 2 2. Các khái niệm cơ bản của SSH
- 3 3. Cài đặt máy chủ SSH trên Ubuntu
- 4 4. Cấu hình kết nối SSH
- 5 5. Thực hiện Kết nối SSH
- 6 6. Khắc phục Sự cố Kết nối SSH
- 7 7. Enhancing SSH Security
- 8 8. Câu hỏi thường gặp (FAQ)
- 8.1 Câu hỏi 1: Tại sao SSH hiển thị “Connection refused”?
- 8.2 Câu hỏi 2: Làm thế nào để thay đổi cổng SSH mặc định?
- 8.3 Câu hỏi 3: Tôi nên kiểm tra gì nếu xác thực bằng khóa công khai không hoạt động?
- 8.4 Câu hỏi 4: Làm thế nào để cho phép truy cập SSH chỉ từ các địa chỉ IP cụ thể?
- 8.5 Câu hỏi 5: Làm thế nào để thay đổi thời gian chờ phiên SSH?
- 8.6 Tóm tắt
- 9 9. Kết luận
1. Giới thiệu
Bằng cách sử dụng SSH trên Ubuntu, bạn có thể truy cập và vận hành máy chủ hoặc PC từ xa một cách an toàn. Bài viết này cung cấp giải thích chi tiết về SSH — từ các khái niệm cơ bản và cách cài đặt máy chủ SSH trên Ubuntu, đến các biện pháp bảo mật tốt nhất và cách khắc phục sự cố — với những lời giải thích rõ ràng, phù hợp ngay cả với người mới bắt đầu.
SSH là gì?
SSH (Secure Shell) là một giao thức cho phép kết nối từ xa an toàn tới máy tính qua mạng. Khác với các giao thức truyền thống như Telnet hay FTP, SSH mã hoá dữ liệu truyền thông, giảm đáng kể nguy cơ bị nghe lén và giả mạo.
Các trường hợp sử dụng chính của SSH trên Ubuntu
Các kịch bản chính mà SSH được sử dụng trên Ubuntu bao gồm:
- Quản lý máy chủ từ xa : Vận hành các máy chủ Ubuntu từ các địa điểm khác
- Chuyển file : Trao đổi file một cách an toàn bằng SCP hoặc SFTP
- Chuyển tiếp cổng : Thiết lập các kết nối từ xa bảo mật
Những gì bạn sẽ học trong bài viết này
- Các khái niệm và cơ chế cơ bản của SSH
- Cách cài đặt máy chủ SSH trên Ubuntu
- Cách cấu hình kết nối SSH và khắc phục lỗi
- Các biện pháp bảo mật tốt nhất cho SSH
2. Các khái niệm cơ bản của SSH
Để sử dụng SSH hiệu quả, việc nắm vững các khái niệm cốt lõi là rất quan trọng. Trong chương này, chúng tôi giải thích cách SSH hoạt động và sự khác nhau giữa các phương pháp xác thực.
Cách SSH hoạt động
SSH là một giao thức thiết lập kết nối bảo mật giữa client và server. Mặc định, nó sử dụng cổng TCP 22 cho việc truyền thông được mã hoá.
Các tính năng chính
- Đăng nhập từ xa : Thực thi lệnh trên máy chủ
- Chuyển file : Gửi dữ liệu an toàn qua SCP hoặc SFTP
- Chuyển tiếp cổng : Kết nối tới các dịch vụ khác thông qua SSH
Các phương pháp xác thực SSH
SSH chủ yếu cung cấp hai phương pháp xác thực:
Xác thực bằng mật khẩu
- Đăng nhập bằng tên người dùng và mật khẩu
- Đơn giản, nhưng dễ bị tấn công brute‑force
Xác thực bằng khóa công khai
- Xác thực bằng cặp khóa công khai và khóa riêng
- An toàn hơn và được khuyến nghị làm mặc định
Ưu điểm của SSH
- Giao tiếp được mã hoá : Bảo vệ dữ liệu truyền tải
- Quản lý từ xa dễ dàng : Truy cập từ bất kỳ nơi nào
- Bảo mật nâng cao : Giúp ngăn chặn truy cập trái phép
3. Cài đặt máy chủ SSH trên Ubuntu
Để sử dụng SSH trên Ubuntu, bạn cần cài đặt gói máy chủ OpenSSH. Chương này giải thích cách cài đặt và cấu hình nó.
Cài đặt OpenSSH Server
Bạn có thể cài đặt OpenSSH server trên Ubuntu bằng các lệnh sau:
sudo apt update
sudo apt install openssh-server
Sau khi cài đặt, kiểm tra xem dịch vụ SSH đã chạy chưa:
sudo systemctl status ssh
Khởi động và quản lý dịch vụ SSH
Để khởi động hoặc dừng dịch vụ SSH một cách thủ công, sử dụng các lệnh sau:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically after reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Cấu hình UFW (Uncomplicated Firewall)
Nếu UFW đang bật, các kết nối SSH có thể bị chặn. Cho phép cổng SSH (22) bằng các lệnh dưới đây:
sudo ufw allow ssh
sudo ufw enable
4. Cấu hình kết nối SSH
Để sử dụng SSH một cách an toàn, việc cấu hình đúng là rất cần thiết. Chương này giải thích cách thiết lập xác thực bằng khóa công khai.
Tạo cặp khóa
Chạy lệnh sau trên máy client để tạo cặp khóa công khai/riêng tư:
ssh-keygen -t rsa -b 4096
Mặc định, khóa riêng được lưu trong ~/.ssh/id_rsa, và khóa công khai được lưu trong ~/.ssh/id_rsa.pub.
Đưa khóa công khai lên máy chủ
Chuyển khóa công khai đã tạo lên máy chủ SSH:
ssh-copy-id username@server-ip-address
Hoặc chuyển thủ công:
scp ~/.ssh/id_rsa.pub username@server-ip-address:~/
Trên máy chủ, thực thi các lệnh sau để đặt khóa công khai vào thư mục đúng:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Chỉnh sửa sshd_config
Mở tệp cấu hình SSH để nâng cao cài đặt bảo mật:
sudo nano /etc/ssh/sshd_config
Kiểm tra và chỉnh sửa các mục cấu hình sau:
# Disable password authentication (use public key only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the SSH port (example: 2222)
Port 2222
Sau khi thực hiện thay đổi, khởi động lại dịch vụ SSH:
sudo systemctl restart ssh
5. Thực hiện Kết nối SSH
Sau khi cấu hình máy chủ SSH trên Ubuntu, bạn có thể kết nối từ máy khách. Chương này giải thích cách sử dụng SSH cơ bản và phương pháp kết nối khi cổng được thay đổi.
Lệnh Kết nối SSH Cơ bản
Sử dụng lệnh sau để kết nối từ máy khách SSH đến máy chủ:
ssh username@server-ip-address
Ví dụ, nếu IP máy chủ là 192.168.1.10 và tên người dùng là ubuntu, gõ:
ssh ubuntu@192.168.1.10
Trong lần kết nối đầu tiên, dấu vân tay của máy chủ sẽ được hiển thị. Nhập yes để chấp nhận và tiếp tục.
Kết nối Sau Khi Thay Đổi Số Cổng
Nếu bạn thay đổi cổng SSH—ví dụ, thành 2222—sử dụng tùy chọn -p:
ssh -p 2222 ubuntu@192.168.1.10
Kết nối với Khóa Riêng
Nếu xác thực khóa công khai được cấu hình, chỉ định khóa riêng bằng tùy chọn -i:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Chạy Lệnh Từ Xa qua SSH
Bạn có thể chạy lệnh trực tiếp trên máy chủ từ xa mà không cần đăng nhập tương tác:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Cách tiếp cận này cho phép tự động hóa hiệu quả và các hoạt động từ xa bằng cách sử dụng script.
Chuyển Tệp với SCP
Bạn có thể chuyển tệp giữa PC cục bộ và máy chủ từ xa bằng SSH.
Cục bộ → Từ xa
scp filename username@server-ip-address:/remote/directory
Ví dụ:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Từ xa → Cục bộ
scp username@server-ip-address:/remote/filename /local/directory
Ví dụ:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Quản lý Tệp với SFTP
Bạn cũng có thể quản lý tệp bằng SFTP:
sftp ubuntu@192.168.1.10
Sau khi kết nối, bạn có thể chạy các lệnh sau:
ls # List files
cd # Change directory
put filename # Upload a local file to the remote server
get filename # Download a remote file to the local machine
exit # Exit the connection
6. Khắc phục Sự cố Kết nối SSH
Việc gặp vấn đề khi kết nối qua SSH không phải là hiếm. Chương này mô tả các vấn đề phổ biến và cách giải quyết chúng.
Các Nguyên nhân Phổ biến của Lỗi Kết nối SSH và Giải pháp
Khi kết nối SSH thất bại, nguyên nhân thường là một trong số các trường hợp sau:
1. Máy chủ SSH Không Đang Chạy
Đầu tiên, xác nhận rằng máy chủ SSH đang chạy đúng cách:
sudo systemctl status ssh
Giải pháp:
- Nếu máy chủ SSH bị dừng, khởi động nó bằng lệnh sau:
sudo systemctl start ssh
- Để kích hoạt SSH tự động khởi động sau khi khởi động lại, chạy:
sudo systemctl enable ssh
2. Tường lửa (UFW) Đang Chặn SSH
Nếu UFW (Uncomplicated Firewall) được kích hoạt, truy cập SSH có thể bị chặn:
Giải pháp:
- Kiểm tra cấu hình UFW hiện tại:
sudo ufw status
- Cho phép truy cập SSH:
sudo ufw allow ssh
(Nếu sử dụng cổng tùy chỉnh, chạy sudo ufw allow <port-number>)
- Khởi động lại UFW:
sudo ufw reload
3. Số Cổng Đã Được Thay Đổi
Nếu máy chủ SSH không sử dụng cổng mặc định 22, bạn phải chỉ định cổng đúng khi kết nối:
Giải pháp:
- Kiểm tra số cổng trên máy chủ:
sudo grep Port /etc/ssh/sshd_config
- Chỉ định cổng đúng trên máy khách:
ssh -p 2222 username@server-ip-address
4. Incorrect SSH Key Permissions
Nếu bạn đang sử dụng xác thực bằng khóa công khai, quyền truy cập không đúng của khóa có thể ngăn kết nối.
Giải pháp:
- Đặt quyền cho khóa riêng:
chmod 600 ~/.ssh/id_rsa
- Đặt quyền cho khóa công khai:
chmod 644 ~/.ssh/authorized_keys
5. Host Key Mismatch
Nếu khóa máy chủ SSH trên máy chủ đã thay đổi, client có thể hiển thị lỗi như: “CẢNH BÁO: NHẬN DẠNG MÁY CHỦ TỪ XA ĐÃ THAY ĐỔI!”
Giải pháp:
- Xóa khóa máy chủ cũ:
ssh-keygen -R <server-ip-address>
- Thử kết nối lại:
ssh username@server-ip-address
6. Checking SSH Logs
Để xác định các thông báo lỗi SSH chi tiết, kiểm tra các tệp nhật ký trên máy chủ:
sudo journalctl -u ssh --no-pager | tail -n 20
Để giám sát nhật ký theo thời gian thực, chạy:
sudo tail -f /var/log/auth.log
7. SSH Connection Timeout Issues
Nếu các kết nối SSH chậm hoặc bị ngắt đột ngột, hãy xem lại các điểm sau:
Giải pháp:
- Enable KeepAlive Thêm các dòng sau vào
~/.ssh/configcủa client:Host * ServerAliveInterval 60
- Adjust timeout settings on the server Thêm các dòng sau vào
/etc/ssh/sshd_configvà khởi động lại dịch vụ:ClientAliveInterval 60 ClientAliveCountMax 3sudo systemctl restart ssh
Summary
Các vấn đề kết nối SSH thường bắt nguồn từ các điểm sau. Trong hầu hết các trường hợp, việc kiểm tra các mục này sẽ giải quyết vấn đề:
✅ Xác nhận dịch vụ SSH đang chạy
✅ Kiểm tra xem tường lửa có chặn kết nối không
✅ Xác nhận đang sử dụng đúng cổng SSH
✅ Đảm bảo quyền của khóa SSH được đặt đúng
✅ Xem xét nhật ký SSH để xác định lỗi chi tiết

7. Enhancing SSH Security
SSH là một công cụ truy cập từ xa mạnh mẽ, nhưng nếu không có các biện pháp bảo mật thích hợp, nó có thể trở thành mục tiêu cho việc truy cập trái phép hoặc các cuộc tấn công brute‑force. Chương này giải thích các cài đặt được khuyến nghị để tăng cường bảo mật SSH.
1. Disable Password Authentication and Use Public Key Authentication
Mặc định, SSH cho phép đăng nhập bằng mật khẩu, điều này làm tăng nguy cơ các cuộc tấn công brute‑force. Kích hoạt xác thực bằng khóa công khai và vô hiệu hóa xác thực bằng mật khẩu để cải thiện bảo mật.
Steps
- Chỉnh sửa
sshd_configsudo nano /etc/ssh/sshd_config
- Chỉnh sửa hoặc thêm các cài đặt sau
PasswordAuthentication no PubkeyAuthentication yes
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
Sau khi áp dụng cấu hình này, SSH sẽ chỉ chấp nhận xác thực bằng khóa công khai. Đảm bảo các khóa SSH của bạn đã được cấu hình đúng trước đó.
2. Change the SSH Port Number
Sử dụng cổng SSH mặc định (22) khiến máy chủ dễ trở thành mục tiêu của kẻ tấn công. Thay đổi số cổng giúp giảm các nỗ lực truy cập trái phép.
Steps
- Mở
sshd_configsudo nano /etc/ssh/sshd_config
- Sửa dòng sau (ví dụ: đổi cổng thành 2222)
Port 2222
- Cho phép cổng mới qua tường lửa
sudo ufw allow 2222/tcp
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
- Kiểm tra kết nối bằng cổng mới
ssh -p 2222 username@server-ip-address
3. Disable Root Login
Mặc định, SSH cho phép đăng nhập root, điều này gây rủi ro bảo mật nghiêm trọng. Khuyến nghị chỉ cho phép truy cập SSH qua các tài khoản người dùng thường và sử dụng sudo khi cần quyền quản trị.
Steps
- Mở
sshd_configsudo nano /etc/ssh/sshd_config
- Chỉnh sửa dòng sau
PermitRootLogin no
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
4. Prevent Brute-Force Attacks with Fail2Ban
Fail2Ban phát hiện các lần đăng nhập trái phép và tự động chặn các địa chỉ IP vượt quá số lần thất bại nhất định.
Installation and Configuration
- Cài đặt Fail2Ban
sudo apt install fail2ban -y
- Sao chép tệp cấu hình mặc định
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Chỉnh sửa
jail.localsudo nano /etc/fail2ban/jail.local
- Sửa đổi phần
[sshd][sshd] enabled = true maxretry = 5 bantime = 600 findtime = 600
maxretry: Số lần đăng nhập thất bại được phépbantime: Thời gian chặn IP (giây)findtime: Khoảng thời gian để đếm các lần thử thất bại (giây)
- Khởi động lại Fail2Ban
sudo systemctl restart fail2ban
- Kiểm tra trạng thái hiện tại của Fail2Ban
sudo fail2ban-client status sshd
Tóm tắt
Để tăng cường bảo mật SSH, áp dụng các biện pháp sau:
✅ Vô hiệu hoá xác thực bằng mật khẩu và sử dụng xác thực bằng khóa công khai
✅ Thay đổi cổng SSH để giảm khả năng bị tấn công
✅ Vô hiệu hoá đăng nhập root để giảm thiểu rủi ro
✅ Sử dụng Fail2Ban để ngăn chặn các cuộc tấn công brute-force
8. Câu hỏi thường gặp (FAQ)
Phần này giải đáp các câu hỏi và vấn đề thường gặp khi cấu hình và sử dụng SSH.
Câu hỏi 1: Tại sao SSH hiển thị “Connection refused”?
Có một số nguyên nhân có thể gây ra việc kết nối SSH bị từ chối.
Các nguyên nhân chính và giải pháp:
- Dịch vụ SSH không chạy
sudo systemctl status ssh
Giải pháp: Khởi động dịch vụ nếu nó đã dừng.
sudo systemctl start ssh
- Tường lửa (UFW) đang chặn SSH
sudo ufw allow ssh sudo ufw enable
- Số cổng SSH đã được thay đổi Nếu SSH sử dụng cổng tùy chỉnh, hãy chỉ định cổng khi kết nối.
ssh -p 2222 username@server-ip-address
Câu hỏi 2: Làm thế nào để thay đổi cổng SSH mặc định?
Cổng 22 là mục tiêu tấn công phổ biến, vì vậy việc thay đổi nó sẽ cải thiện bảo mật.
Các bước:
- Chỉnh sửa tệp cấu hình SSH
sudo nano /etc/ssh/sshd_config
- Sửa đổi chỉ thị
PortPort 2222
- Mở cổng mới trên tường lửa
sudo ufw allow 2222/tcp
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
Sau khi thực hiện các thay đổi, kết nối bằng cổng mới:
ssh -p 2222 username@server-ip-address
Câu hỏi 3: Tôi nên kiểm tra gì nếu xác thực bằng khóa công khai không hoạt động?
Xác minh các mục sau nếu xác thực bằng khóa SSH thất bại:
- Đảm bảo khóa công khai được cài đặt đúng cách
ls -l ~/.ssh/authorized_keys
Đảm bảo tệp authorized_keys tồn tại và chứa khóa đúng.
- Kiểm tra quyền truy cập tệp
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
- Xác minh SSH cho phép xác thực bằng khóa công khai
Đảm bảo các mục sau có trong cấu hình:
sudo nano /etc/ssh/sshd_config
- Khởi động lại dịch vụ SSH
PubkeyAuthentication yes PasswordAuthentication nosudo systemctl restart ssh
Câu hỏi 4: Làm thế nào để cho phép truy cập SSH chỉ từ các địa chỉ IP cụ thể?
Hạn chế truy cập SSH chỉ từ các địa chỉ IP cụ thể sẽ tăng đáng kể mức độ bảo mật.
Phương pháp 1: Chỉnh sửa sshd_config
- Mở tệp cấu hình
sudo nano /etc/ssh/sshd_config
- Thêm mục
AllowUsersAllowUsers username@192.168.1.100
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
Phương pháp 2: Cấu hình tường lửa (UFW)
- Cho phép truy cập từ một IP cụ thể
sudo ufw allow from 192.168.1.100 to any port 22
- Từ chối truy cập từ các IP khác
sudo ufw deny 22
Câu hỏi 5: Làm thế nào để thay đổi thời gian chờ phiên SSH?
Nếu phiên SSH của bạn bị ngắt kết nối khi không hoạt động, hãy chỉnh sửa các cài đặt sau.
Cài đặt phía máy khách
- Thêm các dòng sau vào
~/.ssh/config:Host * ServerAliveInterval 60
Cài đặt phía máy chủ
- Chỉnh sửa
sshd_configsudo nano /etc/ssh/sshd_config
- Thêm hoặc sửa:
ClientAliveInterval 60 ClientAliveCountMax 3
- Khởi động lại dịch vụ SSH
sudo systemctl restart ssh
Tóm tắt
This FAQ covered the most common SSH issues and solutions. When a problem occurs, always review logs and configuration settings to pinpoint the cause.
✅ Cách khắc phục vấn đề “Connection refused”
✅ Cách thay đổi cổng SSH mặc định và kết nối đúng cách
✅ Cách khắc phục sự cố xác thực khóa công khai
✅ Cách hạn chế truy cập SSH cho các địa chỉ IP cụ thể
✅ Cách ngăn chặn thời gian chờ hết hạn phiên SSH
9. Kết luận
Bài viết này đã giải thích cách cấu hình và sử dụng SSH trên Ubuntu, từ các khái niệm cơ bản đến các thực hành bảo mật nâng cao. Hãy tóm tắt các điểm chính.
Những Điểm Chính
1. Cơ Bản Về SSH
- SSH cho phép truy cập từ xa an toàn qua giao tiếp mã hóa.
- An toàn hơn Telnet hoặc FTP.
- Các phương thức xác thực bao gồm xác thực bằng mật khẩu và xác thực khóa công khai .
2. Cài Đặt Máy Chủ SSH
- Cài đặt OpenSSH qua
sudo apt install openssh-server. - Kiểm tra trạng thái dịch vụ bằng
systemctl status ssh. - Cho phép truy cập SSH qua UFW bằng
sudo ufw allow ssh.
3. Cấu Hình Truy Cập SSH
- Kết nối bằng
ssh username@server-ip-address. - Sử dụng xác thực khóa công khai để tăng cường bảo mật.
- Vô hiệu hóa xác thực bằng mật khẩu trong
sshd_confignếu mong muốn.
4. Khắc Phục Sự Cố
- Kiểm tra xem SSH có đang chạy không (
systemctl status ssh). - Chỉ định cổng đúng nếu đã thay đổi (
ssh -p 2222 username@IP). - Xác minh quyền truy cập khóa trong
~/.ssh/authorized_keys.
5. Cải Thiện Bảo Mật
- Vô hiệu hóa xác thực bằng mật khẩu và dựa vào khóa công khai.
- Thay đổi cổng SSH để giảm các cuộc tấn công quét.
- Sử dụng Fail2Ban để chặn các lần đăng nhập thất bại lặp lại.
- Hạn chế truy cập SSH cho các địa chỉ IP cụ thể nếu có thể.
Tài Liệu Học Tập Bổ Sung
Để hiểu sâu hơn về SSH, hãy khám phá các tài nguyên sau:
📚 Tài Liệu Chính Thức
🛠 Công Cụ Liên Quan
- PuTTY để truy cập SSH trên Windows
- Tải PuTTY
- MobaXterm cho các tính năng SSH nâng cao
- Trang Chính Thức MobaXterm
🎥 Video Khuyến Nghị
- Tìm kiếm trên YouTube “Cài đặt SSH Ubuntu” để tìm các hướng dẫn thân thiện với người mới bắt đầu.
作成した動画を友だち、家族、世界中の人たちと共有…
Các Bước Tiếp Theo
Sau khi hiểu cách SSH hoạt động, hãy khám phá các sử dụng nâng cao hơn:
✅ Tự động hóa quản lý máy chủ bằng Ansible qua SSH
- Lý tưởng để quản lý nhiều máy chủ một cách hiệu quả.
✅ Đường hầm SSH và chuyển tiếp cổng
- Sử dụng SSH để bảo mật kết nối máy tính từ xa hoặc tạo đường hầm giống VPN.
✅ Giám sát nhật ký SSH và cải thiện bảo mật
- Sử dụng các công cụ như
fail2banvàlogwatchđể theo dõi hoạt động đáng ngờ.
Lời Kết
Cảm ơn bạn đã đọc hết hướng dẫn này! 🎉
Cấu hình SSH đúng cách trên Ubuntu sẽ nâng cao đáng kể hiệu quả và bảo mật quản lý từ xa.
Khi bạn tiếp tục học tập, hãy khám phá các kỹ thuật nâng cao như đường hầm bảo mật và giám sát chủ động để xây dựng hệ thống mạnh mẽ hơn.
Chúc bạn có trải nghiệm SSH an toàn và hiệu quả! 🖥️🔐



