阿里云CentOS 7配置sftp并禁止登录ssh

背景

之前写过一篇关于centos 7 配置 ftps 的文章,地址在 https://www.92ez.com/?action=show&id=23450 ,银行大大的需求说改就改,ftps配置完测试完成就该需求了,要求我方配置sftp给他们,我甚至都怀疑是当时他们打字打错了,sftp打成了ftps,当时我还再三确认是不是写错了,对方回答没问题就是ftps,现在又改成sftp….算了,不纠结这个问题,毕竟银行才是大佬,他们说啥就是啥。今天就配置一下sftp。

需求

对方的需求是需要一个sftp服务器用于下载我方上传的报表文件,其他的没有什么要求。对于我方来说这个需求也是很简单,配置一个sftp的账号限制一下目录并且禁止登录ssh即可。

配置

在Linux下面需要对目录进行限制,防止用户跳出目录越权到其他不应该进入的路径就需要使用chroot,并不是所有的系统都支持chroot, openssh 4.8p1以后的版本才会有chroot功能,显然CentOS 7 的openssh版本肯定是满足条件的。使用如下命令查看openssh的版本

$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

确定openssh版本满足条件后继续配置。

建立sftp用户的目录

sudo mkdir banksftp

创建组和用户

sudo groupadd sftp && sudo sudo useradd -g sftp -s /bin/false banksftpuser

修改sftp账号的密码

sudo passwd banksftpuser

输入密码后指定sftp用户banksftpuser的home目录

sudo usermod -d /data/sftp/banksftp banksftpuser

修改ssh的配置文件

找到如下这行,并注释掉

Subsystem      sftp    /usr/libexec/openssh/sftp-server  

添加如下几行

Subsystem       sftp    internal-sftp  
Match User banksftpuser #匹配用户   
ChrootDirectory /data/sftp/banksftp # 限制用户目录  
ForceCommand    internal-sftp  
AllowTcpForwarding no  
X11Forwarding no 

设置目录权限

sudo chown root:sftp /data/sftp/banksftp && sudo chmod 755 /data/sftp/banksftp

重启ssh服务后测试是否能够正常登录。

然而,报错了…

Connection to 119.*.*.* closed by remote host.
Couldn't read packet: Connection reset by peer

查看ssh登录日志发现如下

Aug 29 12:06:16 myvps systemd-logind: New session 6 of user banksftpuser.
Aug 29 12:06:16 myvps systemd: Started Session 6 of user banksftpuser.
Aug 29 12:06:16 myvps systemd: Starting Session 6 of user banksftpuser.
Aug 29 12:06:16 myvps systemd-logind: Removed session 6.
Aug 29 12:06:16 myvps systemd: Removed slice user-1004.slice.
Aug 29 12:06:16 myvps systemd: Stopping user-1004.slice.

看起来似乎没有问题,经过各种谷歌终于解决,其实问题就是出在目录的归属上,chroot限制的目录的所有上级都必须归属root:root,而我当前的目录的上级是user:user所以死活不行,修改成root:root后成功登录。

banksftpuser@119.*.*.*'s password: 
Connected to 119.*.*.*.
sftp> 

测试使用ssh 登录看是否禁止登录

~$ ssh banksftpuser@119.*.*.*
banksftpuser@119.*.*.*'s password: 
Could not chdir to home directory /data/sftp/banksftp: No such file or directory
This service allows sftp connections only.
Connection to 119.*.*.* closed.
标签:SSHCentos 发布于:2019-11-09 16:46:48