UOS1060e分离ssh与sftp服务

文章目录

原理

SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作。

通过新建另一个'sshd'进程,作为sftp服务的deamon,完成服务分离。

一、sftp 用户与目录

步骤一、创建sftp 用户

用户创建示例如下(以下为创建 sftpuser1 示例):

powershell 复制代码
# groupadd sftpgrp
# useradd -s /sbin/nologin -G sftpgrp sftpuser1
# passwd sftpuser1
Changing password for user sftpuser1.
New password:1qaz@WSX                                              #输入密码
Retype new password:1qaz@WSX                                   #确认密码

步骤二、创建 sftpuser1 用户目录

powershell 复制代码
# mkdir /sftp/sftpuser1 -p
# chown root:root /sftp
# chown root:root /sftp/sftpuser1
# chmod 755 /sftp
# chmod 755 /sftp/sftpuser1

二、ssh 和 sftp 服务分离

ssh 和 sftp 都有单独的服务,并且 ssh 监听 22 号端口,sftp 监听 10001 端

生成 sftp_config 文件

powershell 复制代码
# cp -p /etc/ssh/sshd_config /etc/ssh/sftpd_config

编辑/etc/ssh/sftpd_config,修改 sftp 的监听端口和 pid 文件等

powershell 复制代码
开启如下两个配置
Port 10001
PidFile /var/run/sftp.pid
修改如下配置
#Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f AUTH
Subsystem sftp internal-sftp -l INFO -f AUTH
文件尾增加如下配置
AllowGroups sftpgrp
Match Group sftpgr
             ChrootDirectory /sftp/%u
              AllowTcpForwarding no
             ForceCommand internal-sftp
             X11Forwarding no

编辑/etc/ssh/sshd_config,修改 sftp 的监听端口和 pid 文件

powershell 复制代码
vi /etc/ssh/sshd_config
增加一行内容
DenyGroups sftpgrp

拷贝 sshd 服务的 systemd unit file

powershell 复制代码
cp -p /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service

修改/etc/systemd/system/sftpd.service 文件配置

powershell 复制代码
[Unit]
Description=OpenSSH sftp server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=***.target ***.target auditd.service sshd.service
Wants=***.target
[Service]
Type=simple
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sftpd_config $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=***.target

生成认证配置文件

powershell 复制代码
cp -p /etc/pam.d/sshd /etc/pam.d/sftpd

三、启动与停止

powershell 复制代码
#  systemctl restart sshd.service
#  systemctl restart sftpd.service

四、验证

验证:使用 sftpuser1 用户的通过 sftp 登陆系统

查看当前目录,当前空间大小

本地登陆

远程登陆

从ftp服务器下载文件到本地

将本地目录上传到ftp服务器

这个是ftp服务器

其他验证方式就是windows环境来验证,前提是本地需要开放端口,理论上来说是可用的。

相关推荐
Z21-X1 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘3 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
蜗牛一步步往上爬3 小时前
第六章 BMC常用的调试工具
服务器
小李不困还能学4 小时前
VSCode_RemoteSSH_一直卡在下载服务器_解决教程
服务器·ide·vscode
瑞雪兆丰年兮4 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
那明眸似水4 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
小南家的青蛙5 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻15 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
星恒随风1 天前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio1 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型