Cách sử dụng SFTP (Giao thức truyền file qua SSH an toàn hơn)

FTP là phương pháp tiêu chuẩn để chuyển file hoặc dữ liệu khác giữa các máy tính, nhưng phương pháp này ngày càng trở nên lỗi thời trong môi trường đòi hỏi bảo mật. Đây chính là lý do mà SFTP cần thiết, vì nó đặc biệt an toàn hơn với người dùng hosting VPS.

Trong hướng dẫn này, chúng tôi sẽ trình bày cách sử dụng SFTP để chuyển file lên dịch vụ VPS hosting của Hostinger,  cũng như nói về một số lệnh hữu ích khác và giải thích thêm về cách thức hoạt động của nó.

Cách kết nối bằng SFTP

SFTP là hệ thống phụ của SSH. Vì vậy nó hỗ trợ mọi phương thức chứng thực của SSH. Mặc dù phương pháp dùng username và password khá quen thuộc với mọi người, nhưng nếu bạn thiết lập SSH key để đăng nhập SFTP không dùng mật khẩu sẽ tiện lợi và an toàn hơn nhiều. a subsystem of SSH.

Bạn có thể xem thêm bài hướng dẫn này để biết cách thiết lập SSH Keys. Sau khi xong, làm theo các bước bên dưới để kết nối với SFTP. Để kết nối thông qua SFTP trên máy Linux, bạn sẽ cần đi qua các bước:

  1. Kiểm tra kết nối SSH bằng một trong các lệnh sau:
    ssh user@server_ipaddress
    ssh user@remotehost_domainname
  2. Sau đó, thoát khỏi session nếu không thấy lỗi.
  3. Thiết lập kết nối SFTP bằng lệnh sau:
    sftp user@server_ipaddress
    sftp user@remotehost_domainname
  4. Nếu bạn đang dùng port SSH riêng, dùng lệnh sau để đổi SFTP port:
    sftp -oPort=customport user@server_ipaddress
    sftp -oPort=customport user@remotehost_domainname
  5. Lệnh sẽ trông như sau:
    sftp -oPort=49166 user@31.220.57.32

Sau khi kết nối thành công, bạn sẽ thấy thông báo SFTP.

Cách chuyển file bằng SFTP

Trong phần này, chúng tôi sẽ chỉ bạn cách chuyển file từ máy từ xa sang máy local bằng SFTP và ngược lại.

Ghi chú: Bạn có thể chuyển file bằng SFTP clients, như là WinSCP hoặc FileZilla. Nếu bạn thích FileZilla, xem ngay hướng dẫn tại đây.

Chuyển file từ máy chủ từ xa về máy local

Trước tiên, kiểm tra xem chúng ta đang thư mục local và remote đang dùng là gì bằng lệnh SFTP sau:

sftp> lpwd
Local directory: /LocalDirectory
sftp> pwd
Remote directory: /RemoteDirectory

Ở đây chúng tôi sẽ chỉ cho bạn cách chuyển file từ xa sang hệ thống nội bộ và ngược lại

Bây giờ, hãy xem cách chuyển file từ server từ xa sang máy local bằng lệnh get. Đây là cú pháp cơ bản của lệnh get:

get /RemoteDirectory/filename.txt

Ví dụ: để sao chép file /etc/xinetd.conf từ server từ xa sang máy nội bộ, bạn sẽ sử dụng:

get /etc/xinetd.conf

Sau khi tải xuống hoàn tất, bây giờ bạn có thể thấy file xinetd.conf nằm trong thư mục /user/home của máy nội bộ.

Để tải nhiều tệp xuống bằng SFTP, hãy dùng lệnh mget. Để tải tất cả các file trong thư mục có tên /etc có phần mở rộng .conf vào thư mục hiện tại, bạn sẽ sử dụng lệnh sau:

mget /etc/*.conf

Sau khi tải xuống, bạn có thể tìm thấy tất cả các file *.conf trong thư mục /user/home của máy nội bộ.

Chuyển file từ máy local đến server từ xa/hosting máy chủ ảo

Để sao chép file từ máy nội bộ sang server từ xa hay hosting máy chủ ảo, chúng ta sẽ sử dụng lại lệnh get. Trong trường hợp này, cú pháp của lệnh get sẽ là:

get file.txt /RemoteDirectory

Để di chuyển file example.txt từ máy local sang máy từ xa, hãy nhập lệnh sau:

put /home/user-name/example.txt /root

Bây giờ chúng ta sẽ thấy các file trong thư mục gốc của server từ xa. Bạn cũng có thể thử chuyển nhiều file bằng lệnh mput. Nó hoạt động gần giống như mget:

mput /home/user-name/*.txt /root

Lệnh này sẽ di chuyển tất cả các file có phần mở rộng .txt trong thư mục /home/user-name từ máy cục bộ sang thư mục /root từ xa.

LƯU Ý: Hãy nhớ rằng để tải xuống và tải lên các file bằng SFTP, bạn cần nhập lệnh put hoặc get và nhấn phím TAB.

Các lệnh điều hướng để di chuyển với SFTP

Một vài lệnh có thể dùng để điều hướng giữa máy remote và local khi dùng SFTP. Chúng tương tự nhu7 khi bạn dùng lệnh Linux shell.

Ví dụ, lệnh pwd sẽ được dùng để cho biết thư mục đang hiện hành là gì.

sftp> pwd
Remote directory: /RemoteDirectory

Hoặc

sftp> lpwd
Local directory: /LocalDirectory

Bạn có thể hiển thị danh sách files và thư mục trên thư mục từ xa bằng lệnh:

ls

Giống vậy, với thư mục local thì dùng lệnh để liệt kê danh sách file:

lls

Kết quả sẽ như sau:

Pictures     Templates     Media     Text.txt     Documents

Để chuyển qua lại giữa thư mục từ xa và thư mục local, nhập lệnh sau:

cd name_of_directory
lcd name_of_directory

Cuối cùng, dùng lệnh !exit để quay lại local shell và thoát khỏi SFTP.

Cơ bản cách vận hành file trong SFTP

SFTP còn giúp bạn quản lý thư mục và files bằng lệnh.

Để kiểm tra dung lượng máy chủ từ xa dưới dạng gigabytes, bạn dùng lệnh df như sau:

df -h

Kết quả bạn sẽ thấy:

Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop29212p1   59G  2.5G   56G   5% /
none               1.5G     0  1.5G   0% /sys/fs/cgroup
none               1.5G     0  1.5G   0% /dev
tmpfs              1.5G     0  1.5G   0% /dev/shm
tmpfs              1.5G  568K  1.5G   1% /run
tmpfs              308M     0  308M   0% /run/user/0

Dùng lệnh mkdir để tạo mới thư mục trên cả máy chủ từ xa và local:

mkdir name_of_directory
lmkdir name_of_directory

Bạn có thể xóa thư mục từ máy chủ từ xa bằng lệnh rmdir:

rmdir name_of_directory

Để đổi tên file từ phía máy host remote thì dùng lệnh sau:

rename filename new_filename

Đây là ví dụ:

rename Old_FileExample New_FileExample

Nếu bạn muốn xóa file remote, sử dụng lệnh rm: 

rm filename

Còn lệnh chown được dùng để thay đổi chủ sở hữu file:

chown userid filename

userid có thể là username hoặc numeric user ID. Ví dụ:

chown UserOne FileExample
chown 1234 FileExample

chgrp được dùng để đổi group owner của file:

chgrp groupid filename

Ví dụ:

chgrp NewGroup FileExample

Cuối cùng, bạn có thể cần dùng chmod để thiết lập phân quyền của file:

chmod 764 FileExample

Trong ví dụ trên, ba chữ số đại diện cho user, group, và other của file.

Đối với quyền read (r), write (w), và execute (x), giá trị tương ứng của nó là 4, 2, 1. 0 cũng có thể được dùng để thiết lập file không có quyền nào.

Để gán quyền cho file, chỉ cần tính tỏng giá trị của các quyền trên lại. Đây là diễn giải nó dễ hơn cho bạn hiểu:

chmod ugo FileExample
# u đại diện cho User người có quyền đọc, viết và thực thi.
# g là Group, tại đây chúng tôi gán quyền write và excute file (ghi và thục thi).
# o là Others, chỉ có quyền đọc.

Danh sách các lệnh SFTP hữu ích

Nếu bạn cần sheet cheat nhanh, thì đây là danh sách tất cả các lệnh SFTP có sẵn. Bạn có thể tự tìm danh sách này bằng cách nhập lệnh help hoặc ? – cả hai đều sẽ nhắc kết quả giống nhau.

bye                            Thoát sftp

cd path                          Thay đổi thư mục từ xa thành 'path'

chgrp [-h] grp path              Thay đổi nhóm file 'path' thành 'grp'

chmod [-h] mode path             Thay đổi quyền của file 'path' thành 'mode'

chown [-h] own path               Thay đổi sở hữu file 'path' thành 'own'

df [-hi] [path]                    Hiển thị số liệu thống kê cho thư mục hiện tại hoặc hệ thống file có

chứa 'path'

exit                           Thoát sftp

get [-afpR] remote [local]         Download file

help                              Hiển thị văn bản trợ giúp này

lcd path                           Thay đổi thư mục nội bộ thành 'path'

lls [ls-options [path]]            Hiển thị danh sách thư mục nội bộ

lmkdir path                        Tạo thư mục nội bộ

ln [-s] oldpath newpath           Liên kết file từ xa (-s cho symlink)

lpwd                               In thư mục làm việc nội bộ

ls [-1afhlnrSt] [path]            Hiển thị danh sách thư mục từ xa

lumask umask                       Đặt local umask thành 'umaks'

mkdir path                         Tạo thư mục từ xa

progress                           Chuyển đổi hiển thị của đồng hồ đo tiến độ

put [-afpR] local [remote]         Upload file

pwd                                Hiển thị thư mục làm việc từ xa

quit                               Thoát sftp

reget [-fpR] remote [local]       Tiếp tục tải file

rename oldpath newpath             Đặt lại tên file

reput [-fpR] local [remote]        Tiếp tục tải file lên

rm path                           Xóa file từ xa

rmdir path                       Xóa thư mục từ xa

symlink oldpath newpath            File từ xa Symlink

version                            Hiển thị phiên bản SFTP

!command                           Thực thi 'command' trong local shell

!                                  Thoát khỏi local shell

SFTP là gì?

SFTP, gọi tắt của SSH File Transfer Protocol, là cách chuyển file lên server hoặc ngược lại mà an toàn hơn nhiều. Sử dụng giao thức SSH, nó hỗ trợ mã hóa và các phương thức bảo mật khác để bảo vệ việc chuyển file tốt hơn. Nó là giao thức truyền file an toàn duy nhất bảo vệ chống lại các cuộc tấn công tại bất kỳ điểm nào trong quá trình truyền dữ liệu. Điều này khiến nó trở thành giao thức được ưa thích của các chuyên gia.

Trong quá trình truyền file, mọi dữ liệu được chia thành packets và gửi trên cùng một giao thức bảo mật.

Thông tin nhạy cảm sẽ được mã hóa và không ai có thể đọc được chúng trong quá trình chuyển từ máy client đến máy server/hay hosting. Hay nói cách khác, nội dung gốc dưới dạng plaintext (chữ đọc được) sẽ được thay thế bằng ký tự số mã hóa (ciphertext).

Chỉ có người nhận có key giải mã sẽ có thể nhìn thấy nội dung gốc. Việc này ngăn chặn bất kỳ truy cập trái phép nào vào file.

FTP có hai kênh để trao đổi dữ liệu khác nhau – kênh command và kênh data. Ngược lại, SFTP chỉ có một kênh được mã hóa trong đó dữ liệu được trao đổi trong các gói được định dạng, được mã hóa.

Lời kết

Có khá nhiều điều cơ bản về cách sử dụng SFTP để truyền file an toàn. Chúng tôi hy vọng hướng dẫn này đã chứng minh được nó hữu ích thế nào và cách sử dụng cơ bản. Tuy nhiên, nếu bạn cần thêm thông tin về FTP, bạn có thể tìm thêm hướng dẫn tại đây.

Nếu bạn có thêm câu hỏi nào về SFTP, đừng ngại để lại bình luận bên dưới.