sshd给指定用户,指定目录开通sftp,并禁止ssh登陆方式

示例:给网站账号 www创建sftp登录,chroot网站目录中,并禁止ssh登录方法: 1,创建www账号,指定www的“家目录”为网站根目录 ,指定 -s为/sbin/nologin 。 命令如下:useradd www -d /webdat...

【前言】

在某些情况下,允许指定用户可以传输文件到linux系统中,但是不允许使用SSH,要实现这一目的我们可以使用SFTP,并构建chroot环境.一般只要服务器开启了SSH服务默认就可以使用SFTP服务,只要设置一下权限即可,比如将用户限制到某个目录下.


示例:给网站账号jundax创建sftp登录,chroot 账号自己的目录中 并禁止ssh登录方法:

步骤如下:

1,创建一个sftp组。

命令如下:groupadd sftp 

2,创建sftp根目录,所有用户的目录都放在这个根目录下。

命令如下: mkdir -p /storage/sftp

3,创建一个用户 用户目录放到 /storage/sftp 下

命令如下: useradd jundax -s /sbin/nologin -g sftp -d /storage/sftp/jundax  -m

-s 指定用户的shell, -g指定用户加入的组, -d 指定用户的家目录 -m 指明要创建家目录的文件夹  -M 正好相反,为不创建家目录

4,更改用户家目录权限【如果chroot的目录用户属主不是root,用户是登录不了的】

命令如下: chown root:sftp  jundax   


5,设置 jundax 密码为 123456

命令如下:echo jundax:123456 | chpasswd  #非交互式设置密码

也可以使用下面等同命令:  echo '123456'| passwd --stdin jundax

6,编辑 /etc/ssh/sshd_config文件,在文件最后增加如下内容:

内容如下

vim /etc/ssh/sshd_config  


Subsystem       sftp     internal-sftp

Match Group sftp      #匹配sftp 的用户

# Example of overriding settings on a per-user basis

ChrootDirectory  /storage/sftp/%u      #这里%u 代表用户家目录,比如jundax,jundax1,jundax2 三个用户,登录后家目录chroot

ForceCommand internal-sftp  #通过man  sshd-config 可以具体看其解释

X11Forwarding no 

AllowTcpForwarding no


保存后,然后 systemctl restart sshd


7,这样用户登录后,用户登录进来的目录为 /  ,并且不能cd 到上级目录,但是不能向里面传输任何文件,

都会提示permission denied 

可以在里面新建一个upload 目录 然后 chown  属主和组为 jundax:sftp

命令如下:

mkdir -p /storage/sftp/jundax/upload

chown jundax:sftp /storage/sftp/jundax/upload


然后使用 jundax 密码:123456登录看看,/ 目录下传文件被拒绝,切换到upload 目录可以正常传文件和目录




  • 发表于 2019-12-23 09:58
  • 阅读 ( 61 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章