SFTP là một giao thức truyền dữ liệu khá phổ biến thông qua mạng máy tính một cách an toàn. Để có thể sử dụng SFTP mà không cần truy cập shell trên Ubuntu 20.04, mời bạn cùng tìm hiểu chi tiết trong bài viết hướng dẫn cách bật SFTP mà không cần truy cập shell trên Ubuntu 20.04 dưới đây của Vietnix.
Giới thiệu chung
SFTP là viết tắt của SSH File Transfer Protocol và là một giao thức để truyền file giữa các thiết bị sử dụng kết nối SSH được mã hóa. Mặc dù có tên khá giống nhau, nhưng đây là một giao thức khác với FTP (File Transfer Protocol ), SFTP được hỗ trợ rộng rãi bởi các FTP client hiện nay.
![Hướng dẫn bật SFTP mà không cần truy cập shell trên Ubuntu 20.04 2 Giao thức SFTP là gì?](https://static-xf1.vietnix.vn/wp-content/uploads/2023/11/bat-sftp-ma-khong-can-truy-cap-shell-tren-ubuntu-20-04-1.png)
SFTP mặc định có sẵn mà không cần bất kì cấu hình bổ sung nào ở tất cả các server với quyền truy cập SSH được kích hoạt. Mặc dù giao thức này an toàn và khá dễ sử dụng, nhưng có một nhược điểm là trong cấu hình chuẩn, SSH server cấp quyền truyền file và quyền truy cập trên terminal shell cho tất cả người dùng có tài khoản trên hệ thống.
Trong nhiều trường hợp, việc áp dụng granular control (kiểm soát chi tiết) đối với quyền của người dùng sẽ an toàn hơn. Ví dụ: Bạn muốn cho phép một vài người dùng chỉ được truyền file, nhưng ngăn họ truy cập vào server thông qua SSH thì thiết lập quyền mặc định sẽ không phù hợp. Lúc này, bạn sẽ tiến hành cài đặt SSH daemon để giới hạn truy cập SFTP vào một thư mục và không cho phép toàn quyền truy cập SSH ở từng người dùng.
Yêu cầu để bật SFTP mà không cần truy cập shell trên Ubuntu 20.04
Để thực hiện bài hướng dẫn này, trước tiên bạn cần có một Ubuntu 20.04 server bao gồm một tài khoản non-root có đặc quyền sudo
và tường lửa được cấu hình.
Bước 1: Tạo người dùng mới
Đầu tiên, bạn sẽ tạo một người dùng mới chỉ có quyền truyền file đến server. Bạn có thể đặt tên cho username bất kỳ, trong bài viết này sẽ sử dụng username là vietnixfiles:
sudo adduser vietnixfiles
Bạn sẽ nhận được thông báo tạo mật khẩu cho tài khoản, sau đó là một số thông tin về người dùng. Những thông tin này không bắt buộc vì thế bạn có thể nhấn Enter
để bỏ qua các trường thông tin này.
Hiện tại, bạn đã tạo được tài khoản với các quyền truy cập vào các thư mục hạn chế. Bước tiếp theo sẽ tiến hành tạo thư mục để thực hiện việc truyền file và cài đặt các quyền cần thiết.
Bước 2: Tạo thư mục cho việc truyền file
Để hạn chế quyền truy cập SFTP vào một thư mục, trước tiên bạn phải đảm bảo thư mục đó tuân thủ các yêu cầu cụ thể về quyền của máy chủ SSH.
Cụ thể, thư mục này và tất cả các thư mục trước đó trong cây thư mục hệ thống phải được sở hữu bởi root và không được phép ghi bởi bất kỳ ai khác. Nếu thư mục hệ thống sở hữu bởi chính người dùng thì việc cấp quyền truy cập giới hạn là không thể.
Lưu ý: Một số phiên bản của OpenSSH không có các yêu cầu nghiêm ngặt về cấu trúc thư mục và quyền sở hữu, nhưng hầu hết các bản phân phối Linux hiện tại (bao gồm Ubuntu 20.04) đều có.
Có nhiều cách để xử lí các vấn đề sở hữu này. Trong bài hướng dẫn này, bạn sẽ tạo và sử dụng thư mục /var/sftp/uploads
là nơi chứa các file tải lên. /var/sftp
sẽ được sở hữu bởi root và không được phép ghi bởi các người dùng khác. Còn thư mục con /var/sftp/uploads
sẽ được sở hữu bởi vietnixfiles nên người dùng đó có thể tải các file lên thư mục này.
Đầu tiên, tiến hành tạo thư mục:
sudo mkdir -p /var/sftp/uploads
Thiết lập root là chủ sở hữu của /var/sftp
:
sudo chown root:root /var/sftp
Cấp cho root quyền ghi và chỉ cấp quyền đọc – thực thi cho người dùng khác:
sudo chmod 755 /var/sftp
Thay đổi quyền sở hữu trên thư mục uploads
thành người dùng bạn vừa tạo:
sudo chown vietnixfiles:vietnixfiles /var/sftp/uploads
Đến đây, cấu trúc thư mục đã được tạo và bạn đã có thể tự cấu hình SSH server.
Nếu bạn đang muốn kích hoạt SFTP trên Ubuntu 20.04 mà không cần truy cập shell nhưng chưa có máy chủ thì có thể tham khảo các gói VPS của Vietnix.
Với máy chủ ảo (VPS) tại Vietnix, việc truyền tải tập tin an toàn qua mạng với SFTP trở nên đơn giản và bảo mật hơn. Vietnix cung cấp các gói VPS có cấu hình linh hoạt, đảm bảo hiệu suất cao và tin cậy cho dự án của bạn như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU.
Sử dụng dịch vụ VPS của Vietnix, bạn sẽ được trải nghiệm tốc độ nhanh chóng và độ ổn định cao. Đội ngũ kỹ thuật chuyên môn cao của Vietnix sẵn sàng hỗ trợ bạn 24/7 trong quá trình kích hoạt SFTP cũng nhưu các vấn đề kỹ thuật khác.
Đừng chần chừ, hãy liên hệ với Vietnix để tìm hiểu thêm và lựa chọn gói VPS phù hợp nhất cho dự án của bạn.
Bước 3: Hạn chế quyền truy cập vào 1 thư mục
Ở bước này, bạn sẽ sửa đổi cấu hình SSH server để giới hạn vietnixfiles không được truy cập vào terminal nhưng vẫn được phép truyền file.
Mở file cấu hình của SSH server bằng nano
hoặc bất kỳ trình chỉnh sửa nào của bạn:
sudo nano /etc/ssh/sshd_config
Cuộn xuống cuối file và thêm đoạn code sau:
Match User vietnixfiles ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Chi tiết về mỗi dòng lệnh trên :
Match User
yêu cầu SSH server áp dụng các lệnh sau cho người dùng được chỉ định. Ở đây chính là vietnixfiles hoặc tên người dùng của riêng bạn.ForceCommand internal-sftp
buộc SSH server chạy SFTP server khi đăng nhập, và không cho phép truy cập shell.PasswordAuthentication yes
cho phép xác thực mật khẩu cho người dùng.ChrootDirectory /var/sftp/
đảm bảo rằng người dùng sẽ không được phép truy cập vào bất cứ thứ gì ngoài thư mục/var/sftp.
AllowAgentForwarding no
,AllowTcpForwarding no
vàX11Forwarding no
lần lượt vô hiệu hóa tính năng port forwarding (chuyển tiếp port), tunneling (tạo đường hầm) và X11 forwarding (chuyển tiếp X11). Mục đích của việc thêm các lệnh này là để hạn chế hơn nữa quyền truy cập của người dùng vào máy chủ.
Tập lệnh này, bắt đầu với Match User
, có thể được sao chép và lặp lại cho những người dùng khác nhau. Hãy nhớ sửa đổi tên người dùng ở dòng Match User
cho phù hợp.
Lưu ý: Bạn có thể bỏ qua dòng PasswordAuthentication yes
và thiết lập quyền truy cập SSH key để tăng cường bảo mật. Cần đảm bảo thực hiện việc này trước khi vô hiệu hóa quyền truy cập shell cho người dùng. Bước tiếp theo sẽ kiểm tra cấu hình bằng cách truy cập bằng mật khẩu vào SSH cục bộ. Tuy nhiên nếu thiết lập SSH key, bạn sẽ cần quyền truy cập vào máy tính bằng key pair của người dùng.
Sau khi thêm những dòng này, hãy lưu và đóng file. Nếu sử dụng nano bạn có thể nhấn tổ hợp phím CTRL + X
, nhấn Y
, rồi nhấn ENTER
.
Tiến hành khởi động lại để áp dụng những thay đổi trên bằng cách:
sudo systemctl restart sshd
Hiện tại, bạn đã cấu hình SSH server để hạn chế quyền truy cập cho vietnixfiles. Ở bước cuối cùng, bạn sẽ kiểm tra cấu hình để đảm bảo hoạt động như ý muốn.
Bước 4: Xác minh cấu hình
Hãy đảm bảo rằng người dùng vietnixfiles chỉ có quyền truyền file. Như đã đề cập trước, SFTP được sử dụng để truyền file giữa các thiết bị. Bạn có thể xác minh hoạt động này bằng cách kiểm tra quá trình chuyển đổi giữa thiết bị cục bộ và server của bạn.
Trước tiên, hãy thử đăng nhập vào server với tư cách là người dùng mà bạn đã tạo ở Bước 1. Do bạn đã thay đổi cấu hình SSH nên điều này sẽ không thể thực hiện được:
ssh vietnixfiles@your_server_ip
Bạn sẽ nhận được thông báo sau:
Output This service allows sftp connections only. Connection to your_server_ip closed.
Điều này có nghĩa là vietnixfiles không thể truy cập vào server shell bằng SSH. Tiếp theo, hãy xác minh xem người dùng có thể truy cập thành công SFTP để truyền file hay không:
sftp vietnixfiles@your_server_ip
Thay vì thông báo lỗi, lệnh này sẽ tạo thông báo đăng nhập thành công như sau:
Output Connected to your_server_ip sftp>
Bạn có thể liệt kê nội dung thư mục bằng ls
như sau:
ls
Thao tác này sẽ hiển thị thư mục uploads
đã được tạo trước đó và đưa bạn trở lại với sftp>
:
Output uploads
Để xác minh rằng người dùng thực sự bị giới hạn trong thư mục này và không thể truy cập vào bất kỳ thư mục nào trước đó, hãy thử thay đổi thư mục về thư mục trước như sau:
cd ..
Lệnh này sẽ không báo lỗi nhưng sẽ liệt kê các nội dung thư mục như trước mà không hề thay đổi, chứng tỏ rằng người dùng không thể chuyển sang thư mục cha. Và bây giờ bạn đã xác minh được rằng cấu hình đã hạn chế quyền hoạt động như dự kiến. Người dùng vietnixfiles chỉ có thể truy cập server bằng cách sử dụng giao thức SFTP để truyền tệp và không có khả năng truy cập vào shell.
Vietnix là nhà cung cấp VPS hàng đầu tại Việt Nam với hơn 11 năm kinh nghiệm. Trong quá trình hoạt động, Vietnix đã được hơn 50.000 khách hàng tin tưởng lựa chọn, bao gồm iVIVU.com, Vietnamwork, KINGFOOD, UBGroup, GTV,… và nhiều khách hàng khác.
Với hơn 100.000 dịch vụ VPS đã được kích hoạt và 97% khách hàng đánh giá 5 sao chính là chứng minh về chất lượng dịch vụ vượt trội của Vietnix.
Năm 2022, Vietnix đã nhận giải thưởng thương hiệu Việt Nam xuất sắc, càng khẳng định vị thế dẫn đầu của Vietnix trên thị trường.
Với kinh nghiệm và uy tín đã có, Vietnix là lựa chọn hàng đầu cho các doanh nghiệp và cá nhân có nhu cầu sở hữu dịch vụ VPS chất lượng. Hãy trải nghiệm dịch vụ VPS tốc độ cao của Vietnix ngay hôm nay.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
Lời kết
Như vậy với hướng dẫn về cách bật SFTP mà không cần truy cập shell trên Ubuntu 20.04 này, bạn đã hạn chế quyền truy cập SFTP của người dùng và chỉ cho phép họ vào một thư mục duy nhất trên server mà không cần truy cập vào shell. Cảm ơn bạn đọc bài hướng dẫn của Vietnix, hãy cùng chia sẻ bài viết đến mọi người để cùng nhau trau dồi thêm kiến thức và đừng quên theo dõi những bài viết tiếp theo để cập nhật những kiến thức mới nhất về SFTP, SSH nhé.