目次
- 1 1. Giới thiệu
- 2 2. Cấu hình cơ bản SSH
- 3 Tổng kết
- 4 3. Tăng cường bảo mật cho SSH
- 5 Tổng kết
- 6 4. Cấu hình nâng cao cho SSH
- 7 Tổng kết
- 8 5. Xử lý sự cố SSH (Troubleshooting)
- 9 Tổng kết
- 10 6. Câu hỏi thường gặp (FAQ)
- 10.1 6.1 Làm gì khi SSH thường xuyên bị timeout?
- 10.2 6.2 Quên mật khẩu, không thể SSH?
- 10.3 6.3 Làm sao dùng SSH trên Windows?
- 10.4 6.4 Thiết lập SSH server trên Ubuntu WSL (Windows Subsystem for Linux)?
- 10.5 6.5 Sau khi thiết lập SSH nên làm thêm gì để bảo mật?
- 10.6 6.6 Làm sao xem log SSH thời gian thực trên Ubuntu?
- 10.7 6.7 Mẹo sử dụng SSH hiệu quả?
- 11 Tổng kết
- 12 Bài viết liên quan
1. Giới thiệu
Việc cấu hình SSH trên Ubuntu là vô cùng quan trọng để quản lý máy chủ từ xa. SSH (Secure Shell) là một giao thức cung cấp truyền thông mã hóa an toàn, được sử dụng rộng rãi để truy cập máy chủ từ xa, thực thi lệnh, hoặc truyền tập tin. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách cấu hình SSH trên Ubuntu, từ các bước cài đặt cơ bản cho đến các biện pháp bảo mật nâng cao.1.1 Lý do cấu hình SSH trên Ubuntu
1.1.1 SSH là gì?
SSH (Secure Shell) là một giao thức giúp truyền thông an toàn qua mạng. Thông thường, SSH được sử dụng để đăng nhập máy chủ từ xa, truyền tập tin, và chuyển tiếp cổng (port forwarding). Khác với Telnet hay FTP truyền thống, SSH mã hóa toàn bộ dữ liệu, đảm bảo tính bảo mật cao.1.1.2 Trường hợp cần sử dụng SSH trên Ubuntu
Các tình huống quản lý Ubuntu từ xa phổ biến như sau:- Quản lý máy chủ đám mây: Với AWS, GCP, Vultr và các dịch vụ đám mây, SSH thường dùng để truy cập và điều khiển máy chủ từ xa.
- Điều khiển từ xa qua mạng LAN: Truy cập máy chủ nội bộ hoặc máy trạm phát triển qua SSH để thực hiện công việc từ xa.
- Quản lý thiết bị IoT: Điều khiển các thiết bị nhúng như Raspberry Pi từ xa thông qua SSH.
2. Cấu hình cơ bản SSH
Để sử dụng SSH trên Ubuntu, cần cài đặt SSH server (OpenSSH) và cấu hình phù hợp. Phần này sẽ hướng dẫn cách cài đặt, cấu hình cơ bản, thiết lập firewall, và cách kết nối SSH.2.1 Cài đặt và khởi động OpenSSH
2.1.1 OpenSSH là gì?
OpenSSH (Open Secure Shell) là phần mềm mã nguồn mở triển khai giao thức SSH. Nó hỗ trợ kết nối từ xa an toàn, truyền file (SCP/SFTP), và chuyển tiếp cổng.2.1.2 Cài đặt OpenSSH
Trên Ubuntu, SSH server không được cài sẵn, hãy cài bằng lệnh sau:sudo apt update && sudo apt install -y openssh-serverLệnh này sẽ cập nhật danh sách gói và cài đặt OpenSSH server mới nhất.2.1.3 Khởi động và bật tự động SSH server
Sau khi cài đặt, hãy khởi động và cho phép SSH chạy cùng hệ thống:sudo systemctl enable --now sshTùy chọn enable sẽ kích hoạt SSH mỗi khi khởi động máy.2.1.4 Kiểm tra trạng thái hoạt động của SSH
Để kiểm tra SSH server đã chạy hay chưa, dùng lệnh:systemctl status sshNếu thấy kết quả như dưới đây, SSH server đã hoạt động bình thường:● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min agoNếu trạng thái là inactive (dead) hoặc failed, khởi động lại bằng:sudo systemctl start ssh2.2 Thiết lập tường lửa (UFW)
Trên Ubuntu, có thể dùngufw (Uncomplicated Firewall) để cấu hình firewall một cách dễ dàng. Hãy mở cổng cho SSH:2.2.1 Kiểm tra trạng thái UFW
Kiểm tra trạng thái firewall hiện tại:sudo ufw statusVí dụ (UFW chưa bật)Status: inactiveVí dụ (UFW đã bật)Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere2.2.2 Mở cổng cho SSH
Để cho phép truy cập SSH qua cổng mặc định22, chạy:sudo ufw allow sshHoặc chỉ định cổng rõ ràng:sudo ufw allow 22/tcp2.2.3 Bật UFW
Nếu UFW chưa bật, dùng lệnh sau để kích hoạt:sudo ufw enableHãy chắc chắn rằng đã mở cổng SSH trước khi bật UFW để tránh bị khóa ngoài.2.2.4 Kiểm tra lại thiết lập
Kiểm tra chi tiết trạng thái firewall:sudo ufw status verboseVí dụ kết quảStatus: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)Nếu thấy như trên, SSH đã được cho phép.2.3 Cách kết nối cơ bản qua SSH
Sau khi SSH server đã chạy, hãy thử kết nối từ máy tính client.2.3.1 Kết nối từ Linux/macOS
Trên Linux/macOS, mở Terminal và dùng lệnh:ssh tên_người_dùng@địa_chỉ_IP_máy_chủVí dụ:ssh user@192.168.1.100Lần đầu kết nối có thể thấy cảnh báo:The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?Nhập yes để tiếp tục kết nối.2.3.2 Kết nối từ Windows
Trên Windows, bạn có thể dùng PowerShell hoặc PuTTY. Sử dụng PowerShell Từ Windows 10 trở đi, PowerShell đã có sẵn SSH client. Chạy lệnh:ssh tên_người_dùng@địa_chỉ_IP_máy_chủSử dụng PuTTY- Tải và cài đặt PuTTY từ trang chủ
- Mở PuTTY, nhập địa chỉ IP máy chủ vào
Host Name (or IP address) - Chọn
Connection typelàSSH, nhấnOpen - Nhập tên người dùng và mật khẩu
Tổng kết
Ở phần này, bạn đã nắm được các bước cơ bản để cấu hình SSH trên Ubuntu:- Cài đặt và khởi động OpenSSH
- Cấu hình UFW để cho phép kết nối SSH
- Cách kết nối SSH từ Linux/macOS và Windows
3. Tăng cường bảo mật cho SSH
SSH là công cụ mạnh mẽ cho kết nối từ xa, nhưng nếu cấu hình mặc định, hệ thống sẽ dễ bị tấn công. Hacker thường sử dụng brute-force hoặc quét cổng để nhắm vào SSH. Do đó, cần thực hiện các biện pháp bảo mật sau.3.1 Cấm đăng nhập bằng tài khoản root
Mặc định, Ubuntu có thể cho phép đăng nhập bằng root, điều này rất nguy hiểm vì root có toàn quyền hệ thống. Nên vô hiệu hóa đăng nhập root và chỉ sử dụng user thông thường để tăng bảo mật.3.1.1 Các bước thực hiện
- Chỉnh sửa file cấu hình SSH:
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config- Tìm dòng
PermitRootLoginvà chuyển thànhPermitRootLogin no
PermitRootLogin no- Lưu file và khởi động lại dịch vụ SSH
sudo systemctl restart ssh- Kiểm tra lại thiết lập đã áp dụng hay chưa
sudo grep PermitRootLogin /etc/ssh/sshd_configNếu trả về PermitRootLogin no là OK.3.2 Vô hiệu hóa đăng nhập mật khẩu, bật xác thực khóa công khai
Nên dùng xác thực bằng SSH key thay vì mật khẩu để tránh bị tấn công brute-force. Hệ thống sẽ sử dụng cặp khóa riêng–khóa công khai, không cần nhập mật khẩu khi đăng nhập.3.2.1 Tạo khóa SSH
Tạo SSH key trên máy tính cá nhân:ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsaSau khi hoàn thành sẽ có 2 file:- Khóa riêng (
id_rsa) – Chỉ lưu trên máy cá nhân, KHÔNG chia sẻ! - Khóa công khai (
id_rsa.pub) – Đăng ký lên server Ubuntu
3.2.2 Chuyển khóa công khai lên server
ssh-copy-id tên_người_dùng@địa_chỉ_IP_máy_chủ3.2.3 Tắt xác thực mật khẩu
Chỉnh sửa file cấu hình:sudo nano /etc/ssh/sshd_configTìm và sửa thành:PasswordAuthentication noSau đó khởi động lại SSH:sudo systemctl restart ssh3.3 Chỉ cho phép user cụ thể truy cập SSH
Có thể giới hạn chỉ một số tài khoản nhất định được phép SSH vào server.3.3.1 Cách thiết lập
- Mở file
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config- Thêm dòng:
AllowUsers user1 user2- Khởi động lại SSH
sudo systemctl restart ssh3.4 Đổi cổng SSH
Cổng mặc định 22 rất dễ bị scan, nên đổi sang cổng khác để giảm nguy cơ bị tấn công tự động.3.4.1 Các bước đổi cổng
- Mở file cấu hình SSH
sudo nano /etc/ssh/sshd_config- Tìm dòng
Port 22và sửa thành ví dụPort 2200
Port 2200- Khởi động lại SSH
sudo systemctl restart ssh3.4.2 Cập nhật firewall cho cổng mới
sudo ufw allow 2200/tcpKiểm tra trạng thái firewall:sudo ufw status3.5 Dùng Fail2Ban để chặn tấn công brute-force
Fail2Ban giúp phát hiện nhiều lần đăng nhập thất bại và tự động block IP đó tạm thời.3.5.1 Cài đặt Fail2Ban
sudo apt install fail2ban -y3.5.2 Tạo file cấu hình
Copy file cấu hình mặc định:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localSau đó mở và chỉnh sửa:sudo nano /etc/fail2ban/jail.localThay đổi các dòng:[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 36003.5.3 Khởi động lại Fail2Ban
sudo systemctl restart fail2ban3.5.4 Kiểm tra danh sách IP bị block
sudo fail2ban-client status sshdTổng kết
Trong phần này, bạn đã biết cách nâng cao bảo mật SSH:- Cấm đăng nhập root
- Tắt xác thực mật khẩu, bật xác thực SSH key
- Chỉ cho phép user được chỉ định
- Đổi cổng SSH
- Dùng Fail2Ban để chặn IP tấn công

4. Cấu hình nâng cao cho SSH
Sau khi đã hoàn tất cấu hình cơ bản và tăng cường bảo mật, bạn có thể áp dụng các thiết lập nâng cao để tận dụng tối đa SSH trên Ubuntu. Phần này sẽ hướng dẫn về quản lýssh.socket (Ubuntu 22.10 trở lên), SSH Tunnel (port forwarding), lắng nghe nhiều cổng cùng lúc, giới hạn truy cập theo IP, v.v.4.1 Sử dụng ssh.socket trên Ubuntu 22.10 trở lên
Từ Ubuntu 22.10, SSH có thể được quản lý qua ssh.socket thay vì ssh.service. Khi này, SSH sẽ chỉ khởi động khi có yêu cầu kết nối, giúp tiết kiệm tài nguyên.4.1.1 Kiểm tra trạng thái ssh.socket
sudo systemctl status ssh.socketVí dụ (socket đang bật):● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC4.1.2 Bật hoặc tắt ssh.socket
Để bật:sudo systemctl enable --now ssh.socketNếu muốn quay về kiểu truyền thống, tắt socket và bật service:sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service4.2 SSH Tunnel (Port Forwarding)
SSH Tunnel giúp truyền dữ liệu an toàn giữa máy tính và server qua kênh mã hóa. Có 3 dạng port forwarding phổ biến:4.2.1 Port forwarding cục bộ (Local forwarding)
Dùng để truy cập các dịch vụ nội bộ từ xa một cách an toàn. Ví dụ: Kết nối MySQL server (cổng 3306) từ xassh -L 3306:localhost:3306 tên_người_dùng@địa_chỉ_IP_máy_chủ4.2.2 Port forwarding ngược (Reverse forwarding)
Dùng để truy cập dịch vụ nội bộ từ bên ngoài qua SSH. Ví dụ: Xuất bản Web server nội bộ (cổng 80) ra cổng 8080 của server từ xassh -R 8080:localhost:80 tên_người_dùng@địa_chỉ_IP_máy_chủ4.2.3 Port forwarding động (Dynamic forwarding)
Thiết lập SOCKS proxy để duyệt web ẩn danh hoặc vượt tường lửa.ssh -D 1080 tên_người_dùng@địa_chỉ_IP_máy_chủ4.3 Lắng nghe SSH trên nhiều cổng
Mặc định SSH chỉ lắng nghe cổng 22, nhưng bạn có thể mở thêm cổng khác cho các mục đích đặc biệt.4.3.1 Các bước thiết lập
- Mở file cấu hình
/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config- Thêm nhiều dòng
Port(ví dụ):
Port 22
Port 2200- Khởi động lại SSH
sudo systemctl restart ssh- Mở cổng mới trên UFW
sudo ufw allow 2200/tcp4.4 Giới hạn SSH chỉ cho IP nhất định
Tăng bảo mật bằng cách chỉ cho phép truy cập SSH từ IP cụ thể.4.4.1 Chỉnh /etc/hosts.allow
sudo nano /etc/hosts.allowThêm dòng (thay 192.168.1.100 bằng IP của bạn):sshd: 192.168.1.1004.4.2 Chỉnh /etc/hosts.deny
Chặn tất cả các IP còn lại:sudo nano /etc/hosts.denysshd: ALLChỉ IP đã liệt kê trong hosts.allow mới được truy cập SSH.Tổng kết
Phần này bạn đã học cách cấu hình nâng cao SSH trên Ubuntu:- Quản lý
ssh.sockettrên Ubuntu mới - Sử dụng SSH Tunnel để truyền dữ liệu an toàn
- Lắng nghe nhiều cổng SSH
- Giới hạn truy cập theo IP
5. Xử lý sự cố SSH (Troubleshooting)
Ngay cả khi đã cấu hình đúng, đôi khi bạn vẫn gặp sự cố không thể kết nối SSH. Phần này sẽ hướng dẫn cách nhận diện và xử lý các lỗi thường gặp nhất.5.1 Không thể kết nối SSH
Nếu gặp lỗiConnection refused hoặc timeout, hãy kiểm tra các nguyên nhân dưới đây.5.1.1 Dịch vụ SSH chưa chạy
Kiểm tra trạng thái SSH:sudo systemctl status sshCách khắc phục:- Nếu là
inactive (dead)hoặcfailed, khởi động lại dịch vụ:
sudo systemctl restart ssh- Bật chế độ khởi động cùng hệ thống:
sudo systemctl enable ssh5.1.2 Cổng chưa mở hoặc cổng bị đổi
Nếu đã đổi cổng, cần chỉ định cổng khi kết nối:ssh -p 2200 tên_người_dùng@địa_chỉ_IP_máy_chủKiểm tra cổng SSH đang mở:sudo netstat -tulnp | grep sshHoặc:ss -tulnp | grep ssh5.1.3 Kiểm tra firewall (UFW)
sudo ufw statusNếu SSH chưa được mở, chạy:sudo ufw allow 22/tcpNếu dùng cổng khác:sudo ufw allow 2200/tcp5.2 Lỗi xác thực (Authentication)
5.2.1 Sai tên đăng nhập hoặc mật khẩu
Kiểm tra lại tên user khi đăng nhập:ssh tên_người_dùng@địa_chỉ_IP_máy_chủ5.2.2 Khóa công khai chưa đúng
Kiểm tra file~/.ssh/authorized_keys trên server:cat ~/.ssh/authorized_keysSo khớp nội dung với ~/.ssh/id_rsa.pub trên máy cá nhân.5.2.3 Sai quyền thư mục .ssh
Quyền file và thư mục SSH phải chặt chẽ:chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysVà thư mục home của user:chmod 755 /home/tên_người_dùng5.3 Kết nối SSH chập chờn, tự động ngắt
Nguyên nhân thường do cấu hình timeout.5.3.1 Chỉnh ClientAliveInterval trên server
Thêm/đổi trong /etc/ssh/sshd_config:ClientAliveInterval 60
ClientAliveCountMax 3Khởi động lại SSH:sudo systemctl restart ssh5.3.2 Chỉnh trên client
Thêm vào~/.ssh/config:Host *
ServerAliveInterval 60
ServerAliveCountMax 35.4 Kiểm tra log SSH
5.4.1 Xem log thời gian thực
sudo journalctl -u ssh -f5.4.2 Xem log lịch sử
sudo cat /var/log/auth.log | grep sshTìm lỗi xác thực:sudo grep "Failed password" /var/log/auth.logTổng kết
Phần này bạn đã biết cách xử lý các lỗi SSH thường gặp:- Kiểm tra dịch vụ SSH đang chạy
- Kiểm tra cổng và firewall
- Kiểm tra xác thực, SSH key và quyền file
- Khắc phục lỗi timeout, log lỗi
6. Câu hỏi thường gặp (FAQ)
Tổng hợp những câu hỏi và giải đáp phổ biến nhất liên quan đến cấu hình và sử dụng SSH trên Ubuntu. Giúp bạn sử dụng SSH tiện lợi và an toàn hơn.6.1 Làm gì khi SSH thường xuyên bị timeout?
Nếu SSH tự động ngắt sau một thời gian, hãy thử điều chỉnh các thiết lập sau.6.1.1 Thiết lập trên server
Mở/etc/ssh/sshd_config và thêm:ClientAliveInterval 60
ClientAliveCountMax 3Khởi động lại SSH:sudo systemctl restart ssh6.1.2 Thiết lập trên máy client
Thêm vào~/.ssh/config:Host *
ServerAliveInterval 60
ServerAliveCountMax 36.2 Quên mật khẩu, không thể SSH?
6.2.1 Nếu có thể truy cập vật lý server
- Khởi động server ở chế độ single user (chọn
recovery modetừ GRUB) - Đổi mật khẩu bằng lệnh:
passwd tên_người_dùng- Khởi động lại máy
6.2.2 Nếu không thể truy cập vật lý (VPS, cloud)
- Sử dụng tính năng console của nhà cung cấp VPS để truy cập
- Sử dụng xác thực bằng SSH key thay cho mật khẩu
6.3 Làm sao dùng SSH trên Windows?
6.3.1 Sử dụng PowerShell
Từ Windows 10 trở đi, PowerShell đã có SSH client. Kết nối bằng:ssh tên_người_dùng@địa_chỉ_IP_máy_chủ6.3.2 Sử dụng PuTTY
- Tải PuTTY và cài đặt
- Nhập địa chỉ IP máy chủ vào
Host Name (or IP address) - Chọn
Connection typelàSSH, nhấnOpen - Đăng nhập với tên người dùng và mật khẩu
6.4 Thiết lập SSH server trên Ubuntu WSL (Windows Subsystem for Linux)?
Thực hiện các bước sau trên Ubuntu WSL:6.4.1 Cài đặt SSH server
sudo apt update && sudo apt install openssh-server6.4.2 Chỉnh cấu hình
Trong/etc/ssh/sshd_config bật dòng:PasswordAuthentication yesKhởi động SSH (WSL không dùng systemd mặc định):sudo service ssh start6.5 Sau khi thiết lập SSH nên làm thêm gì để bảo mật?
6.5.1 Cài Fail2Ban
sudo apt install fail2ban -yChỉnh /etc/fail2ban/jail.local để bảo vệ SSH:[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600Khởi động lại Fail2Ban:sudo systemctl restart fail2ban6.5.2 Đổi cổng SSH
Sửa/etc/ssh/sshd_config:Port 2200Mở cổng mới với UFW:sudo ufw allow 2200/tcp6.6 Làm sao xem log SSH thời gian thực trên Ubuntu?
Theo dõi log SSH trực tiếp:sudo journalctl -u ssh -fXem log cũ:sudo cat /var/log/auth.log | grep ssh6.7 Mẹo sử dụng SSH hiệu quả?
6.7.1 Đơn giản hóa đăng nhập với .ssh/config
Lưu cấu hình vào ~/.ssh/config:Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsaSau đó chỉ cần:ssh myserver6.7.2 Dùng ssh-agent để quản lý khóa
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsaTổng kết
Phần này tổng hợp các câu hỏi thường gặp về SSH trên Ubuntu:- Xử lý lỗi timeout
- Khôi phục khi quên mật khẩu
- Cách dùng SSH trên Windows và WSL
- Các biện pháp bảo mật bổ sung
- Cách kiểm tra log
- Mẹo sử dụng SSH hiệu quả hơn
Bài viết liên quan
Bài
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[…]




![Cách Kiểm Tra Phiên Bản CUDA và cuDNN Trên Ubuntu [Hướng Dẫn Mới Nhất 2025]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/03/7ad0e7fe124605dc3cd746565dc1d108-375x214.webp)