在一台服务器上需要让某用户能上传文件,但是又不能让他ssh登录上去。实在不想再把ftp的服务启起来,只有在ssh的配置上想办法。
具体操作如下:
为了稳妥起见,最好先把telnet服务打开,在修改完成后,在关闭该服务。
1、升级openssh到4.8以上
不要因为CentOS是新版本,就认为openssh版本合适了。
需要重新编译、安装。
注意,如果是覆盖了原系统的ssh,可能会报错,说/etc/ssh/...文件已经存在。我是直接删除了/etc/ssh下面的所有文件。
2、修改配置文件/etc/ssh/sshd_config
我需要限制的用户名是myftpuser,在文件的末尾添加了一下几句话,之后,用service sshd restart
Match User myftpuser
ChrootDirectory /www/myftpuser
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3、建相关目录。
myftpuser用户要上传的目录设在/www/myftpuser,这个目录需要属于root.root。
然后执行命令,设置myftpuser用户登录后就到该目录。
usermod -d /www/myftpuser myftpuser
这样,配置就完成了,myftpuser用户sftp登录的时候,就直接到/www/myftpuser目录了。但是登录上去他什么都做不了,你只需要在/www/myftpuser下再建立一个目录mypic,然后将mypic的owner设为myftpuser,即可。
再用ssh登录试试,已经登不上了。