不将 PermitRootLogin改为 no,如何修改设置以禁止root以外其他已建立的用户如hn4301、hn4302、hn4303通过ssh访问功能,只能通过sftp访问
时间: 2024-12-08 09:23:50 浏览: 33
如果您想要限制除root用户外的其他已建立用户仅通过SFTP访问,并保持`PermitRootLogin`为默认的允许模式(即`yes`),您可以采取以下步骤:
1. **编辑SSH配置文件**:
打开SSH服务的配置文件,通常位于 `/etc/ssh/sshd_config`(在Linux系统上)或 `%ProgramData%\sshd\sshd_config`(Windows系统,对于Git Bash可能是`$XDG_CONFIG_HOME/ssh/sshd_config`)。使用文本编辑器打开这个文件。
2. **禁用PasswordAuthentication**:
在文件中找到 `PasswordAuthentication` 配置行,将其注释掉(添加 `#` 前缀),以防止基于密码的登录。例如:
```
#PasswordAuthentication yes
PasswordAuthentication no
```
3. **启用Public Key Authentication**:
如果您希望仅支持公钥认证,可以在同一行或下面添加:
```
PubkeyAuthentication yes
```
4. **创建并分发SSH密钥对**:
对于每个需要SFTP访问的用户(hn4301, hn4302, hn4303),指导他们生成SSH密钥对,并将公钥添加到 `/home/hn4301/.ssh/authorized_keys` (或相应用户的目录)。确保权限设置正确,只有用户本人才能读取该文件。
5. **只允许特定用户通过.ssh/authorized_keys登录**:
确保配置文件中包含类似这样的行,指定允许哪些用户名通过公钥登录:
```
Match User hn4301
ChrootDirectory %h
ForceCommand internal-sftp
```
类似地,为hn4302和hn4303添加相应的`Match`指令。`ChrootDirectory`用于限制用户只能在其主目录下操作,`ForceCommand internal-sftp`强制使用内部SFTP服务器。
6. **重启SSH服务**:
修改完配置后,记得重启SSH服务让更改生效:
```
service ssh restart # Linux
net start sshd # Windows PowerShell
```
完成上述步骤后,除了root用户,hn4301、hn4302和hn4303将只能通过SFTP访问,并且他们的SSH密码登录会被阻止。
阅读全文