linux下禁止某一用户使用ssh登陆但可使用sftp登陆

  1. 首先修改sshd的配置文件:
在root用户下
输入:vi /etc/ssh/sshd_config
#该行(上面这行)注释掉
#Subsystem sftp /usr/lib/openssh/sftp-server

# 添加以下几行
Subsystem sftp internal-sftp 
Match group sftp
#Match user test
#匹配sftp组,如为单个用户可用:Match user 用户名;  设置此用户登陆时的shell设为/bin/false,这样它就不能用ssh只能用sftp
ChrootDirectory /home/test
#指定用户被锁定到的那个目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
  1. 添加用户组和用户

#添加用户组
groupadd sftp

#添加用户
useradd -d /home/test -m -s /bin/false -g sftp test

#修改密码
passwd test

  1. 重启SSH服务

service sshd restart

或者

/etc/init.d/ssh reload

  1. 测试ssh
[root@localhost etc]# ssh test@172.19.194.30
test@172.19.194.30's password: 
Write failed: Broken pipe

登陆失败,提示Write failed: Broken pipe错误

  1. 再测试sftp
[root@localhost etc]# sftp test@172.19.194.30
test@172.19.194.30's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

同样提示Write failed: Broken pipe

  1. 按理说此方法应该是靠谱的为什么会提示失败呢,通过查找发现是目录权限配置导致的:

https://my.oschina.net/davehe/blog/100280

目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

修改/home/test 目录权限为755

chmod 755 /home/test -R

  1. 再次测试
[root@localhost etc]# ssh test@172.19.194.30
test@172.19.194.30's password: 
Could not chdir to home directory /home/test: No such file or directory
This service allows sftp connections only.
Connection to 172.19.194.30 closed.

和预期一致:ssh尝试连接失败。

[root@localhost etc]# sftp test@172.19.194.30
test@172.19.194.30's password: 
Connected to 172.19.194.30.
sftp> ls
a                a.log            authorized_keys  mysql.sh         
sftp>

sftp测试连接成功!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux SFTP服务器是一个安全文件传输协议(SFTP)服务器,用于在Linux操作系统上安全地传输文件。SFTP是一种通过SSH(Secure Shell)协议进行加密的文件传输协议,可以在网络上安全地传输文件。 要设置Linux SFTP服务器,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了OpenSSH软件包。如果没有安装,请使用适用于您的Linux发行版的包管理器进行安装。 2. 打开终端,编辑OpenSSH服务器配置文件。在大多数Linux发行版上,配置文件位于/etc/ssh/sshd_config。 3. 在配置文件中找到并确保以下行未被注释掉: ``` Subsystem sftp /usr/lib/openssh/sftp-server ``` 如果没有找到这一行或被注释掉了,请将其取消注释或添加到文件中。 4. 保存并关闭配置文件。 5. 重启OpenSSH服务器以使更改生效。您可以使用以下命令来重启: ``` sudo service ssh restart ``` 6. 创建SFTP用户。您可以使用以下命令创建一个新的系统用户,并限制其只能使用SFTP: ``` sudo adduser sftp_user sudo usermod -s /usr/lib/openssh/sftp-server sftp_user sudo usermod -d /path/to/sftp_directory sftp_user ``` 将"sftp_user"替换为您要创建的用户名,并将"/path/to/sftp_directory"替换为希望用户访问的目录路径。 7. 设置访问权限。确保SFTP目录的权限只允许SFTP用户访问,并禁止其他用户访问。 ``` sudo chown root:root /path/to/sftp_directory sudo chmod 700 /path/to/sftp_directory ``` 8. 现在,您的Linux SFTP服务器已经设置好了。您可以使用任何支持SFTP的客户端连接到服务器,并进行安全的文件传输。 请注意,这只是设置基本的Linux SFTP服务器的步骤。根据您的需求和安全要求,您可能需要进一步配置和调整服务器设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不懂程序员的Bug

打赏点吧, 不容易啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值