(1)创建组和用户
$ groupadd sftp
$ useradd -g sftp -s /bin/false aswsftp
$ passwd aswsftp
$ mkdir -p /data/sftp/aswsftp -pv
$ usermod -d /data/sftp/aswsftp aswsftp
(2)配置 ssh
$ vim /etc/ssh/sshd_config
# 修改 ssh 端口为 8022
Port 8022
# 这一行注释掉,默认是没有注释的
# Subsystem sftp /usr/libexec/openssh/sftp-server
# 添加以下内容到末尾
# 定义了一个子系统,名称为 sftp,它使用 internal-sftp 模式。这意味着当用户通过 SFTP 连接到服务器时,将使用 OpenSSH 自带的一个简化版本的 SFTP 服务程序。
Subsystem sftp internal-sftp
# 指定了接下来的配置项只对属于 sftp 组的用户生效
Match Group sftp
# 当 SFTP 用户登录后,他们的工作目录会被限制到 /data/sftp/ 目录加上用户的主目录(%u 是一个占位符,代表用户名)
ChrootDirectory /data/sftp/%u
# 强制所有匹配该规则的用户在登录时执行 internal-sftp 命令。即使用户尝试执行其他命令,也会被忽略,而只会启动 SFTP 会话。
ForceCommand internal-sftp
# 这两行配置禁止了 TCP 端口转发和 X11 转发功能。TCP 端口转发允许用户通过 SSH 隧道来转发本地端口到远程主机的服务;X11 转发则允许远程显示图形界面的应用程序。关闭这些功能有助于提高安全性,防止滥用。
AllowTcpForwarding no
X11Forwarding no
(3)创建用户使用的目录
// 修改用户家目录权限
$ chown root:sftp /data/sftp/aswsftp
$ chmod 755 /data/sftp/aswsftp
// 创建上传目录
$ mkdir /data/sftp/aswsftp/upload
$ chown aswsftp:sftp /data/sftp/aswsftp/upload
$ chmod 755 /data/sftp/aswsftp/upload
(4)重启 sshd 服务
systemctl restart sshd.service
(5)测试
$ sftp -P 8022 aswsftp@172.31.149.1
sftp> ls
upload
sftp> cd upload/
sftp> mkdir test
sftp> rmdir test
sftp> quit
(6)注意
使用阿里云 ECS:
- sshd_config 配置中,开启用户名密码登录
- ECS 安全组中放行 8022 端口
- 有可能您需要公网IP
作者:jackzang 创建时间:2024-10-31 10:30
最后编辑:jackzang 更新时间:2024-10-31 11:08
最后编辑:jackzang 更新时间:2024-10-31 11:08