站长资源服务器

Linux(CentOS)上配置 SFTP服务器

整理:jimmy2024/10/7浏览2
简介相比传统的 ftp 服务,SFTP 显得更加方便、安全,一般系统安装了 ssh 后,默认就安装了这个服务,我们只要简单的配置一下就可以了。但是 SFTP 账号是基于 SSH 账号的(也就是系统账户),默认情况下访问服务器的权限很大,下面的教程就是教你像 ftp 那样限制 SFTP 账号相关的访问权

相比传统的 ftp 服务,SFTP 显得更加方便、安全,一般系统安装了 ssh 后,默认就安装了这个服务,我们只要简单的配置一下就可以了。

但是 SFTP 账号是基于 SSH 账号的(也就是系统账户),默认情况下访问服务器的权限很大,下面的教程就是教你像 ftp 那样限制 SFTP 账号相关的访问权限。

必要条件:

你的 openssh-server 版本至少得 4.8p1, 因为配置权限需要版本添加的新配置项 ChrootDirectory 来完成。

如何查看自己服务器上的ssh版本?尝试以下命令

$ ssh -V

具体实施步骤

我们需要创建一个用户组,专门用于sftp用户

$ groupadd sftpusers

我们创建一个用户test

$ useradd -s /bin/false -G sftpusers test

注意这里我们将test用户的shell设置为/bin/false使他没有登陆shell的权限

编辑 /etc/ssh/sshd_config

找到Subsystem这个配置项,将其修改为

Subsystem sftp internal-sftp

为什么实用 internal-sftp 而不用默认的 sftp-server,这是因为:

这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;

更好的性能,不用为 sftp 再开一个进程。

然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹

# 匹配用户组,如果要匹配多个组,多个组之间用逗号分割
Match Group sftpusers

# 指定登陆用户到自己的用户目录
ChrootDirectory %h

# 指定 sftp 命令
ForceCommand internal-sftp

# 这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no
AllowTcpForwarding no

保存并关闭文件

修改test用户home文件夹的权限,让其属于root用户

chown root ~test

重启sshd服务

$ service sshd restart
# 或
$ systemctl restart sshd

测试用户账号

$ ssh test@localhost

连接会被拒绝或者无法登陆

$ sftp tesst@localhost

登陆后你会发现你的账号无法切换到除自己home目录之外的地方的

常见问题:

如果你链接服务器的时候出现下面的提示:

> Write failed: Broken pipe   
> Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

  • 目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。
  • 目录开始一直往上到系统根目录为止都不可以具有群组写入权限

配置sublime text3 的 sftp 插件

实用 st3 的包工具搜索安装 sftp,具体可以参加下面的文章:

sublime text3 安装、配置sftp插件

"upload_on_save": true,
"sync_down_on_open": true,

"host": "xxx.com",
"user": "xxx",
"password": "xxx",
"port": "22",

"remote_path": "/xxx/xxx",

sftp 的 remote_path 和 ftp 不同,ftp 值得是远程能看到的目录和子目录,sftp 指的是远程服务器上的目录路径如 /home/html。

设置 upload_on_save 为 true,将在你保存的时候自动上传到服务器。

设置 sync_down_on_open 为 true,将在你打开本地文件编辑的时候,自动下载远程文件来更新本地。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。