centos下sftp连接配置
2018-01-18 09:20
281 查看
运营有异地传输文件的需求,但如果通过QQ等即时通讯软件,不利于文件的集中管理,不方便。而我们办公室的内网机器无法提供外网访问方法,且传输的内容不合适放到公共的网盘或者是云存储上,所以只能用线上负载较低的服务器来承担此项任务。
从技术角度来分析,几个要求
1、ftp不安全,只能使用sftp
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
3、服务器磁盘有限,需要对用户磁盘进行配额
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户在自己的home目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我这里是CentOS 6,自带的openssh已经是5.3p1,足够了。
可以
ssh -V
来查看openssh的版本,如果低于4.8p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
groupadd sftp
2、创建一个测试用户,名为testuser
view plainprint?useradd -g sftp -s /bin/false testuser
passwd testuser
3、sftp组的用户的home目录统一指定到/opt/sftp下,按用户名区分,这里先新建一个testuser目录(1,2,3步),然后指定testuser的home为/opt/sftp/testuser(第四步)
mkdir /opt/sftp
cd /opt/sftp
mkdir testuser
usermod -d /opt/sftp/testuser testuser
4、配置sshd_config
编辑 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
找到如下这行,并注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /opt/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
解释一下添加的几行的意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
也可以匹配用户
Match User testuser
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
ChrootDirectory /opt/sftp/%u
用chroot将用户的根目录指定到/opt/sftp/%u,%u代表用户名,这样用户就只能在/opt/sftp/%u下活动,chroot的含义,可以参加这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定Chroot目录权限
chown root:sftp /opt/sftp/testuser
chmod 755 /opt/sftp/testuser
错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX” 的内容
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1、我们将/opt/sftp/testuser的所有者设置为了root,所有组设置为sftp
2、我们讲/opt/sftp/testuser的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,testuser已经可以登录,但使用chroot指定根目录后,根是无法写入的,所以要新建一个目录供testuser上传文件。这个目录所有者为testuser,所有组为sftp,所有者有写入权限,而所有组无写入权限
mkdir /opt/sftp/testuser/upload
chown uplus:sftp /opt/sftp/testuser/upload
chmod 755 /opt/sftp/testuser/upload
7、重启sshd服务
service sshd restart
到这里,testuser已经可以通过sftp客户端登录并可以上传文件到upload目录。
从技术角度来分析,几个要求
1、ftp不安全,只能使用sftp
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
3、服务器磁盘有限,需要对用户磁盘进行配额
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户在自己的home目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我这里是CentOS 6,自带的openssh已经是5.3p1,足够了。
可以
ssh -V
来查看openssh的版本,如果低于4.8p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
groupadd sftp
2、创建一个测试用户,名为testuser
view plainprint?useradd -g sftp -s /bin/false testuser
passwd testuser
3、sftp组的用户的home目录统一指定到/opt/sftp下,按用户名区分,这里先新建一个testuser目录(1,2,3步),然后指定testuser的home为/opt/sftp/testuser(第四步)
mkdir /opt/sftp
cd /opt/sftp
mkdir testuser
usermod -d /opt/sftp/testuser testuser
4、配置sshd_config
编辑 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
找到如下这行,并注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /opt/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
解释一下添加的几行的意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
也可以匹配用户
Match User testuser
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
ChrootDirectory /opt/sftp/%u
用chroot将用户的根目录指定到/opt/sftp/%u,%u代表用户名,这样用户就只能在/opt/sftp/%u下活动,chroot的含义,可以参加这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定Chroot目录权限
chown root:sftp /opt/sftp/testuser
chmod 755 /opt/sftp/testuser
错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX” 的内容
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1、我们将/opt/sftp/testuser的所有者设置为了root,所有组设置为sftp
2、我们讲/opt/sftp/testuser的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,testuser已经可以登录,但使用chroot指定根目录后,根是无法写入的,所以要新建一个目录供testuser上传文件。这个目录所有者为testuser,所有组为sftp,所有者有写入权限,而所有组无写入权限
mkdir /opt/sftp/testuser/upload
chown uplus:sftp /opt/sftp/testuser/upload
chmod 755 /opt/sftp/testuser/upload
7、重启sshd服务
service sshd restart
到这里,testuser已经可以通过sftp客户端登录并可以上传文件到upload目录。
相关文章推荐
- centos下sftp连接配置
- 配置虚拟机中的centos连接外网(自己无数次亲测有效)
- centos 安装glassfish4.0 配置jdbc连接mysql
- MongoDB 3.4.2 配置 CentOS 6.5 远程连接
- 虚拟机中的CentOS 7设置固定IP连接最理想的配置
- Centos6下SSH免密码连接配置
- Centos5.5配置VNC服务及客户端连接后输入法切换问题 推荐
- centos 版本阿里云上配置svn服务器,eclipse连接的时候提示:由于目标计算机积极拒绝,无法连接
- Centos在Vmware中,做Net网络后的联网问题(自动获取可以联网,配置静态IP不可以连接)
- EditPlusFTP连接SFTP配置
- 关于lunix系统下的centos7 系统配置SecureCRT时网络ip配置连接不上
- 虚拟机及Centos安装、Xshell配置与虚拟机连接
- CentOS下配置SFTP操作日志
- CentOS 7下安装配置MySQL5.7,并且开启远程连接
- centos下配置sftp且限制用户访问目录
- CentOS中SSH远程连接配置
- 配置xmanager5连接虚拟机中的linux(基于centos5.5 32位)
- CentOS 7 minimal配置网络连接及net-tools安装
- centos安装MySQL,配置及连接