如何在Ubuntu上创建安全的SFTP服务?

什么是 SFTP?

SFTP 代表安全文件传输协议。与代表文件传输协议的 FTP 不同,SFTP 对传输的数据进行加密,确保安全性和完整性。这意味着您的文件将保持机密并且在传输过程中不会被篡改。

一、前提条件

1、安装有Ubuntu系统的云服务器

推荐阿里云、腾讯云或华为云这样的厂商的服务器,比较稳定。

  • 阿里云服务器:传送门
  • 腾讯云服务器:传送门
  • 华为云服务器:传送门

2、有root或sudo访问权限

服务器购买之后,就会给你root帐号和密码。

二、安装OpenSSH服务

Ubuntu 通常预装了 SSH 客户端。但是,出于今天的目的,我们需要单独 OpenSSH 服务。

sudo apt update
sudo apt install openssh-server

安装完成后,检查服务的状态:

sudo systemctl status ssh

在“Active”看到“active (running)”
如何在Ubuntu上创建安全的SFTP服务?_第1张图片检查systemctl服务状态
如果该服务未运行,可以使用以下命令启动它:

sudo systemctl start ssh

三、配置SFTP

1、创建专用 SFTP 组和用户

建议(根据个人经验)为 SFTP 设置专门的组和用户。这可确保隔离并更好地控制权限。

创建一个群组:

sudo groupadd sftp_users

使用sftpuser创建一个用户

sudo useradd -m sftpuser -g sftp_users

为该用户设置密码:

sudo passwd sftpuser

如何在Ubuntu上创建安全的SFTP服务?_第2张图片
创建专用 SFTP 组和用户

2、配置 SSHD 配置文件

用编辑器打开 SSHD 配置文件。我通常使用nano,或者使用vim等:

sudo nano /etc/ssh/sshd_config

向下滚动并查找Subsystem sftp /usr/lib/openssh/sftp-server。#通过在行首添加 a 将其注释掉。在其下方添加:

Subsystem sftp internal-sftp

在文件的最底部添加以下代码:

Match Group sftp_users
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

如何在Ubuntu上创建安全的SFTP服务?_第3张图片
配置sftp服务

这是最终的编辑:
按 CTRL X 保存并退出编辑器,然后按“Y”保存文件。
这里做的目的是告诉 SSH 服务器限制该组的sftp_users用户他们的主目录使用 SFTP 协议。

3、调整目录权限

为了使 chroot 环境正常工作,用户的主目录需要有 root 权限:

sudo chown root:root /home/sftpuser

用户需要有上传和下载文件的权限,因此为此创建一个目录:

sudo mkdir /home/sftpuser/files
sudo chown sftpuser:sftp_users /home/sftpuser/files

4、重新启动 SSH 服务

重新启动 SSH 服务

sudo systemctl restart ssh

如何在Ubuntu上创建安全的SFTP服务?_第4张图片
调整目录权限并重启SSH服务

5、测试 SFTP 服务

我们测试一下我们的设置:

sftp sftpuser@your_server_ip

sftpuser出现提示时输入您设置的密码。
如何在Ubuntu上创建安全的SFTP服务?_第5张图片
如果一切都正确完成,需要登录files到sftpuser. 继续使用put、get和ls命令上传、下载或列出文件。

温馨提示:

  • 安全第一:始终保持系统和软件更新。定期更新 OpenSSH 服务器以受益于最新的安全补丁。
  • 备份:在更改任何配置文件之前,进行备份是一个好习惯。
  • 用户管理:虽然我们仅创建了一个用户进行演示,但你可以创建更多用户并将其添加到组中sftp_users以向他们提供访问权限。

常见故障排除技巧

参考这篇文章:如何在Ubuntu上创建安全的SFTP服务?

扩展阅读:
【Nginx如何配置一个静态WEB服务?】
【Linux命令大全 摆脱死记Linux命令的烦恼】
【如何限制Linux系统服务器上传文件的大小?】
【如何在Linux中轻松删除源安装的软件包?】

你可能感兴趣的:(服务器,ubuntu,云服务器,linux)