1. Truyền tệp bằng lệnh rz/sz
1.1 Cài đặt gói phần mềm lrzsz
sudo apt-get install lrzsz
Nếu máy chủ không thể truy cập internet, cần thiết lập theo hướng dẫn cấu hình tương ứng.
1.2 Lệnh upload tệp - rz
Chữ 'r' trong rz là viết tắt của received (nhận), có nghĩa là máy chủ nhận tệp từ máy khách, tức là tải tệp từ máy cục bộ lên máy chủ.
Gõ lệnh rz rồi nhấn Enter, hộp thoại chọn tệp sẽ xuất hiện, bạn có thể chọn nhiều tệp cùng lúc.
Sau khi xác nhận, quá trình tải tệp sẽ bắt đầu, đường dẫn nhận tệp là đường dẫn hiện tại nơi thực thi lệnh rz.
$ rz
Waiting for file transfer...
Initiating Zmodem protocol...
Press Ctrl+C to abort
Lưu ý: Khi tải tệp lên, nếu thư mục đích trên máy chủ Linux đã tồn tại tệp trùng tên, hệ thống sẽ bỏ qua quá trình tải:
$ rz
Waiting for file transfer...
Initiating Zmodem protocol...
Press Ctrl+C to abort
Processing logstash-7.12.0.tar.gz...
File logstash-7.12.0.tar.gz already exists, skipping
Mở rộng: Sử dụng rz có thể gặp hai vấn đề: ngắt tải giữa chừng, tệp sau tải có thay đổi (md5 khác nhau).
Giải pháp: Dùng rz -be khi tải tệp, đồng thời không chọn ô "Upload files as ASCII" trong hộp thoại.
- -b: Tải/tải xuống ở chế độ nhị phân, không diễn giải ký tự là ASCII
- -e: Bắt buộc escape tất cả ký tự điều khiển như Ctrl+x, DEL...
1.3 Lệnh tải tệp - sz
Chữ 's' trong sz là viết tắt của send (gửi), có nghĩa là máy chủ gửi tệp cho máy khách, tức là tải tệp từ máy chủ về máy cục bộ.
Gõ lệnh sz danh_sach_tep rồi nhấn Enter, tệp trên máy chủ sẽ được tải về thư mục cấu hình trong SecureCRT:
$ cd /var/data/logs
$ sz application.log
(1) Các cách dùng khác của sz:
sz tep_mot # Tải một tệp
sz tep_mot tep_hai # Tải nhiều tệp
sz thu_muc/* # Tải tất cả tệp trong thư mục, không bao gồm thư mục con
(2) Thay đổi thư mục tải lên/tải về mặc định của SecureCRT:
Chọn thanh menu [Options] → [Session Options] → [X/Y/Zmodem], sau đó chỉnh sửa đường dẫn Upload/Download.
2. Truyền tệp bằng sftp
Để đảm bảo an toàn dữ liệu và dịch vụ, nhiều máy chủ Linux trong môi trường sản xuất không thể sử dụng mạng bên ngoài. Trong trường hợp chỉ có kết nối SSH, việc truyền tệp trở nên bất tiện.
Nếu máy chủ Linux chưa cài đặt phần mềm lrzsz và cũng không thể cài đặt tại chỗ, có thể xem xét sử dụng sftp để hoàn thành các thao tác liên quan.
2.1 Giới thiệu về SFTP
SFTP là viết tắt của Secure File Transfer Protocol (Giao thức truyền tệp an toàn), có thể cung cấp phương pháp mã hóa mạng an toàn cho việc truyền tệp.
Không cần cài đặt hoặc cấu hình riêng sftp - máy chủ hỗ trợ kết nối SSH cũng đồng nghĩa với việc đã bật SFTP theo mặc định.
SFTP là một phần của SSH: Trong gói phần mềm SSH đã chứa sẵn subsystem truyền tệp an toàn SFTP.
Bản thân SFTP không có tiến trình nền riêng biệt, nó phải sử dụng tiến trình nền sshd (mặc định cổng 22) để hoàn thành các thao tác kết nối và phản hồi tương ứng.
Vì vậy, về mặt nào đó, SFTP không giống một chương trình máy chủ mà giống một chương trình khách hơn.
2.2 Sự khác biệt giữa SFTP và FTP
① FTP là giao thức truyền tệp phù hợp cho chia sẻ dữ liệu, bao gồm một máy chủ FTP và nhiều máy khách FTP. Máy khách FTP tải tài nguyên từ máy chủ thông qua giao thức FTP.
② Giao thức SFTP dựa trên FTP nhưng áp dụng kỹ thuật mã hóa/giải mã cho dữ liệu, giúp truyền dữ liệu an toàn hơn.
③ Hiệu suất truyền của SFTP thấp hơn nhiều so với FTP.
2.3 Chuẩn bị trước khi dùng SFTP
Trên hệ điều hành Windows, có thể dùng các phần mềm như Core FTP, FileZilla, WinSCP, Xftp để kết nối SFTP thực hiện tải lên/tải về tệp, tạo/xóa thư mục...
Ở đây tập trung thảo luận thao tác trên hệ điều hành Linux.
(1) Môi trường phần mềm:
Có thể dùng bất kỳ công cụ terminal nào như Terminal trên MacOS, iTerm (demo sử dụng ở đây), hoặc SecureCRT.
(2) Thiết lập kết nối sftp:
Thực hiện trên terminal, nếu mở sftp trên SecureCRT: chọn menu [File] → [Connect SFTP Session].
# Kết nối qua cổng SSH mặc định (22):
# sftp ten_dang_nhap@ip_may_chu(hoac_ten_mien), nếu kết nối tài khoản root có thể bỏ qua "root@"
sftp root@192.168.1.100
# Kết nối qua cổng khác:
sftp -P 2222 ten_dang_nhap@ip_may_chu
Nếu yêu cầu xác thực, nhập mật khẩu đúng để thực hiện kết nối từ xa. Thông tin terminal sau khi kết nối thành công như hình dưới:
2.4 Tải tệp lên bằng sftp
SFTP có ngữ pháp và chức năng gần như giống hệt FTP:
① Các lệnh ls, rm, cd, mkdir, pwd là thao tác trên máy chủ từ xa đang kết nối;
② Các lệnh lls, lrm, lcd, lmkdir, lpwd là thao tác trên máy cục bộ - thêm chữ l (local) vào trước lệnh.
Ví dụ thao tác tải lên:
# Mặc định đều kết nối thư mục gốc, xem tệp trong thư mục /root cục bộ và từ xa:
sftp> lls # Cục bộ
config.txt data.log script.sh
sftp> ls # Từ xa
config.txt logs scripts
# Tải tệp script.sh cục bộ lên thư mục /tmp trên máy chủ từ xa:
sftp> put script.sh /tmp # Chỉ định đường dẫn nhận từ xa là /tmp
Uploading script.sh to /tmp/script.sh
script.sh 100% 1204 1.2KB/s 00:00
sftp> ls /tmp # Kiểm tra tệp trong thư mục /tmp từ xa
/tmp/script.sh
2.5 Tải tệp về bằng sftp
Ví dụ thao tác tải về:
# Tải tệp config.properties trong thư mục /root từ xa về thư mục /home cục bộ:
sftp> get /root/config.properties /home # Chỉ định tệp từ xa + đường dẫn nhận cục bộ
Fetching /root/config.properties to /home/config.properties
sftp> lls /home # Kiểm tra tệp trong thư mục /home cục bộ
config.properties
Nếu tải lên/tải về thư mục, thêm tham số -r sau lệnh put/get.
Hình ảnh minh họa các thao tác trên:
Thoát khỏi sftp:
Nhập quit hoặc exit trên terminal rồi nhấn Enter để thoát khỏi kết nối sftp.