Linux如何限制指定账户不能SSH只能SFTP在指定目录

原创
ithorizon 7个月前 (10-17) 阅读数 33 #Linux

Linux怎样约束指定账户不能SSH只能SFTP在指定目录

在Linux系统中,为了节约稳固性,我们常常需要对用户账户进行约束,比如只允许使用SFTP进行文件传输,而不允许使用SSH进行远程登录。下面将详细介绍怎样在Linux系统中实现这一需求。

### 1. 创建指定账户

首先,我们需要创建一个指定的用户账户,用于后续的配置。

bash

sudo useradd -m -d /home/sftpuser sftpuser

这条命令会创建一个名为`sftpuser`的用户,并为其设置家目录`/home/sftpuser`。

### 2. 设置密码

为该账户设置一个密码,确保账户的稳固性。

bash

sudo passwd sftpuser

按照提示输入两次密码,完成密码设置。

### 3. 配置SSH无密码登录

为了方便使用SFTP,我们需要配置SSH无密码登录。

1. 生成SSH密钥对:

bash

ssh-keygen -t rsa -b 2048

2. 将公钥复制到用户家目录的`authorized_keys`文件中:

bash

ssh-copy-id -i ~/.ssh/id_rsa.pub sftpuser@主机IP

3. 修改SSH配置文件,允许无密码登录:

bash

sudo nano /etc/ssh/sshd_config

找到以下配置行,并取消注释:

bash

PermitRootLogin no

PasswordAuthentication no

4. 重启SSH服务:

bash

sudo systemctl restart sshd

### 4. 配置SFTP权限

为了约束用户只能通过SFTP访问指定目录,我们需要修改SFTP配置文件。

1. 修改SFTP配置文件:

bash

sudo nano /etc/ssh/sftp_config

2. 添加以下配置:

bash

# 允许SFTP访问

Subsystem sftp internal-sftp

# 设置SFTP权限

Match User sftpuser

ChrootDirectory /home/sftpuser

X11Forwarding no

AllowTcpForwarding no

EmptyPassword no

ForceCommand internal-sftp

这条配置将用户`sftpuser`的SFTP访问权限约束在`/home/sftpuser`目录下,并禁用了X11和TCP转发。

### 5. 配置防火墙

为了确保稳固性,我们需要在防火墙中允许SFTP端口(默认为22)的访问。

1. 修改防火墙配置文件:

bash

sudo nano /etc/firewalld/zones/public.xml

2. 添加以下配置:

xml

3. 重启防火墙:

bash

sudo systemctl restart firewalld

### 6. 测试SFTP访问

在客户端,使用SFTP客户端工具(如FileZilla)连接到服务器,并使用`sftpuser`账户登录。如果配置正确,你应该只能访问到`/home/sftpuser`目录,无法访问其他目录。

### 总结

通过以上步骤,我们顺利约束了指定账户只能通过SFTP访问指定目录,节约了系统的稳固性。在实际应用中,可以结合具体需求调整配置,以约为最佳效果。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门