[关闭]
@big-bear 2018-01-10T07:44:05.000000Z 字数 1063 阅读 2676

linux限制用户只能sftp不能ssh访问

linux


参考链接
1.创建限制用户组

  1. groupadd sftpusers

2.创建没有ssh权限的用户

  1. useradd -s /usr/sbin/nologin -G sftpusers ftpuser
  1. usermod -s /usr/sbin/nologin ftpuser
  2. usermod -g sftpusers ftpuser

3.修改/etc/ssh/sshd_config文件
需要注释掉Subsystem,UsePAM ,并添加以上代码:

  1. #Subsystem sftp /usr/lib/openssh/sftp-server
  2. #UsePAM yes
  3. Subsystem sftp internal-sftp
  4. Match Group sftpusers
  5. ChrootDirectory %h

ChrootDirectory 则为允许访问的sftp目录(sftp登录后的默认目录)
%h 是用户主目录,也可以写指定路径;如果只想控制单一用户,可以用以下代替:

  1. #Subsystem sftp /usr/lib/openssh/sftp-server
  2. #UsePAM yes
  3. Subsystem sftp internal-sftp
  4. Match User ftpuser
  5. ChrootDirectory &h
  6. #ChrootDirectory /home/ftpuser

保存,并重启ssh

  1. /bin/systemctl restart sshd.service

4、修改目录权限
必须满足以下条件:
ChrootDirectory设置的目录权限及上级,属主和属组必须是root
ChrootDirectory设置的目录权限及上级,只有属主能拥有写权限,最大只能是755

  1. sudo chown root:root /home/ftpuser
  2. sudo chmod 755 /home/ftpuser

之后可以在/home/ftpuser下建立拥有全部权限的文件夹,进行sftp操作

  1. sudo mkdir /home/ftpuser/upload
  2. sudo chmod 777 /home/ftpuser/upload

限制制定网段的ssh访问

参考地址
1.屏蔽所有ssh访问
修改 /etc/hosts.deny
配置如下:

  1. sshd : ALL

2.开放指定网段的ssh访问
修改/etc/hosts.allow
配置如下:
例如开放192.168和10网段

  1. sshd:192.168,10.:allow
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注