Hôm bữa cần làm task liên quan đến việc đối soát dữ liệu và đẩy lên một thư mục có sẵn thông qua SFTP nên là mình viết luôn bài hướng dẫn cách cấu hình SFTP trên Centos 7 luôn. Để thiết lập được thì bạn cần một server đang chạy centos 7 và làm theo các bước hướng dẫn như bên dưới.
SFTP là viết tắt của SSH File Transfer Protocol, một giao thức truyền nhận dữ liệu tới máy chủ thông qua SSH.
Bước 1:
Tạo một tài khoản mới, có thể kết nối tới SFTP server để truyền dữ liệu
sudo adduser testsftp
sudo passwd testsftp
hai command trên dùng để tạo tài khoản và thiết lập mật khẩu đăng nhập vào SFTP server, bạn nhớ lưu lại cặp user/pass này.
Bước 2:
Tiếp theo chúng ta sẽ tạo một thư mục, sẽ dùng để chứa các tệp dữ liệu trên SFTP server.
tạo mới thư mục sftp/uploads nằm ở cụm /var/www bằng command bên dưới:
sudo mkdir -p /var/www/sftp/uploads
mặc định command trên đã cho biết là root là người dùng sở hữu của thư mục sftp
thực hiện cấp quyền 755 cho thư mục var/www/sftp, nghĩa là người dùng root sẽ có quyền đọc ghi trong thư mục này, còn những người dùng khác sẽ chỉ có quyền đọc và liệt kê dữ liệu trong thư mục.
sudo chmod 755 /var/www/sftp
thay đổi quyền sở hữu thư mục /uploads nằm trong /sftp cho người dùng testsftp đã tạo từ trước, người dùng testsftp sẽ có đầy đủ đặc quyền thực hiện trong thư mục /uploads này.
sudo chown testsftp:testsftp /var/www/sftp/uploads
Bước 3:
Hạn chế quyền truy cập của người dùng testsftp.
ở bước này, chúng ta cần cấu hình để tài khoản người dùng testsftp chỉ có quyền kết nối thông qua sftp để chuyển file dữ liệu vào đúng thư mục mà chúng ta thiết lập, và không được phép kết nối đến server thông qua SSH thông thường
mở tệp cấu hình SSH bằng command sau:
sudo vi /etc/ssh/sshd_config
chèm thêm vào cuối file config nội dung sau:
Match User testsftp
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Giải thích ý nghĩa cấu hình vừa thêm vào:
Match User testsftp
: yêu cầu máy chủ SSH chỉ áp dụng các lệnh sau cho người dùng testsftp.ForceCommand internal-sftp
: buộc máy chủ SSH chạy máy chủ SFTP khi đăng nhập, không cho phép truy cập trình bao. Nghĩa là chỉ được phép kết nối vào SFTP chứ không vào được SSH để làm các thao tác khác như người dùng bình thường.PasswordAuthentication yes
: cho phép xác thực mật khẩu cho người dùng này.ChrootDirectory /var/www/sftp/
: đảm bảo rằng người dùng sẽ không được phép truy cập vào bất kỳ thứ gì ngoài thư mục/var/www/sftp
.
Để áp dụng các thay đổi, thực hiện khởi động lại dịch vụ bằng command:
sudo systemctl restart sshd
Bước 4:
Xác minh lại cấu hình
sau khi đã thực hiện khởi động lại dịch vụ SSH, ta sẽ cần kiểm tra lại để đảm bảo tài khoản được cấu hình chỉ có quyền truyền file qua SFTP mà không có quyền truy cập SSH như thông thường.
ssh testsftp@localhost
sau khi nhập password để kết nối, nếu bạn gặp thông báo như bên trên, chứng tỏ việc không kết nối được qua ssh là chính xác.
tiếp theo, cần xác minh xem người dùng có thể chuyển tệp thông qua SFTP hay không, ta thực hiện như sau:
sftp testsftp@localhost
Done, chúng ta đã thực hiện xong việc cấu hình SFTP trên Centos 7 để truyền nhận file qua một người dùng cụ thể, và hạn chế quyền sử dụng của nó.
Tham khảo:
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-centos7
Xem thêm các bài viết khác liên quan tại đây:
- Cảnh báo qua Telegram khi SSH vào hệ thống Centos 7
- Nói sao để được chào đón, làm thế nào để được ghi nhận
- 13 Plugin không thể thiếu khi làm việc với IntellIJ IDEA
- Crack Intellij IDEA new versions 2021
- Crack IntellIJ để code như một senior
- Shortcut Intellij hữu ích để làm việc được hiệu quả hơn
- Build hệ thống Pub Sub dùng Hazelcast và Spring boot
- Build hệ thống Pub-Sub bằng Kafka+Spring boot (phần 3)
- Biết sử dụng git cherry-pick để làm việc hiệu quả hơn
- Git stash giúp bạn trở nên chuyên nghiệp như thế nào?
- Git revert với git reset hoạt động như thế nào
- Series tìm hiểu lập trình java
- Active Jrebel để code trong IntellIJ IDEA
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 1)
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 2)
- Elasticsearch là gì mà bá đạo đến vậy? [Phần 1]
- Cùng nhau tìm hiểu Docker
- Cài đặt Hazelcast trên server Centos 7
- Elasticsearch và Kibana dựng bằng Docker
- Lập trình viên lúc rảnh rỗi thì nên làm gì?