SSH và SCP: Hai công cụ mọi nhà phát triển thực sự nên hiểu rõ

Table of Contents
Nếu bạn đã từng làm việc với máy chủ, có lẽ bạn đã gõ ssh vào terminal mà không cần suy nghĩ nhiều. Nhưng khi bạn bị khóa tài khoản lúc 2 giờ sáng hoặc việc truyền tệp liên tục thất bại, việc hiểu rõ cơ chế của SSH (Secure Shell) và SCP (Secure Copy Protocol) trở nên vô cùng quý giá.
SSH là gì?
SSH cho phép bạn đăng nhập vào một máy tính từ xa và chạy các lệnh một cách an toàn. Trước SSH, các công cụ như Telnet truyền mọi thứ—bao gồm cả mật khẩu—dưới dạng văn bản thuần túy. SSH đã khắc phục điều này bằng cách mã hóa toàn bộ phiên làm việc.
Cổng 22 và Kết nối
Theo mặc định, SSH kết nối qua cổng 22. Đây là một "cổng nổi tiếng" được dành riêng cho các dịch vụ hệ thống. Mặc dù bạn không thể ẩn mình khỏi những kẻ tấn công có quyết tâm, việc chuyển SSH sang một cổng không chuẩn (như 2222) sẽ giảm đáng kể các nỗ lực tấn công vét cạn tự động.
Để kết nối đến một cổng tùy chỉnh:
ssh -p 2222 user@yourserver.com
Nâng cấp quy trình làm việc SSH của bạn
Ngừng gõ mật khẩu (Sử dụng khóa SSH)
Mật khẩu chậm và không an toàn. Hãy tạo một cặp khóa Ed25519 (nó nhanh hơn và an toàn hơn RSA):
ssh-keygen -t ed25519 -C "your_email@example.com"
Sao chép khóa công khai lên máy chủ của bạn. Từ đó trở đi, bạn đăng nhập an toàn và tức thì.
ssh-copy-id user@yourserver.com
Cấu hình hồ sơ SSH của bạn
Ngừng ghi nhớ địa chỉ IP và cổng. Tạo một tệp cấu hình SSH (~/.ssh/config) để tạo các bí danh rõ ràng cho máy chủ của bạn.
Host myserver
HostName 192.168.1.100
User alice
Port 2222
IdentityFile ~/.ssh/id_ed25519
Giờ đây, việc kết nối đơn giản như gõ:
ssh myserver
Truyền tệp an toàn với SCP
SCP sử dụng SSH bên dưới để truyền tệp giữa các máy. Cú pháp đơn giản là scp source destination.
Sao chép lên máy chủ:
scp myfile.txt myserver:/home/alice/
Sao chép từ máy chủ (lưu ý ./ ở cuối):
scp myserver:/home/alice/myfile.txt ./
Chữ P viết hoa cho cổng SCP
Trong khi SSH sử dụng chữ -p viết thường cho các cổng tùy chỉnh, SCP sử dụng chữ -P viết hoa.
scp -P 2222 myfile.txt user@server:/path/
SCP so với các lựa chọn thay thế
SCP rất tuyệt vời cho việc truyền tệp nhanh chóng, nhưng nó không phải lúc nào cũng là công cụ tốt nhất cho công việc.
rsync: Công cụ tối ưu để đồng bộ hóa thư mục. Nó chỉ truyền các khối delta đã thay đổi, giúp tăng tốc đáng kể cho các thư mục lớn. (ví dụ:rsync -avzP local/ myserver:/remote/)- SFTP: Một hệ thống con mạnh mẽ chạy qua SSH cho phép bạn duyệt, tìm kiếm, đổi tên và tiếp tục các lần truyền tệp bị gián đoạn một cách tương tác.
| Tính năng | SCP | rsync | SFTP |
|---|---|---|---|
| Tiếp tục thư mục | ❌ Không | ✅ Có (--partial) | ✅ Có |
| Nén Delta | ❌ Toàn bộ tệp | ✅ Khác biệt cấp khối | ❌ Toàn bộ tệp |
| Điều hướng tương tác | ❌ Không | ❌ Không | ✅ Có |
| Khả dụng tiêu chuẩn | ✅ Mọi nơi | ⚠️ Cần rsync trên máy từ xa | ✅ Mọi nơi |
SSH Tunneling & Chuyển tiếp cổng
SSH có thể tạo đường hầm cho lưu lượng TCP tùy ý thông qua một đường ống được mã hóa, cho phép bạn truy cập các cơ sở dữ liệu riêng tư hoặc bỏ qua tường lửa một cách an toàn:
1. Chuyển tiếp cổng cục bộ (-L)
Chuyển tiếp một cổng trên máy cục bộ của bạn đến một cơ sở dữ liệu nội bộ từ xa không được công khai:
# Connect local localhost:5432 to private RDS instance 10.0.1.25:5432 via bastion
ssh -L 5432:10.0.1.25:5432 user@bastion.example.com
2. Proxy SOCKS5 động (-D)
Biến máy chủ từ xa của bạn thành một proxy trình duyệt được mã hóa tức thì:
# Start SOCKS5 proxy on local port 1080
ssh -D 1080 -N user@remoteserver.com
Máy chủ Bastion: SSH ProxyJump
Các VPC đám mây hiện đại giữ các cơ sở dữ liệu sản xuất và các nút worker trong các mạng con riêng tư không có địa chỉ IPv4 công khai. Thay vì SSH thủ công vào một bastion và nhảy từ đó, hãy sử dụng ProxyJump (-J) gốc:
# ~/.ssh/config configuration for transparent bastion hopping
Host bastion
HostName bastion.production.internal
User ec2-user
IdentityFile ~/.ssh/bastion_key.pem
Host internal-worker-01
HostName 10.0.2.144
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/prod_nodes.pem
Giờ đây, việc gõ ssh internal-worker-01 sẽ tự động định tuyến và xác thực thông qua bastion một cách liền mạch chỉ trong một bước!
Quyền SSH & Các lỗi thường gặp
SSH thực thi các quyền hệ thống tệp nghiêm ngặt để ngăn chặn người dùng độc hại trên các máy nhiều người thuê đọc khóa riêng:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys
Công cụ tương tác: Cần xác minh quyền tệp Linux dạng bát phân và ký hiệu? Sử dụng Máy tính quyền Chmod Linux miễn phí của chúng tôi để nhanh chóng tính toán chính xác các quyền và giá trị umask.
Các nguyên tắc cơ bản về bảo mật máy chủ quan trọng
Đừng để cửa trước máy chủ của bạn mở cho các bot tấn công vét cạn! Chỉnh sửa /etc/ssh/sshd_config để tăng cường cấu hình của bạn:
- Tắt xác thực mật khẩu: Đặt
PasswordAuthentication no. - Tắt đăng nhập root: Đặt
PermitRootLogin no. - Thực thi các thuật toán mã hóa hiện đại: Hạn chế trao đổi khóa thành
curve25519-sha256. - Truy cập tường lửa: Hạn chế tiếp xúc cổng SSH với
ufw allow from <your_ip> to any port 22. - Cài đặt Fail2Ban: Tự động cấm các địa chỉ IP vượt quá 3 lần bắt tay thất bại liên tiếp.
Các câu hỏi thường gặp
ssh-keygen -R hostname_or_ip.Kết luận
SSH và SCP là nền tảng cơ bản của các hệ thống đám mây và cơ sở hạ tầng DevOps. Bằng cách áp dụng khóa Ed25519, cấu trúc các hồ sơ ~/.ssh/config của bạn, thành thạo ProxyJump và chuyển tiếp cổng, và tăng cường sshd_config, bạn biến quyền truy cập từ xa mong manh thành một quy trình làm việc được mã hóa, chống đạn.
Bạn cũng có thể thích
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles

Bảo mật Ubuntu Server: Danh sách kiểm tra tăng cường bảo mật Linux thực tế
Hướng dẫn tăng cường bảo mật máy chủ Ubuntu trong môi trường sản xuất: thực thi khóa SSH, tường lửa UFW, ngăn chặn xâm nhập Fail2ban, nâng cấp tự động và ghi nhật ký auditd.
Read more
eBPF trong Môi Trường Production: Quan Sát Hệ Thống Linux Với Overhead Cực Thấp, Tracing và Profiling Nhân Hệ Điều Hành
Triển khai quan sát nhân Linux (kernel observability) với overhead gần như bằng không bằng eBPF. Đo độ trễ system call, theo dõi cấp phát bộ nhớ và giám sát socket mạng mà không cần sidecar.
Read more
Triển khai bảo mật Zero-Trust trong Kubernetes: Hướng dẫn sản xuất hoàn chỉnh
Hướng dẫn thực tế để loại bỏ bảo mật chu vi mạng phẳng trong Kubernetes: NetworkPolicies mặc định từ chối, định danh workload SPIFFE/SPIRE và mTLS nghiêm ngặt.
Read more