Hotline : 07 088 44444
Thích
Chia sẻ

Cách sử dụng SFTP hiệu quả nhất

28/04/2021

SFTP là một giao thức truyền file an toàn, có thể truyền trên cả hệ thống cục bộ và từ xa. Bài viết dưới đây sẽ hướng dẫn sử dụng SFTP để truyền file bằng Remote Server đơn giản, hiệu quả nhất.

Giới thiệu

FTP (File Transfer Protocol) là một phương pháp truyền file không mã hóa giữa hai hệ thống từ xa. SFTP (SSH File Transfer Protocol, hoặc Secure File Transfer Protocol) là một giao thức riêng biệt được packaged với SSH. Ưu điểm của nó là khả năng tận dụng kết nối an toàn để truyền file và truyền qua hệ thống file trên cả hệ thống cục bộ và hệ thống từ xa.

cach-su-dung-sftp-de-truyen-file-an-toan-bang-server-tu-xa-1
Sử dụng SFTP để truyền file

Giữa SFTP hoặc FTP, bạn nên sử dụng SFTP vì đó là một cách chuyển file an toàn hơn.

Trong bài viết này, chúng tôi sẽ hướng dẫn cách sử dụng SFTP thông qua command line interface. 

Cách kết nối với SFTP

Theo mặc định, SFTP sử dụng giao thức SSH để xác thực và thiết lập kết nối an toàn. Do đó, các phương pháp xác thực tương tự cũng có sẵn trong SSH.

Mặc dù password dễ sử dụng và được thiết lập theo mặc định, bạn vẫn nên tạo key SSH và chuyển public key khóa của mình sang bất kỳ hệ thống nào mà bạn cần truy cập. Điều này an toàn hơn và tiết kiệm thời gian về lâu dài.

Nếu bạn có thể kết nối với máy bằng SSH, thì bạn đã hoàn thành tất cả các yêu cầu cần thiết để sử dụng SFTP để quản lý file. Kiểm tra quyền truy cập SSH bằng command sau:

ssh sammy@your_server_ip_or_remote_hostname

Nếu cách đó hoạt động, hãy thoát ra ngoài bằng cách nhập:

exit

Bây giờ chúng ta có thể thiết lập một phiên SFTP bằng command sau:

sftp sammy@your_server_ip_or_remote_hostname

Bạn sẽ kết nối hệ thống từ xa và prompt của bạn sẽ chuyển thành SFTP prompt.

Nếu bạn đang làm việc trên một cổng SSH tùy chỉnh (không phải cổng mặc định 22), bạn có thể mở một phiên SFTP như sau:

sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

Bạn sẽ được kết nối với hệ thống từ xa bằng cổng được chỉ định.

Nhận trợ giúp trong SFTP

Command hữu ích nhất để tìm hiểu là command trợ giúp. Điều này cung cấp cho bạn quyền truy cập vào bản tóm tắt trợ giúp SFTP. Hãy nhập vào prompt:

help

hoặc

?

Thao tác này sẽ hiển thị danh sách các command có sẵn:

Output
Available commands:
bye                                 Quit sftp
cd path                   Thay đổi remote directory thành 'path'
chgrp grp path            Thay đổi nhóm file 'path' thành 'grp'
chmod mode path     Đổi permissions của file 'path' thành 'mode'
chown own path         Thay đổi owner của file 'path' thành 'own'
df [-hi] [path]           Hiển thị thống kê cho thư mục hoặc 
                          filesystem hiện tại có chứa 'path'
exit                               Quit sftp
get [-Ppr] remote [local]          Download file
help                               Hiển thị help text
lcd path                   Thay đổi local directory thành 'path'
. . .

Điều hướng bằng SFTP

Có thể di chuyển qua hệ thống file trên server bằng cách sử dụng một số command có chức năng tương tự như các shell counterpart.

Trước tiên, hãy tìm xem bạn hiện đang ở thư mục nào trên hệ thống từ xa. Hãy nhập: 

pwd
Output
Remote working directory: /home/demouser

Có thể xem nội dung thư mục hiện tại của hệ thống từ xa bằng command:

ls
Output
Summary.txt     info.html       temp.txt        testDirectory

Lưu ý rằng các command trong SFTP interface không phải là shell command bình thường và không giàu tính năng. Nhưng chúng thực hiện một số flag tùy chọn quan trọng hơn:

ls -la
Output
drwxr-xr-x    5 demouser   demouser       4096 Aug 13 15:11 .
drwxr-xr-x    3 root     root         4096 Aug 13 15:02 ..
-rw-------    1 demouser  demouser   5 Aug 13 15:04 .bash_history
-rw-r--r--    1 demouser   demouser 220 Aug 13 15:02 .bash_logout
-rw-r--r--    1 demouser   demouser    3486 Aug 13 15:02 .bashrc
drwx------    2 demouser   demouser    4096 Aug 13 15:04 .cache
-rw-r--r--    1 demouser   demouser    675 Aug 13 15:02 .profile

Để đến một thư mục khác, sử dụng command:

cd testDirectory

Bây giờ bạn có thể duyệt qua hệ thống file từ xa. Nếu bạn cần truy cập vào hệ thống file cục bộ, bạn có thể hướng các command tới hệ thống file cục bộ bằng cách đặt l trước chúng cho cục bộ (local).

Tất cả các lệnh được thảo luận đều có các local tương đương. Bạn có thể in directory làm việc cục bộ:

lpwd
Output
Local working directory: /Users/demouser

Liệt kê nội dung của thư mục hiện tại trên máy cục bộ:

lls
Output
Desktop         local.txt       test.html
Documents       analysis.rtf        zebra.html

Thay đổi dir mà bạn muốn tương tác trên hệ thống cục bộ:

lcd Desktop

Dành riêng cho bạn: Hiện nay tại Vietnix có chương trình thuê máy chủ giá rẻ CPU 2 x Intel Xeon X5650 2.66 GHz, (12 Core), 32GB RAM, 240 SSD chỉ còn 3.000.000vnđ/ tháng và nhiều gói đăng ký thuê máy chủ khác!

thuê máy chủ
Thuê server

Truyền file bằng SFTP

Chuyển các file từ xa đến hệ thống cục bộ

Nếu bạn muốn download file từ server từ xa, dùng lệnh sau:

get remoteFile
Output
Fetching /home/demouser/remoteFile to remoteFile
/home/demouser/remoteFile          100%   37KB  36.8KB/s   00:01

Theo mặc định, command get sẽ tải một file từ xa xuống một file có cùng tên trên hệ thống file cục bộ.

Bạn có thể sao chép file từ xa sang một tên khác bằng cách:

get remoteFile localFile

Command get cũng có một số flag tùy chọn. Ví dụ: chúng ta có thể sao chép một thư mục và tất cả nội dung của nó bằng cách chỉ định tùy chọn đệ quy:

get -r someDirectory

Bạn có thể yêu cầu SFTP duy trì các quyền và thời gian truy cập thích hợp bằng cách sử dụng -P hoặc –p flag:

get -Pr someDirectory

Truyền file cục bộ sang hệ thống từ xa

Việc chuyển các file đến hệ thống từ xa được thực hiện bằng cách sử dụng lệnh:

put localFile
Output
Uploading localFile to /home/demouser/localFile
localFile                  100% 7607     7.4KB/s   00:00

Các flag tương tự của get được áp dụng cho put. Vì vậy, để sao chép toàn bộ thư mục cục bộ, bạn có thể dùng:

put -r localDirectory

Lưu ý: Hiện có một lỗi trong các phiên bản OpenSSH được cung cấp cùng với các bản phát hành Ubuntu hiện tại (ít nhất là 14.04 đến 15.10) ngăn lệnh trên hoạt động chính xác:

Couldn't canonicalise: No such file or directory.

Để khắc phục sự cố này, hãy tạo thư mục đích ở phía remote server bằng cách nhập mkdir localDirectory

Một công cụ hữu ích khi download và upload file là command df. Nó hoạt động tương tự như phiên bản command line. Với lệnh này, bạn có thể kiểm tra xem có đủ dung lượng để hoàn tất quá trình chuyển file hay không:

df -h
Output
    Size     Used    Avail   (root)       %Capacity
  19.9GB   1016MB   17.9GB   18.9GB           4%

Không có biến thể cục bộ của command này, nhưng nó có thể được khắc phục bằng cách dùng command !.

Các command  ! đưa bạn vào một shell cục bộ, nơi bạn có thể chạy bất kỳ lệnh nào có sẵn trên hệ thống cục bộ của mình. Kiểm tra disk usage bằng cách gõ:

!

tiếp theo là

df -h
Output
Filesystem      Size   Used  Avail Capacity  Mounted on
/dev/disk0s2   595Gi   52Gi  544Gi     9%    /
devfs          181Ki  181Ki    0Bi   100%    /dev
map -hosts       0Bi    0Bi    0Bi   100%    /net
map auto_home    0Bi    0Bi    0Bi   100%    /home

Để quay lại phiên SFTP, hãy nhập:

exit

Thao tác file đơn giản với SFTP

SFTP cho phép bạn thực hiện kiểu bảo trì file cơ bản khi làm việc với cấu trúc phân cấp file.

Ví dụ: bạn có thể thay đổi chủ sở hữu của file trên hệ thống từ xa bằng:

chown userID file

Lệnh SFTP sử dụng UID thay vì username. 

Để biết UID từ bên trong SFTP interface, nhập lệnh:

get /etc/passwd
!less passwd
Output
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .

Chú ý thay vì đưa ra lệnh ! của chính nó, hãy sử dụng nó làm tiền tố cho một shell command cục bộ. Việc này sẽ giúp chạy bất kỳ command nào có sẵn trên máy cục bộ. Hoặc có thể đã được sử dụng với command df cục bộ trước đó.

UID sẽ nằm trong cột thứ ba của file và được mô tả bằng các ký tự dấu hai chấm.

Tương tự, chúng ta có thể thay đổi chủ sở hữu nhóm của file bằng:

chgrp groupID file

Để có được danh sách các nhóm của hệ thống từ xa sử dụng command sau:

get /etc/group
!less group
Output
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .

Cột thứ ba chứa ID của nhóm được liên kết với tên trong cột đầu tiên. 

Rất may, lệnh chmod hoạt động như mong đợi trên hệ thống file từ xa:

chmod 777 publicFile
Output
Changing mode on /home/demouser/publicFile

Không có lệnh nào để thao tác permission đối với file cục bộ. Nhưng bạn có thể đặt umask cục bộ. Khi đó, bất kỳ file nào được sao chép vào hệ thống cục bộ sẽ có quyền thích hợp.

lumask 022
Output
Local umask: 022

Bây giờ tất cả các file thông thường được tải xuống (miễn là flag -p không được sử dụng) sẽ có 644 quyền.

SFTP cho phép bạn tạo thư mục trên cả hệ thống cục bộ và hệ thống từ xa với lmkdir mkdir tương ứng.

Phần còn lại của các command file chỉ nhắm vào hệ thống file từ xa:

ln
rm
rmdir

Các lệnh này sao chép hành vi cơ bản của các phiên bản shell. Nếu bạn cần thực hiện các hành động này trên hệ thống file cục bộ, hãy nhớ rằng bạn có thể thả vào shell bằng cách đưa ra command sau:

!

Hoặc thực hiện một command duy nhất trên hệ thống cục bộ bằng cách đặt  ! trước lệnh:

!chmod 644 somefile

Khi bạn kết thúc phiên SFTP, đóng kết nối bằng:

bye

Kết luận

SFTP là một công cụ hữu ích để quản trị các server và chuyển các file giữa chúng. Ví dụ như bạn có thể sử dụng SFTP để cho phép user cụ thể chuyển file mà không cần quyền truy cập SSH. 

Nếu bạn đã quen với việc sử dụng FTP hoặc SCP, SFTP chính là một cách tốt để tận dụng điểm mạnh của cả hai.

Nếu bạn có thắc mắc hay có vấn đề cần hỗ trợ, bạn có thể liên hệ trực tiếp với Vietnix thông qua các kênh sau:
  • Hotline: 1800 1093 - 07 088 44444
  • Email: support@vietnix.vn
  • Hoặc chat trực tiếp với Vietnix thông qua biểu tượng Livechat ở góc phải màn hình. Đội ngũ chuyên viên của chúng tôi luôn sẵn sàng tư vấn và hỗ trợ bạn 24/7.
Vietnix hiện đang có chương trình khuyến mãi lớn nhất trong năm, giảm giá TRỌN ĐỜI: Đăng ký dùng thử ngay và Vietnix sẽ hoàn tiền 100% nếu quý khách không hài lòng với chất lượng sản phẩm, dịch vụ!
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PersonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Bài viết liên quan
Không có bài viết liên quan
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments