本文将基于 Linux 系统,搭建基于 open-ssh-sftp-server
的 sftp 服务器。
Step 1. 安装依赖包
对于 Ubuntu 系统而言:
1sudo apt-get install openssh-client openssh-server openssh-sftp-server
对于 CentOS 系统而言:
1sudo yum install openssh-client openssh-server openssh-sftp-server
Step 2. 添加 sftp 用户
首先创建用户组:
1groupadd sftp
之后创建用户(并限制其不可登录):
1sudo useradd -g sftp -s /sbin/nologin -M sftp_user
修改此新建用户的密码:
1sudo passwd sftp_user
Step 3. 创建 sftp 的目录
首先我们在 home
下创建文件夹:
1cd /home/
2sudo mkdir sftp
更改权限:
1sudo chown root:sftp sftp/
2sudo chmod 755 sftp/
创建 sftp_user 可读写的目录:
1cd sftp/
2sudo mkdir shared
3sudo chown sftp_user:sftp shared/
注意:这里的权限设定必须十分严格,必须要求
sftp/
目录的权限属于root:sftp
且为 755,并且shared/
的所属为sftp_user:sftp
才能够正常使用。
Step 4. 修改 ssh 配置文件
修改文件:
1sudo vim /etc/ssh/sshd_config
修改 Subsystem
所在行:
1#Subsystem sftp /usr/libexec/openssh/sftp-server
2Subsystem sftp internal-sftp
在文件末尾添加匹配用户 sftp_user
的规则:
1Match User sftp_user
2 X11Forwarding no
3 AllowTcpForwarding no
4 ForceCommand internal-sftp
5 ChrootDirectory /home/sftp
要注意 ChrootDirectory 的目录,不要设置错了
Step 5. 重启 sshd 服务
重启服务:
1sudo service sshd restart
ALL DONE
可用本地 sftp 连接验证是否搭建成功:
1sftp sftp_user@127.0.0.1
P.S. 对于某些 CentOS 系统
按照上述配置完成后,某些 CentOS 系统虽然可以执行 sftp 连接,但是 sftp 连接后 ls 等指令没有权限,此时需要多执行下面两条指令:
1setsebool -P ssh_chroot_rw_homedirs on
2restorecon -R /home/sftp
参考连接
版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。
Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.