[b]限制sftp用户([color=red]必须是操作系统用户[/color])的访问权限[/b]
不设置ChrootDirectory,通过设置文件、文件夹的权限来限制户sftp用户、用户组:[url=http://www.esscotti.com/resources/articles/41-general/106-setting-up-a-user-with-restricted-sftp-access]Setting up a user with restricted SFTP access[/url]
1,查看当前ssh版本,如果版本过低,使用yum install openssh来重新安装或者yum update openssh来更新到最新的ssh版本
ssh -V
OpenSSH_5.3p1,OpenSSL 1.0.0-fips 29 Mars 2010
2,备份配置文件:/etc/ssh/sshd_config
cp sshd_config sshd_config.bak
3,添加sftp用户、组、用户主目录
mkdir /sftp #sftp 用户home主目录的根地址(属主和属组都是root,权限775)
groupadd sftpgroup1
useradd -g sftpgroup1 -d /sftp/dir1 -s [color=blue]/lib/xx/sftp-server[/color] sftpuser1 #sftp用户(每个sftp用户有自己特定的组,特定的home目录,并且shell指定到sftp-server)
passwd sftpuser1
#在相应的用户home目录/sftp/dir1下增加子目录upload(读写、上传用)和public(只读、下载用):
cd /sftp/dir1
mkdir /sftp/dir1/upload
mkdir /sftp/dir1/public
chmod 770 /sftp/dir1/upload
chmod 750 /sftp/dir1/public
rmdir xxx #删除目录
chmod 750 /sftp/dir1
chown –R root:sftpgroup1 /sftp/dir1
4,修改配置文件:/etc/ssh/sshd_config ([color=red]关键字大小写不敏感,值大小写敏感[/color])
Match group sftpgroup1 #定义属于这个组的用户才能登录,多个组之间用逗号分隔
ChrootDirectory /sftp #该目录必须有XX5权限,且属主为root
X11Forwarding no
AllowTcpForwarding no
[color=blue]ForceCommand /lib/xx/sftp-server[/color] #保存退出
5,重启sshd守护进程
service sshd restart
sftp work@ip
chroot后,如果用putty登录的话,会提示错误:Could not chdir to home directory /sftp/dir1: Permission denied
chroot(Change Root):就是改变程式执行时所参考的根目录位置。
参考:[url=http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny]Chrooted SSH/SFTP Tutorial (Debian Lenny) [/url]
[b]问题1:[/b] ssh任何用户都可以登录,而[color=red]sftp只能用root登录[/color]。winscp提示错误:Connection has been unexpectedly closed. Server sent command exit status 1. Cannot initialize SFTP protocol. Is the host running a SFTP server?
解决: sftp的用户必须是操作系统用户,在CentOS中需要将用户的shell指向sftp-server后,才能使用该用户登录sftp服务器。
find / -name *sftp*
usermod -s /lib/xx/sftp-server sftpuser1
或者手动修改配置文件 vim /etc/passwd 中sftp用户的shell