1、检查版本
ssh –V
要求openssh的版本为 4.8p1 +
如果版本低于4.8p1 则需升级openssh
2、创建用户
创建一个登录sftp站点的用户
useradd testuser –s /bin/false
passwd testuser
3、编辑配置文件/etc/ssh/sshd_config
找到Subsystem这个配置项,将其修改为
Subsystem sftp internal-sftp
然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹
Match Group sftpusers
ChrootDirectory %h #也可以统一到一个目录下!如: /opt/sftp
ForceCommand internal-sftp
#sftpusers组内的用户 只能在自己的家目录下,家目录的权限是755 root:x(文件的属组可以是其他的) %h为用户家目录
#当新加用户或新加其他的规则时,需重复这三行
#当然也可以只对单用户限定
#Match user bank
#ChrootDirectory /opt/sftp
#ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
#解释:
#禁止TCP转发
#禁止X11转发
#这两条最好为no
4、创建站点目录
sftp站点目录的权限很严苛!!!
以/opt/sftp为例
chown –R root:bank /opt
chmod –R 755 /opt
如果这样的话用户登录后在根(登录)目录下是没有写权限的,需要管理员在该目录下新建一个目录,这个目录是没有严格的界限的!如下
mkdir /opt/sftp/upload
chmod 777 /opt/sftp/upload/
注意:如果限定登录用户在自己的家目录内,也需要服从此规则,否则限定不生效,或出现如下错误
Couldn’t read packet: Connection reset by peer
5、重启sshd,测试登录
service sshd restart
sftp -oport=xx testuser@x.x.x.x
默认端口为22
如果端口变更,可通过oport指定
需要注意:
只有符合限定规则的用户才受限定,反之不受,而且所有有密码的用户都可以登录,所以,需要合理管理系统上的用户!
密码用户可登陆!
限定的目录及其父目录的属主一定是root!!!权限一定是755!!!
子目录不限定!