Cách Gửi File Bằng SFTP Trong SSH: Hướng Dẫn Toàn Diện Cho Quản Trị Viên

Tổng quan về gửi file bằng SFTP trong SSH

SFTP (Secure File Transfer Protocol) là một phần mở rộng của giao thức SSH (Secure Shell) giúp truyền file an toàn qua mạng. Khác với FTP truyền thống, SFTP mã hóa cả thông tin xác thực và dữ liệu truyền tải, mang lại sự bảo mật cao hơn cho quản trị viên hệ thống. Tính năng này đặc biệt quan trọng khi cần di chuyển dữ liệu nhạy cảm giữa các máy chủ từ xa hoặc thực hiện các tác vụ backup tự động.

Trong bài viết này, chúng ta sẽ khám phá chi tiết cách sử dụng SFTP thông qua SSH để truyền file an toàn, các tùy chọn nâng cao và cách khắc phục các vấn đề thường gặp khi làm việc với SFTP.

Cách kết nối và truyền file với SFTP

Thiết lập kết nối SFTP

Để bắt đầu phiên SFTP, bạn cần sử dụng lệnh sau từ terminal hoặc command prompt:

sftp username@remote_host
# Hoặc chỉ định cổng khác
sftp -P 2222 username@remote_host

Sau khi nhập mật khẩu, bạn sẽ thấy dấu nhắc sftp> cho biết đã kết nối thành công. Nếu bạn đã cấu hình xác thực khóa SSH, hệ thống sẽ sử dụng khóa thay vì yêu cầu mật khẩu.

Các lệnh SFTP cơ bản để truyền file

Sau khi kết nối, bạn có thể sử dụng các lệnh sau để di chuyển và truyền file:

# Liệt kê file/thư mục trên máy chủ từ xa
ls
# Thay đổi thư mục trên máy chủ từ xa
cd /path/to/remote/directory
# Kiểm tra thư mục hiện tại trên máy chủ từ xa
pwd

# Tải file từ máy chủ từ xa về máy local
get remote_file [local_file]
# Tải nhiều file cùng lúc
mget *.txt

# Tải thư mục và nội dung bên trong
get -r remote_directory

# Gửi file từ máy local lên máy chủ từ xa
put local_file [remote_file]
# Gửi nhiều file cùng lúc
mput *.log

# Gửi thư mục và nội dung bên trong
put -r local_directory

Điều hướng giữa thư mục local và remote

Khi làm việc với SFTP, bạn cần phân biệt các lệnh trên hệ thống local và remote:

# Lệnh trên máy local
lls          # Liệt kê file local
lcd /path    # Thay đổi thư mục local
lpwd         # Hiển thị thư mục local hiện tại

# Lệnh trên máy remote
ls           # Liệt kê file remote
cd /path     # Thay đổi thư mục remote
pwd          # Hiển thị thư mục remote hiện tại

Tùy chọn nâng cao khi sử dụng SFTP

Tự động hóa truyền file với script

Quản trị viên thường cần tự động hóa việc truyền file. Bạn có thể tạo file script chứa các lệnh SFTP và thực thi như sau:

# Tạo file script.txt với nội dung:
cd /remote/path
put backup.tar.gz
get logs.txt
bye

# Thực thi script
sftp -b script.txt username@remote_host

Giới hạn băng thông khi truyền file lớn

Khi truyền file lớn, giới hạn băng thông có thể giúp tránh ảnh hưởng đến các dịch vụ khác:

# Giới hạn tốc độ truyền tới 1MB/giây
sftp -l 1024000 username@remote_host

Cấu hình resumable transfers

Một trong những tính năng quan trọng của SFTP là khả năng tiếp tục truyền file bị gián đoạn:

# Tiếp tục tải file đã bị gián đoạn
get -a large_file.iso
# Tiếp tục gửi file đã bị gián đoạn
put -a large_file.iso

Bảo mật khi sử dụng SFTP

Tăng cường bảo mật cho phiên SFTP

Để tăng cường bảo mật, bạn nên thực hiện một số biện pháp sau:

# Sử dụng khóa SSH thay vì mật khẩu
ssh-keygen -t rsa -b 4096
ssh-copy-id username@remote_host

# Chỉ định file cấu hình SSH riêng
sftp -F /path/to/custom_ssh_config username@remote_host

Trong file cấu hình SSH, bạn có thể thêm các tùy chọn bảo mật như chỉ sử dụng phiên bản giao thức mới nhất, vô hiệu hóa xác thực mật khẩu, và hạn chế các thuật toán mã hóa.

Giới hạn người dùng trong SFTP chroot jail

Để hạn chế người dùng chỉ truy cập vào thư mục cụ thể, bạn có thể cấu hình SFTP chroot jail trong file /etc/ssh/sshd_config:

# Thêm vào file /etc/ssh/sshd_config
Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Khắc phục sự cố khi sử dụng SFTP

Xử lý lỗi kết nối và truyền file

Khi gặp vấn đề với SFTP, sử dụng chế độ verbose để có thêm thông tin chi tiết:

# Chạy với chế độ verbose
sftp -v username@remote_host

# Để debug chi tiết hơn
sftp -vvv username@remote_host

Các lỗi thường gặp bao gồm vấn đề kết nối, quyền file không đúng, hoặc không đủ dung lượng ổ đĩa. Kiểm tra logs hệ thống (/var/log/auth.log hoặc /var/log/secure) để có thêm thông tin.

Các công cụ thay thế cho SFTP command line

Nếu bạn không thích giao diện dòng lệnh, có nhiều ứng dụng đồ họa hỗ trợ SFTP:

    - FileZilla: Giao diện đồ họa đa nền tảng, hỗ trợ SFTP

    - WinSCP: Ứng dụng Windows phổ biến cho SFTP

    - Cyberduck: Ứng dụng cho macOS và Windows

    - Nautilus/Dolphin: File manager trên Linux có tích hợp SFTP

Kết luận

SFTP qua SSH cung cấp phương pháp an toàn và hiệu quả để truyền file giữa các hệ thống. Đối với quản trị viên hệ thống, việc thành thạo công cụ này giúp đơn giản hóa nhiều tác vụ quản trị từ xa, từ sao lưu dữ liệu đến triển khai ứng dụng. Bằng cách kết hợp các tùy chọn nâng cao và thực hành bảo mật tốt, SFTP trở thành một phần không thể thiếu trong bộ công cụ của mọi quản trị viên Linux và UNIX.

Nếu bạn đang quản lý nhiều máy chủ, việc tự động hóa các tác vụ SFTP thông qua script và công cụ CI/CD có thể tiết kiệm thời gian đáng kể và giảm thiểu lỗi do con người. Hãy khám phá thêm về các tính năng nâng cao của SFTP để tối ưu hóa quy trình làm việc của bạn.