Hầu hết mọi người thích các tiện ích như FileZilla, WinSCP hoặc các chương trình FTP khác khi họ cần chuyển tệp đến hoặc từ máy chủ Linux. SFTP là một giải pháp thay thế an toàn cho giao thức FTP ban đầu. Nó thực hiện hầu hết các chức năng giống như phiên bản không an toàn của nó, nhưng có thêm một lớp mã hóa. Để thực hiện điều này, nó sử dụng giao thức SSH cung cấp cho nó khả năng mã hóa. Thiết lập máy chủ SFTP trên hệ thống Linux của bạn bao gồm nhiều bước, chúng tôi sẽ giới thiệu ở đây.
SFTP là gì?
SFTP (Giao thức truyền tệp an toàn) là một giao thức mạng để truyền tệp từ máy khách đến máy chủ. Không giống như FTP (Giao thức truyền tệp), SFTP sử dụng giao thức SSH (Vỏ bảo mật) để mã hóa dữ liệu được gửi. Nó được phát triển bởi các nhà khoa học máy tính, Tatu Ylönen và Sami Lehtinen, những người cũng chịu trách nhiệm phát triển giao thức SSH trong những năm 1990. Tuy nhiên, phiên bản hiện đại được phát triển bởi IETF (Lực lượng Đặc nhiệm Kỹ thuật Internet).
Nó có thể được mô tả như một giao thức hệ thống tệp từ xa, mặc dù tên của nó cho thấy nó chỉ thực hiện các hoạt động truyền tệp. Khi gửi tệp bằng SFTP từ máy khách đến máy chủ nhận, dữ liệu sẽ được mã hóa trước khi gửi đến đích. Nếu dữ liệu đang được gửi bị chặn bởi "người trung gian", thì bên thứ ba này sẽ không thể dễ dàng giải mã được dữ liệu đó.
Cài đặt SSH và Máy chủ OpenSSH
Chúng tôi đang bắt đầu quá trình thiết lập máy chủ SFTP bằng cách cài đặt SSH và máy chủ OpenSSH.
Hầu hết các bản cài đặt Linux đều đã được cài đặt SSH theo mặc định, nhưng trong trường hợp hệ thống của bạn không có, bạn có thể cài đặt nó bằng cách sử dụng apt
của Công cụ đóng gói nâng cao lệnh:
sudo apt install ssh
Sau khi cài đặt SSH, bạn có thể kiểm tra phiên bản của nó bằng cách chạy ssh
lệnh bằng -V
cờ:
ssh -V
Ví dụ:bạn có thể cài đặt Máy chủ OpenSSH trên hệ thống Debian và Ubuntu bằng cách sử dụng apt
lệnh:
sudo apt install openssh-server
Bạn có thể làm điều tương tự trên Arch Linux bằng cách sử dụng pacman
lệnh:
sudo pacman -S openssh
Tạo Người dùng, Nhóm và Thư mục cho SFTP
Một khuyến nghị phổ biến là các dịch vụ khác nhau trên Linux nên sử dụng người dùng, nhóm và thư mục của riêng họ.
Bắt đầu bằng cách tạo một nhóm cho những người dùng SFTP. Điều này được thực hiện bằng cách sử dụng groupadd
lệnh:
sudo groupadd sftp_group
Bạn có thể tạo người dùng và thêm người dùng đó vào nhóm đã được tạo bằng cách sử dụng useradd
lệnh và -g
của nó cờ, được sử dụng để chỉ định nhóm mà người dùng sẽ tham gia:
sudo useradd -g sftp_group sftp_user
Sau khi tạo người dùng, hãy gán mật khẩu cho người dùng đó bằng cách sử dụng passwd
lệnh:
sudo passwd sftp_user
Tạo thư mục mặc định cho người dùng mới được tạo:
sudo mkdir -p /data/sftp_user/uploaded_files
Sử dụng chown
lệnh cấp cho thư mục các quyền cần thiết:
sudo chown -R root:sftp_group /data/sftp_user sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files
Định cấu hình Máy chủ SSH
Bước tiếp theo để thiết lập máy chủ SFTP là định cấu hình máy chủ SSH mà nó sẽ sử dụng.
Chỉnh sửa tệp “sshd_config” có trong “/ etc / ssh /” để người dùng đang sử dụng trình bao SFTP khi kết nối với máy chủ thay vì trình bao của SSH.
Bạn có thể dễ dàng chỉnh sửa tệp bằng trình chỉnh sửa Nano thường được sử dụng có trên nhiều bản cài đặt Linux theo mặc định:
sudo nano /etc/ssh/sshd_config
Tìm cuối tệp và thêm thông tin sau:
Match Group sftp_group ChrootDirectory /data/%u ForceCommand internal-sftp
Khởi động lại dịch vụ SSH:
sudo systemtl restart sshd
(Tùy chọn) Thay đổi Cổng SFTP
Nếu bạn muốn thay đổi cổng mà máy chủ SFTP đang sử dụng từ giá trị mặc định là 22 thành tùy chọn bạn đã chọn, bạn sẽ cần chỉnh sửa lại tệp “sshd_config”.
Một lần nữa chỉnh sửa tệp bằng cách sử dụng trình chỉnh sửa Nano:
sudo nano /etc/ssh/sshd_config
Tìm một dòng trong tệp có giá trị cổng mặc định là 22 đã nhận xét:
#Port 22
Bạn có thể xóa dấu thăng (#) được sử dụng để nhận xét dòng và thêm lựa chọn giá trị cổng của bạn. Trong trường hợp của tôi, tôi đang thay đổi giá trị thành 1111:
Port 1111
Bây giờ, chỉ cần lưu tệp
và khởi động lại máy chủ:
sudo systemctl restart sshd
Đăng nhập và Sử dụng Máy chủ
Với máy chủ được cài đặt và cấu hình, nó đã sẵn sàng để sử dụng. Bạn có thể dễ dàng tải tệp lên và tải xuống, tất cả đều có phiên mã hóa do SSH cung cấp.
Trước khi đăng nhập, bạn không cần phải xem qua hướng dẫn được cung cấp:
sftp -h
Đăng nhập vào máy chủ bằng cách cung cấp tên người dùng và IP máy chủ hoặc tên máy chủ ở định dạng sau:
sftp USER@HOST
Ngoài ra, bạn có thể chỉ định cổng mà máy chủ SFTP của bạn đang sử dụng (mặc định là 22) bằng cách sử dụng -P
cờ:
sftp USER@HOST -P <PORT>
Khi bạn đăng nhập, bạn sẽ được chào đón bằng một trình bao SFTP.
Xem sách hướng dẫn bằng cách nhập help
.
Tải xuống tệp
Để tải xuống tệp:
get /path/to/file/on/server
Ví dụ:
get /bin/ls
Thao tác này sẽ tải xuống thư mục hiện tại của bạn - thư mục bạn đã ở cục bộ trước khi đăng nhập vào máy chủ. Để tải xuống một thư mục cục bộ cụ thể:
get /path/to/file/on/server /path/to/local/folder
Để sao chép thư mục, bạn phải thêm -r
tham số, viết tắt của đệ quy, cho lệnh.
get -r /bin /home/username/Desktop/bin
Hãy nhớ thêm tên cho thư mục mới mà bạn muốn tạo cục bộ, chẳng hạn như “/ home / username / Desktop / bin” trong trường hợp này. Nếu bạn sử dụng get -r /bin /home/username/Desktop
, các tập tin sẽ được sao chép trực tiếp trên Desktop. Lưu ý rằng đó là các tệp được sao chép chứ không phải chính thư mục.
Tải lên tệp
Tải lên các tệp hoặc thư mục tuân theo các nguyên tắc tương tự. Ngoại lệ duy nhất là các đường dẫn bị đảo ngược, nghĩa là trước tiên bạn chỉ định tệp / thư mục cục bộ, sau đó là đường dẫn từ xa.
Để bắt đầu, hãy tải tệp lên máy chủ bằng cách sử dụng put
lệnh:
put /path/to/local/content /path/to/remote/location
Khi tải lên các thư mục (đệ quy), hãy nhớ rằng quy tắc tương tự từ phần trước cũng áp dụng:đó thực sự là các tệp trong thư mục được sao chép chứ không phải chính thư mục đó. Chỉ định tên mới cho thư mục bạn muốn sao chép các tệp đó vào.
put -r /home/username/Desktop/bin bin
Điều này tạo ra một thư mục mới có tên là “bin” ở phía từ xa.
Tiếp tục Truyền và Sử dụng Đường dẫn Chứa Khoảng trống
Khi bạn chuyển một tệp lớn bị gián đoạn, bạn có thể tiếp tục bằng cách thay thế lệnh trước đó bằng reput
và reget
. Chỉ cần đảm bảo rằng bạn sử dụng cùng một đường dẫn mà bạn đã sử dụng lần trước để nguồn và đích khớp chính xác.
reget /path/to/file/on/server /path/to/local/file reput /path/to/local/file /path/to/file/on/server
Để tiếp tục chuyển thư mục, chỉ cần thêm -r
tham số:
reput -r /home/username/Desktop/bin bin
Nếu đường dẫn đến tệp chứa khoảng trắng, hãy đặt nó trong dấu ngoặc kép:
put "/home/username/My Documents/Files"
Các Công dụng Khác
Bạn có thể liệt kê các tệp và thư mục bằng cách sử dụng ls
lệnh:
ls -l
Các quyền của tệp cũng có thể thay đổi bằng cách sử dụng chmod
lệnh:
chmod <PERMISSION> <FILE>
Ngoài ra, bạn có thể tạo một thư mục mới bằng cách sử dụng lệnh mkdir:
mkdir <DIRECTORY_NAME>
Câu hỏi thường gặp
1. Tôi có cần cài đặt ứng dụng SFTP không?
Trong hầu hết các trường hợp là không, vì hầu hết các hệ thống Linux đi kèm với một ứng dụng khách SFTP dựa trên thiết bị đầu cuối được cài đặt theo mặc định.
2. Tôi có thể sử dụng xác thực khóa công khai không?
Có, bạn có thể sử dụng xác thực khóa công khai thay vì mật khẩu làm phương pháp xác thực. Việc thiết lập nó khá đơn giản và nó cung cấp bảo mật bổ sung cho máy chủ của bạn.
3. Tôi có thể lưu trữ đồng thời một máy chủ SSH không?
Đúng. Tuy nhiên, bạn sẽ cần đảm bảo rằng máy chủ SFTP của bạn không sử dụng cùng một cổng với máy chủ SSH.