•7 min read

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

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

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á.

Audio Briefing
0:00 / 0:00
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
Advertisement

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ăngSCPrsyncSFTP
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

Advertisement

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:

  1. Tắt xác thực mật khẩu: Đặt PasswordAuthentication no.
  2. Tắt đăng nhập root: Đặt PermitRootLogin no.
  3. 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.
  4. 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.
  5. 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

Ed25519 sử dụng mật mã đường cong xoắn Edwards. Nó tạo ra các khóa nhỏ gọn 68 ký tự thực hiện bắt tay chữ ký nhanh hơn đáng kể so với khóa RSA 4096-bit, đồng thời cung cấp khả năng chống lại các cuộc tấn công thời gian kênh phụ vượt trội.
Điều này xảy ra khi dấu vân tay khóa công khai của máy chủ thay đổi (thường gặp sau khi cài đặt lại máy chủ). Xác minh địa chỉ IP từ xa, sau đó xóa mục máy chủ cũ bằng ssh-keygen -R hostname_or_ip.
SCP truyền toàn bộ tệp bằng cách sử dụng các đường ống SSH tiêu chuẩn. rsync tính toán tổng kiểm tra luân phiên trên cả hai điểm cuối để chỉ truyền các khối đã thay đổi và hỗ trợ tiếp tục các lần truyền bị gián đoạn cũng như đồng bộ hóa quyền tệp.

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

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement