Linux部署SFTP服务

Linux - 建设篇


系列文章回顾

第一章 Linux部署NFS服务



下章内容

第三章 Linux部署KMS服务


Linux虚拟机安装SSH服务

SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务
本次使用liunx自带的internal-sftp


创建ftp所属组的用户,设置密码,创建用户家目录

### useradd添加用户
### -M 不创建用户家目录; -d 指定用户家目录;  -g 指定用户的所属组;  -c 给用户添加备注
useradd -M -d /data/backup001/ -g ftp -c Allow_SFTP_Users backup001
passwd backup001			# 设置用户的密码

mkdir -p /data/backup001/	# useradd 使用 -M 参数不会创建用户家目录,此例子将自建用户家目录并设置chown和chmod

使用ssh免密登录时,用户家目录的所属组权限如下

chown backup001:ftp /data/backup001/		# 将目录的所属组改为用户和用户所属组

# 查看用户信息
id backup001
uid=1001(backup001) gid=50(ftp) groups=50(ftp)


修改sshd服务的配置文件,配置ssh密钥登录实现免密

vim /etc/ssh/sshd_config

...
# override default of no subsystems
Subsystem       sftp    internal-sftp -l INFO -f local5
LogLevel INFO

# Example of overriding settings on a per-user basis
Match User backup001
        ChrootDirectory /data/backup001/		# 设置用户根目录
        PermitTunnel no							# 禁止tunnel隧道转发
        AllowAgentForwarding no					# 取消ssh客户端转发
        AllowTcpForwarding no					# 取消tcp的端口转发
        X11Forwarding no						# 取消X11协议转发,X11通常是传输Linux的GUI界面
        PermitTTY no							# 禁止用户登录tty终端
        ForceCommand internal-sftp				# 指定sftp命令,强制执行内部sftp,并忽略任何 ~/.ssh/rc文件中的命令
### 重启sshd服务
systemctl restart sshd		# 重启sshd服务
systemctl status sshd		# 查看sshd服务运行状态

配置sshd的免密登录

mkdir -p /data/backup001/.ssh		# 创建ssh服务连接的目录
ssh-keygen -t rsa -b 2048 -m pem -f /data/backup001/.ssh/rsa2048pem -N '' -C 'backup001@server'
touch authorized_keys
tail /data/backup001/.ssh/rsa2048pem >> authorized_keys	# 存储ssh密钥的文件,自行添加sftp用户的pub公钥内容到该文件


chmod 705 /data/backup001/.ssh		# 访问者不会携带Linux的任何用户权限,会被判定成other用户权限,所以要给other用户添加(读取和执行)权限。此例不给group属组任何权限,此sftp用户不允许属组其他用户套权限登录sftp,但允许属组用户访问此sftp目录
chmod 600 /data/backup001/.ssh/authorized_keys				# ssh密钥文件只有所有者有读取写入权限
chown backup001:ftp /data/backup001/.ssh/authorized_keys	# 修改ssh授权认证文件的属主

使用sftp服务及sftp免密登录时,用户家目录的所属组权限如下

chown root:root /data/backup001/		# 将目录的所属组改为root, 目录的所有者和属组必须是root

配置sftp用户可上传的目录及权限

### /data/backup001/ 目录的所有者和属组必须是root,而且权限只能是默认的755,否则导致sftp用户免密登录失败
mkdir -p /data/backup001/backup				# 新建一个目录,用于存放sftp传输的文件
chown backup001:ftp /data/backup001/backup	# 将目录的所有者和属组修改成sftp用户可访问,目录权限默认是755(若没有改过umask配置)

安全加固:修改ssh端口,ssh监听指定IP,ssh禁止密码登录仅允许密钥登录,root只能密钥登录

vim /etc/ssh/sshd_config

...
Port 2222							# ssh端口2222
ListenAddress 10.0.0.1				# ssh监听10.0.0.1
PermitRootLogin without-password	# root禁用密码登录,配合 PubkeyAuthentication yes 就是仅允许密钥登录root
PubkeyAuthentication yes			# 启用ssh密钥登录
AuthorizedKeysFile      .ssh/authorized_keys	# ssh密钥认证文件路径
PasswordAuthentication no			# ssh禁用密码登录
ChallengeResponseAuthentication no	# 取消挑战(询问)应答机制,即禁止给ssh用户交换公钥
RSAAuthentication yes				# 启用RSA密钥认证

测试验证

# ssh免密登录
ssh -i backup001 backup001@x.x.x.x -p 22

# scp免密传输文件
scp -i backup001 -P 22 file01 backup001@x.x.x.x:/tmp/

# sftp免密登录
sftp -i backup001 -P 22 backup001@x.x.x.x

(截图略)



参考来源

  1. Linux服务器下搭建SFTP服务
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歪果仨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值