SFTP安装总结

1 修改/etc/ssh/sshd_config

$ vim /etc/ssh/sshd_config

注释#Subsystem sftp /usr/libexec/openssh/sftp-server,下面加入一行
Subsystem sftp internal-sftp

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp # 指定使用sftp服务使用系统自带的internal-sftp

文件末尾添加

Match Group sftpusers           # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
X11Forwarding no                # 禁止用户使用端口转发
AllowTcpForwarding no           # 禁止用户使用端口转发 
ChrootDirectory /home/sftp/%u   # 限制用户的根目录
ForceCommand internal-sftp      # 只能用于sftp登录

2 重启SSH服务

$ systemctl restart sshd

3 添加用户组

$ groupadd sftpusers

4 建立目录

$ mkdir -p /home/sftp
$ mkdir -p /u01/scripts

5 编写建立sftp用户脚本

$ cd /u01/scripts
$ vim sftpuseradd.sh

输入以下内容后:wq保存

#! /bin/bash
useradd -g sftpusers -d /home/sftp/$1 $1
chown root:sftpusers /home/sftp/$1
chmod 755 /home/sftp/$1
mkdir -p /home/sftp/$1/SEND_HOME
chmod 777 /home/sftp/$1/SEND_HOME
echo $2 | passwd --stdin $1

增加执行权限

$ chmod 755 sftpuseradd.sh

执行脚本添加sftp用户,第一个参数用户名,第二个参数密码

$ sh sftpuseradd.sh sftpuser1 111111

6.目录权限

用户的根目录的权限设定有两个要点:
目录开始一直往上到系统根目录为止的目录拥有者都只能是root
目录开始一直往上到系统根目录为止都不可以具有群组写入权限。
上述方法开启的SFTP,用户登录后,在/SEND_HOME下有读写权限,/目录写入权限,不是很合理。
/etc/ssh/sshd_config 做如下调整:

ChrootDirectory /home/sftp

sftpuseradd.sh做如下调整

#! /bin/bash
useradd -g sftpusers -d /home/sftp/$1 $1
chown $1:sftpusers /home/sftp/$1
chmod 700 /home/sftp/$1
echo $2 | passwd --stdin $1

此配置在用户登录后,会显示出所有用户的文件夹,但只能进入本用户的目录,其他文件夹无权限进入。

7.报错记录

使用命令连接sftp:

sftp -P port uname@ip

报错信息如下:

packet_write_wait: Connection to xx.xx.xx.xx port 22: Broken pipe

根据第6点权限的要求,从/home路径开始排查权限,由于/home被集成商挂载到nas上时修改了权限为777,而sftp不允许有群组写入权限,将/home权限改为755后问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值