由于工作需要,要建立一个用户隔离模式的SFTP. 查阅了很多资料,发现似乎只有Linux下的SSH可以免费实现.
当然,server-u肯定没问题,不过那个是收费软件.
由于对linux了解很少,所以遇到了不少问题. 不过也非常感谢网上很多朋友分享的内容.
希望和我一样外行的人至少会使用putty和winscp这样可以方便不少
首先安装CentOS,我用的是6.2 x64版本.
装好后网络是被禁用的不知道为什么,
修改一下/etc/sysconfig/network-scripts/ifcfg-eth0就好了,
ONBOOT="yes"
然后service network restart
然后检查ssh版本,要实现用户隔离模式的SFTP需要高版本的SSH,
ssh -v
系统自带的版本比较低.据说要5.8以上版本,这里我安装的是6.1P1
openssh-6.1p1.tar.gz
用yum命令安装必要的一些组件,以安装ssh
并且事先用winscp将openssh-6.1p1.tar.gz上传到/usr/local目录下
yum install gcc* make* openssl-devel
service sshd stop
cd /usr/local
tar –vxzf openssh-6.1p1.tar.gz
cd openssh-6.1p1
./configure --prefix=/usr --sysconfdir=/etc/ssh
make
make install
会提示有一些不支持的地方,没关系,注释掉就可以了,
再来检查一下ssh的版本
ssh -v
安装了新的SSH之后似乎会自动开启selinux,我来关掉他
vi /etc/selinux/config
SELINUX=disabled
然后重启
reboot
修改/etc/ssh/sshd_config以支持用户隔离模式的SFTP
使得最后部分内容如下
#Subsystem sftp /usr/libexec/openssh/sftp-server
# Example of overriding settings
on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server
Subsystem sftp internal-sftp
Match Group chroot
ChrootDirectory /chroot/%u
ForceCommand internal-sftp
这样只要是chroot组中的用户就会被SFTP隔离到对应的目录下,
记得重启动SSH服务
service SSH restart
然后使用以下命令来创建用户
cd /
mkdir chroot
groupadd chroot
useradd -d /chroot/user1 -g
chroot -s /bin/false user1
chown root
/chroot/user1
chmod 750
/chroot/user1
cd /chroot/user1
mkdir upload
chmod a+w upload -R
upload
最后设置用户密码
passwd user1
这样用户就不能用SSH登录系统,但是可以使用SFTP,并且被隔离在自己的目录下,看不到其他用户的数据.
在upload目录下可以上传和删除文件.