SFTP (SSH File Transfer Protocol) là một giao thức truyền file an toàn được sử dụng để truy cập, quản lý và truyền file thông qua SSH được mã hóa.
Khi so sánh với giao thức FTP truyền thống, SFTP cung cấp tất cả các chức năng của FTP và dễ dàng cấu hình hơn.
Không giống như lệnh scp, chỉ cho phép truyền file, lệnh sftp cho phép bạn thực hiện một loạt các hoạt động trên các file từ xa.
Để có thể chuyển và quản lý file qua SFTP, bạn phải có quyền ghi trên remote system.
SFTP hoạt động trên mô hình client-server, hỗ trợ tất cả các cơ chế xác thực SSH.
Để mở kết nối SFTP với remote system, hãy sử dụng lệnh sftp
theo sau là tên remote user và địa chỉ IP hoặc tên miền:
$sftp remote_username@server_ip_or_hostname
Sau khi kết nối, bạn sẽ thấy dấu nhắc sftp và bạn có thể bắt đầu tương tác với remote server:
Connected to remote_username@server_ip_or_hostname.
sftp>
Nếu máy chủ SSH từ xa không lắng nghe trên cổng 22, hãy sử dụng tùy chọn -oPort
để chỉ định cổng thay thế:
sftp -oPort=port remote_username@server_ip_or_hostname
Hầu hết các lệnh SFTP tương tự hoặc giống hệt với các lệnh bạn sẽ sử dụng trong dấu nhắc shell của Linux.
Bạn có thể nhận được danh sách tất cả các lệnh SFTP có sẵn bằng cách nhập help
hoặc ?
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
...
...
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Điều hướng với SFTP
Khi bạn đăng nhập vào remote server, thư mục làm việc hiện tại của bạn là thư mục home của remote user. Bạn có thể kiểm tra bằng cách gõ:
sftp> pwd
Remote working directory: /home/remote_username
Để liệt kê các tập tin và thư mục sử dụng lệnh ls
:
sftp> ls
Để di chuyển đến thư mục khác, sử dụng lệnh cd
. Ví dụ: để chuyển sang thư mục /tmp, bạn sẽ gõ lệnh như sau:
sftp> cd /tmp
Các lệnh trên được sử dụng để điều hướng và làm việc trên remote server.
sftp cũng cung cấp các lệnh để điều hướng cục bộ với việc sử dụng thêm tiền tố l
ở phía trước các lệnh.
sfpt>cd lpwd
Local working directory: /home/local_username
Với SFTP, bạn có thể chuyển tập tin an toàn giữa hai máy. Lệnh sftp rất hữu ích khi bạn làm việc trên máy chủ không có giao diện GUI và bạn muốn chuyển file hoặc thực hiện các thao tác khác trên các tệp từ xa.
Khi tải xuống file bằng lệnh sftp
, các file được tải xuống thư mục mà bạn đã nhập lệnh sftp. Để tải xuống một file từ remote server, hãy sử dụng lệnh get
:
sftp>get filename.zip
Bạn sẽ thấy đầu ra như sau:
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
Để tải xuống một thư mục từ remote server, hãy sử dụng tùy chọn -r
:
sftp>get -r remote_directory
Nếu quá trình truyền file không thành công hoặc bị gián đoạn, bạn có thể tiếp tục lại bằng lệnh reget
. Cú pháp của reget
giống với cú pháp của get
:
sftp>reget filename.zip
Để upload một file từ local lên remote SFTP server, sử dụng lệnh put
:
sftp>put filename.zip
Bạn sẽ thấy đầu ra như sau:
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
Để tải lên một thư mục từ local lên remote SFTP server:
sftp>put -r locale_directory
Để tiếp tục tải lên nếu bị gián đoạn:
sftp>reput filename.zip
Thông thường, để thực hiện các tác vụ trên remote server, bạn sẽ kết nối với nó thông qua SSH và thực hiện công việc của mình bằng shell terminal. Tuy nhiên, trong một số trường hợp, người dùng có thể chỉ có quyền truy cập SFTP vào remote server.
SFTP cho phép bạn thực hiện một số lệnh thao tác trên file cơ bản. Dưới đây là một số ví dụ về cách sử dụng shell SFTP:
sftp>df
Size Used Avail (root) %Capacity
20616252 1548776 18002580 19067476 7%
sftp>mkdir directory_name
sftp>rename file_name new_file_name
sftp>rm file_name
sftp>rmdir directory_name
sftp>chmod 644 file_name
sftp>chown user_id file_name
sftp>chgrp group_id file_name
Khi bạn đã hoàn thành công việc của mình, hãy đóng kết nối bằng cách gõ bye
hoặc quit
.
Trong hướng dẫn này, chúng ta đã tìm hiểu cách sử dụng lệnh sftp để download và upload file lên remote SFTP server.